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ù)庫中,本文將介紹詳細的操作步驟。
說明
- 通過邏輯備份文件恢復(fù)到自建數(shù)據(jù)庫請參見RDS MySQL邏輯備份文件恢復(fù)到自建數(shù)據(jù)庫。
- 關(guān)于云數(shù)據(jù)庫MySQL版如何備份數(shù)據(jù),請參見備份RDS數(shù)據(jù)。
- 由于Percona Xtrabackup不支持Windows,Windows系統(tǒng)下的備份恢復(fù)請參見使用mysqldump遷移MySQL數(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ù)操作步驟
登錄RDS管理控制臺。
在頁面左上角,選擇實例所在地域。
找到目標(biāo)實例,單擊實例ID。
在左側(cè)導(dǎo)航欄中單擊備份恢復(fù)。
選擇數(shù)據(jù)備份標(biāo)簽頁。
選擇查詢的時間范圍,然后單擊查詢。
-
在數(shù)據(jù)備份列表中,找到要下載的數(shù)據(jù)備份,并單擊其右側(cè)的下載。
說明 如果沒有下載按鈕,請確認您的實例版本是否支持下載物理備份文件。
-
在實例備份文件下載窗口,單擊復(fù)制外網(wǎng)地址旁的
,獲取數(shù)據(jù)備份文件外網(wǎng)下載地址。 登錄云服務(wù)器ECS。
執(zhí)行如下命令,下載數(shù)據(jù)備份文件。
wget -c '<數(shù)據(jù)備份文件外網(wǎng)下載地址>' -O <自定義文件名>
說明
* -c:啟用斷點續(xù)傳模式。
* -O:將下載的結(jié)果保存為指定的文件(使用URL中包含的文件名后綴 .tar.gz 、.xb.gz 或 _qp.xb)。
- 執(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)前目錄。
- 執(zhí)行如下命令,查詢解壓后生成的文件。
ls -l /home/mysql/data
命令執(zhí)行成功后,系統(tǒng)會返回如下結(jié)果,其中藍色字體為生成備份文件時RDS實例所包含的數(shù)據(jù)庫。
- 執(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ù)庫。
說明 請確保您的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。
- 為避免版本問題,需修改backup-my.cnf參數(shù),具體操作步驟如下。
- 執(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`并回車進行保存。
- 執(zhí)行如下命令,修改文件屬主,并確定文件所屬為MySQL用戶。
chown -R mysql:mysql /home/mysql/data
- 執(zhí)行如下命令,啟動MySQL進程。
mysqld_safe --defaults-file=/home/mysql/data/backup-my.cnf --user=mysql --datadir=/home/mysql/data &
說明 建議您參考官方文檔重置root賬戶的密碼。
- 執(zhí)行如下命令,登錄MySQL數(shù)據(jù)庫以驗證進程啟動成功。
mysql -uroot -p<數(shù)據(jù)庫密碼>
若系統(tǒng)返回如下結(jié)果,進程啟動成功,則說明已成功執(zhí)行參數(shù)注釋和修改文件屬主。
常見問題
-
除了下載備份文件恢復(fù)之外,還有其他方法可以將實例的數(shù)據(jù)快速恢復(fù)到自建數(shù)據(jù)庫嗎?
您可以使用DTS將RDS MySQL遷移至自建MySQL。
-
為什么下載數(shù)據(jù)備份文件會報錯?
使用
wget -c '<數(shù)據(jù)備份文件外網(wǎng)下載地址>' -O <自定義文件名>.tar.gz
命令下載時用2個英文單引號(')將下載地址包含起來,便于程序識別具體的地址,防止出錯。
-
下載的備份文件解壓縮報錯怎么辦?
- 確認您下載的文件是否為物理備份文件。
- 壓縮文件保存的名稱后綴是否正確(使用URL中包含的文件名后綴 .tar.gz 、.xb.gz 或 _qp.xb)。
- 針對不同格式的壓縮文件,使用正確的解壓命令。詳情請參見本文操作步驟第11步。
-
基礎(chǔ)版實例的備份怎么恢復(fù)或遷移呢?
基礎(chǔ)版實例僅支持快照備份,您可以使用以下方法:
- 使用mysqldump遷移MySQL數(shù)據(jù)
- 用DTS將數(shù)據(jù)從RDS導(dǎo)出到本地
-
下載的備份能恢復(fù)到另一個RDS MySQL實例上嗎?
暫不支持此操作。建議您使用DTS遷移RDS實例數(shù)據(jù)到另一個RDS實例上。