1028阿裏RDS如何恢復雲數據庫MySQL的備份文件到自建數據庫
參照 https://help.aliyun.com/knowledge_detail/41817.html
恢復雲數據庫MySQL的備份文件到自建數據庫
更新時間:2017-07-27 14:52:13
雲數據庫MySQL版使用開源軟件Percona Xtrabackup對數據庫進行備份,所以您可以使用該軟件將雲數據庫MySQL的備份文件恢復到自建數據庫中,本文將介紹詳細的操作步驟。
關於雲數據庫MySQL版如何備份數據,請參見備份RDS數據。
前提條件
-
本地MySQL數據庫安裝在64位的Linux系統中,且與雲數據庫MySQL版的版本相同。
說明:由於軟件限制,目前只支持將雲數據庫MySQL的備份文件恢復到安裝在Linux系統中的自建MySQL數據庫中。但在Linux下恢復的數據文件,可以在Windows和Linux操作系統中正常使用。
-
操作系統中已安裝數據恢復工具Percona XtraBackup 2.2.9或以上版本。若未安裝,請從Percona XtraBackup官網下載,安裝指導請參見官方文檔。
-
操作系統中已安裝數據備份文件解壓工具rds_backup_extract.sh。若未安裝,請點擊下載。
操作步驟
-
獲取數據備份文件下載地址,具體操作步驟如下。
-
登錄RDS管理控制臺。
-
選擇目標實例所在地域。
-
單擊目標實例的ID,進入基本信息頁面。
-
在左側導航欄中,選擇備份恢復,進入備份恢復頁面。
-
選擇數據備份標簽頁。
-
選擇查詢的時間範圍,然後單擊查詢。
-
在數據備份列表中,找到要下載的數據備份,並單擊其對應的下載
-
在實例備份文件下載窗口,單擊復制外網地址,獲取數據備份文件外網下載地址,如下圖所示。
-
-
下載數據備份文件,具體操作步驟如下。
-
登錄雲服務器ECS。
-
執行如下命令,下載數據備份文件。
wget -c ‘<數據備份文件外網下載地址>‘ -O <自定義文件名>.tar.gz
參數說明:
-
-c:啟用斷點續傳模式。
-
-O:將下載的結果保存為指定的文件(建議使用URL中包含的文件名)。
說明:若提示顯示100%進度,則表示文件下載完成。
-
-
將下載的數據備份恢復到本地MySQL數據庫中,具體操作步驟如下。
-
執行如下命令,解壓已下載的數據備份文件。
bash rds_backup_extract.sh -f <數據備份文件名>.tar.gz -C /home/mysql/data
參數說明:
-
-f:指定要解壓的備份集文件。
-
-C:指定文件要解壓到的目錄。可選參數,若不指定就解壓到當前目錄。
-
執行如下命令,查詢解壓後生成的文件。
ls -l /home/mysql/data
命令執行成功後,系統會返回如下結果,其中藍色字體為生成備份文件時RDS實例所包含的數據庫。
-
執行如下命令,恢復解壓好的備份文件。
innobackupex --defaults-file=/home/mysql/data/backup-my.cnf --apply-log /home/mysql/data
若系統返回如下類似結果,則說明備份文件已成功恢復到本地數據庫。
-
-
為避免版本問題,需修改backup-my.cnf參數,具體操作步驟如下。
-
執行如下命令,以文本方式編輯backup-my.cnf文件。
vi /home/mysql/data/backup-my.cnf
-
執行如下命令,註釋掉如下參數。
#innodb_fast_checksum
#innodb_page_size
#innodb_log_block_size
-
按Esc鍵,然後輸入
:wq
進行保存並關閉編輯器。
-
-
執行如下命令,修改文件屬主,並確定文件所屬為MySQL用戶。
chown -R mysql:mysql /home/mysql/data
-
執行如下命令,啟動MySQL進程。
mysqld_safe --defaults-file=/home/mysql/data/backup-my.cnf --user=mysql --datadir=/home/mysql/data &
-
執行如下命令,登錄MySQL數據庫以驗證進程啟動成功。
mysql -uroot
若系統返回如下結果,進程啟動成功,則說明已成功執行參數註釋和修改文件屬主。
-
恢復完成後,表mysql.user中不包含在RDS實例中創建的用戶,需要新建。在新建用戶前,執行如下命令。
delete from mysql.db where user<>’root’ and char_length(user)>0;delete from mysql.tables_priv where user<>’root’ and char_length(user)>0;flush privileges;
1028阿裏RDS如何恢復雲數據庫MySQL的備份文件到自建數據庫