RDS MySQL物理備份文件恢復(fù)到自建數(shù)據(jù)庫使用xb文件恢復(fù)mysql數(shù)據(jù)

RDS MySQL物理備份文件恢復(fù)到自建數(shù)據(jù)庫

轉(zhuǎn)載自阿里云https://help.aliyun.com/knowledge_detail/41817.html#concept-41817-zh
開源軟件Percona Xtrabackup可以用于對數(shù)據(jù)庫進行備份恢復(fù),您可以使用該軟件將云數(shù)據(jù)庫MySQL的備份文件恢復(fù)到自建數(shù)據(jù)庫中,本文將介紹詳細的操作步驟。

說明

注意事項

本文使用Linux7的操作系統(tǒng)以及MySQL5.7版本為例進行演示。

  • 操作系統(tǒng)中已安裝數(shù)據(jù)恢復(fù)工具Percona XtraBackup,您可以從Percona XtraBackup官網(wǎng)下載安裝。

    • MySQL 5.6及之前的版本需要安裝 Percona XtraBackup 2.3,安裝指導(dǎo)請參見官方文檔Percona XtraBackup 2.3
    • MySQL 5.7版本需要安裝 Percona XtraBackup 2.4,安裝指導(dǎo)請參見官方文檔Percona XtraBackup 2.4
    • MySQL 8.0版本需要安裝 Percona XtraBackup 8.0,安裝指導(dǎo)請參見官方文檔Percona XtraBackup 8.0
  • 2019年2月20日后創(chuàng)建的MySQL 5.6實例,數(shù)據(jù)備份文件的格式為xbstream文件包(_qp.xb后綴)。

  • 自建MySQL數(shù)據(jù)庫安裝在64位的Linux系統(tǒng)中,且與云數(shù)據(jù)庫MySQL版的版本相同。

    說明 由于軟件限制,目前只支持將云數(shù)據(jù)庫MySQL的備份文件恢復(fù)到安裝在Linux系統(tǒng)中的自建MySQL數(shù)據(jù)庫中。

前提條件

實例版本如下:

  • MySQL 8.0高可用版(本地SSD盤)
  • MySQL 5.7高可用版(本地SSD盤)
  • MySQL 5.6
  • MySQL 5.5

說明 基礎(chǔ)版實例僅提供快照備份,無法下載。您可以參見基礎(chǔ)版實例的備份怎么恢復(fù)或遷移

備份恢復(fù)操作步驟

  1. 登錄RDS管理控制臺

  2. 在頁面左上角,選擇實例所在地域。

  3. 找到目標(biāo)實例,單擊實例ID。

  4. 在左側(cè)導(dǎo)航欄中單擊備份恢復(fù)

  5. 選擇數(shù)據(jù)備份標(biāo)簽頁。

  6. 選擇查詢的時間范圍,然后單擊查詢

  7. 在數(shù)據(jù)備份列表中,找到要下載的數(shù)據(jù)備份,并單擊其右側(cè)的下載

    說明 如果沒有下載按鈕,請確認您的實例版本是否支持下載物理備份文件

  8. 實例備份文件下載窗口,單擊復(fù)制外網(wǎng)地址旁的

    ,獲取數(shù)據(jù)備份文件外網(wǎng)下載地址。
  9. 登錄云服務(wù)器ECS。

  10. 執(zhí)行如下命令,下載數(shù)據(jù)備份文件。

wget -c '<數(shù)據(jù)備份文件外網(wǎng)下載地址>' -O <自定義文件名>

說明

*   -c:啟用斷點續(xù)傳模式。
*   -O:將下載的結(jié)果保存為指定的文件(使用URL中包含的文件名后綴 .tar.gz 、.xb.gz 或 _qp.xb)。
  1. 執(zhí)行如下命令,解壓已下載的數(shù)據(jù)備份文件。

說明

  • 本文以自定義路徑/home/mysql/data為例,您可以根據(jù)實際情況將其替換成實際路徑。

  • innobackupex解壓命令需要安裝qpress,您可以前往QuickLZ網(wǎng)站,下載qpress工具,然后使用如下命令安裝:

    放大查看 復(fù)制代碼 
    
tar xvf qpress-11-linux-x64.tar chmod 775 qpress cp qpress /usr/bin

目前物理備份集文件有3種格式:

*   tar 壓縮包 (.tar.gz 后綴)
*   xbstream 壓縮包 (.xb.gz 后綴)
*   xbstream 文件包(_qp.xb 后綴)

說明 2019年2月20日后創(chuàng)建的MySQL 5.6實例,數(shù)據(jù)備份文件的格式為xbstream文件包(_qp.xb 后綴)。

對于tar 壓縮包 (.tar.gz 后綴),使用命令:

tar -izxvf <數(shù)據(jù)備份文件名>.tar.gz -C /home/mysql/data
對于xbstream 壓縮包 (.xb.gz 后綴),使用命令:
gzip -d -c <數(shù)據(jù)備份文件名>.xb.gz | xbstream -x -v -C /home/mysql/data
對于xbstream 文件包(_qp.xb 后綴),使用命令:

解包

    cat <數(shù)據(jù)備份文件名>_qp.xb | xbstream -x -v -C /home/mysql/data

    ## MySQL 5.6/5.7解壓
    innobackupex --decompress --remove-original /home/mysql/data
    ## MySQL 8.0解壓
    xtrabackup --decompress --remove-original --target-dir=/home/mysql/data

解包報錯解決

線上mysql數(shù)據(jù)庫通過[innobackupex ]工具恢復(fù)時,如工具安裝不完成會發(fā)生各種各樣的報錯。這里簡單說明下depress解壓缺少工具qpress解壓辦法。
默認系統(tǒng)無法yum或apt-get,可以通過下載官網(wǎng)的qpress tar包解壓使用。
解決辦法做如下三步操作即可:

1.  wget http://www.quicklz.com/qpress-11-linux-x64.tar
2.  tar xvf qpress-11-linux-x64.tar
3.  cp qpress /usr/bin

問題解決。
重新再執(zhí)行命令就可以了。

說明 -C:指定文件要解壓到的目錄。可選參數(shù),若不指定就解壓到當(dāng)前目錄。

  1. 執(zhí)行如下命令,查詢解壓后生成的文件。
ls -l /home/mysql/data

命令執(zhí)行成功后,系統(tǒng)會返回如下結(jié)果,其中藍色字體為生成備份文件時RDS實例所包含的數(shù)據(jù)庫。

  1. 執(zhí)行如下命令,恢復(fù)解壓好的備份文件。
## MySQL 5.6/5.7
    innobackupex --defaults-file=/home/mysql/data/backup-my.cnf --apply-log /home/mysql/data

    ## MySQL 8.0
    xtrabackup --prepare --target-dir=/home/mysql/data
    xtrabackup --datadir=/var/lib/mysql --copy-back --target-dir=/home/mysql/data</pre>

若系統(tǒng)返回如下類似結(jié)果,則說明備份文件已成功恢復(fù)到自建數(shù)據(jù)庫。


image.png

說明 請確保您的Percona XtraBackup版本正確:

  • MySQL 5.6及之前的版本需要安裝 Percona XtraBackup 2.3,安裝指導(dǎo)請參見官方文檔Percona XtraBackup 2.3
    • MySQL 5.7版本需要安裝 Percona XtraBackup 2.4,安裝指導(dǎo)請參見官方文檔Percona XtraBackup 2.4
    • MySQL 8.0版本需要安裝 Percona XtraBackup 8.0,安裝指導(dǎo)請參見官方文檔Percona XtraBackup 8.0
  1. 為避免版本問題,需修改backup-my.cnf參數(shù),具體操作步驟如下。
  2. 執(zhí)行如下命令,以文本方式編輯backup-my.cnf文件。
vi /home/mysql/data/backup-my.cnf
2.  自建數(shù)據(jù)庫不支持如下參數(shù),需要注釋掉。
#innodb_log_checksum_algorithm
        #innodb_fast_checksum
        #innodb_log_block_size
        #innodb_doublewrite_file
        #rds_encrypt_data
        #innodb_encrypt_algorithm
        #redo_log_version
        #master_key_id
        #server_uuid
    **說明**
  • 如果自建數(shù)據(jù)庫使用的是MyISAM引擎,和阿里云的InnoDB不兼容,需要多注釋掉如下參數(shù)并增加skip-grant-tables參數(shù):
#innodb_log_checksum_algorithm=strict_crc32 #redo_log_version=1 skip-grant-tables
  • 如果自建數(shù)據(jù)庫使用的是MyIAM引擎,且對系統(tǒng)表進行操作時報錯(存儲引擎相關(guān)),請按如下操作進行存儲引擎的轉(zhuǎn)換:
alter table <表名> engine=myisam;
3.  按**Esc**鍵,然后輸入`:wq`并回車進行保存。
  1. 執(zhí)行如下命令,修改文件屬主,并確定文件所屬為MySQL用戶。
chown -R mysql:mysql /home/mysql/data
  1. 執(zhí)行如下命令,啟動MySQL進程。
mysqld_safe --defaults-file=/home/mysql/data/backup-my.cnf --user=mysql --datadir=/home/mysql/data &

說明 建議您參考官方文檔重置root賬戶的密碼。

  1. 執(zhí)行如下命令,登錄MySQL數(shù)據(jù)庫以驗證進程啟動成功。
mysql -uroot -p<數(shù)據(jù)庫密碼>
若系統(tǒng)返回如下結(jié)果,進程啟動成功,則說明已成功執(zhí)行參數(shù)注釋和修改文件屬主。
image.png

常見問題

  • 除了下載備份文件恢復(fù)之外,還有其他方法可以將實例的數(shù)據(jù)快速恢復(fù)到自建數(shù)據(jù)庫嗎?

    您可以使用DTS將RDS MySQL遷移至自建MySQL

  • 為什么下載數(shù)據(jù)備份文件會報錯?

    使用

wget -c '<數(shù)據(jù)備份文件外網(wǎng)下載地址>' -O <自定義文件名>.tar.gz

命令下載時用2個英文單引號(')將下載地址包含起來,便于程序識別具體的地址,防止出錯。

  • 下載的備份文件解壓縮報錯怎么辦?

    1. 確認您下載的文件是否為物理備份文件。
    2. 壓縮文件保存的名稱后綴是否正確(使用URL中包含的文件名后綴 .tar.gz 、.xb.gz 或 _qp.xb)。
    3. 針對不同格式的壓縮文件,使用正確的解壓命令。詳情請參見本文操作步驟第11步。
  • 基礎(chǔ)版實例的備份怎么恢復(fù)或遷移呢?

    基礎(chǔ)版實例僅支持快照備份,您可以使用以下方法:

  • 下載的備份能恢復(fù)到另一個RDS MySQL實例上嗎?

    暫不支持此操作。建議您使用DTS遷移RDS實例數(shù)據(jù)到另一個RDS實例上。

相關(guān)文檔

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。