雲數據庫MySQL版使用開源軟件Percona Xtrabackup對數據庫進行備份,所以您可以使用該軟件將雲數據庫MySQL的備份文件恢復到自建數據庫中,本文將介紹詳細的操作步驟。
關於雲數據庫MySQL版如何備份數據,請參見備份RDS數據。
前提條件
-
本地MySQL數據庫安裝在64位的Linux系統中,且與雲數據庫MySQL版的版本相同。
說明:由於軟件限制,目前只支持將雲數據庫MySQL的備份文件恢復到安裝在Linux系統中的自建MySQL數據庫中。但在Linux下恢復的數據文件,可以在Windows和Linux操作系統中正常使用。
-
操作系統中已安裝數據恢復工具Percona XtraBackup。MySQL 5.6及之前的版本需要安裝 Percona XtraBackup 2.3。MySQL 5.7版本需要安裝 Percona XtraBackup 2.4。可以從Percona XtraBackup官網下載安裝,安裝指導請參見官方文檔 Percona XtraBackup 2.3、Percona XtraBackup 2.4.
-
操作系統中已安裝數據備份文件解壓工具rds_backup_extract.sh。若未安裝,請點擊下載。
操作步驟
-
獲取數據備份文件下載地址,具體操作步驟如下。
-
登錄RDS管理控制台。
-
選擇目標實例所在地域。
-
單擊目標實例的ID,進入基本信息頁面。
-
在左側導航欄中,選擇備份恢復,進入備份恢復頁面。
-
選擇數據備份標簽頁。
-
選擇查詢的時間范圍,然后單擊查詢。
-
在數據備份列表中,找到要下載的數據備份,並單擊其對應的下載,如下圖所示。
-
在實例備份文件下載窗口,單擊復制外網地址,獲取數據備份文件外網下載地址,如下圖所示。
-
-
下載數據備份文件,具體操作步驟如下。
-
登錄雲服務器ECS。
-
執行如下命令,下載數據備份文件。
wget -c '<數據備份文件外網下載地址>' -O <自定義文件名>.tar.gz
參數說明:
-
-c:啟用斷點續傳模式。
-
-O:將下載的結果保存為指定的文件(建議使用URL中包含的文件名)。
說明:若提示顯示100%進度,則表示文件下載完成。
-
-
將下載的數據備份恢復到本地MySQL數據庫中,具體操作步驟如下。
-
執行如下命令,解壓已下載的數據備份文件。
說明:本文以自定義路徑
/home/mysql/data
為例,您可以根據實際情況將其替換成實際路徑。bash rds_backup_extract.sh -f <數據備份文件名>.tar.gz -C /home/mysql/data (如果數據庫比較大 , 可以在 screen 里執行)
參數說明:
-
-f:指定要解壓的備份集文件。
-
-C:指定文件要解壓到的目錄。可選參數,若不指定就解壓到當前目錄。
-
執行如下命令,查詢解壓后生成的文件。
ls -l /home/mysql/data
命令執行成功后,系統會返回如下結果,其中藍色字體為生成備份文件時RDS實例所包含的數據庫。
-
執行如下命令,恢復解壓好的備份文件。
innobackupex --defaults-file=/home/mysql/data/backup-my.cnf --apply-log /home/mysql/data --use-memory=8G (如果數據比較大, 可以在screen 里執行,設置內存大小加速恢復速度)
若系統返回如下類似結果,則說明備份文件已成功恢復到本地數據庫。
-
-
為避免版本問題,需修改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 us
實際遇到問題:
mysql 啟動不起來 , 更改了 配置文件 # This MySQL options file was generated by innobackupex. # The MySQL server [mysqld] #innodb_checksum_algorithm=innodb #innodb_log_checksum_algorithm=innodb innodb_data_file_path=ibdata1:200M:autoextend innodb_log_files_in_group=2 innodb_log_file_size=1572864000 #innodb_fast_checksum=false #innodb_page_size=16384 #innodb_log_block_size=512 innodb_undo_directory=. innodb_undo_tablespaces=0 #rds_encrypt_data=false #innodb_encrypt_algorithm=aes_128_ecb
mysql -uroot 直接登錄不了 重置root 密碼也不行 用原先rds的高權限賬戶登錄是可以的