https://help.aliyun.com/knowledge_detail/5973700.html?spm=5176.2020520104.0.0.Hsg0h9
一、概述與軟件說明
1.1、概述
RDS MySQL 使用開源軟件 percona-Xtrabackup 對 MySQL 數據庫進行備份。需要下載該軟件,然后使用該軟件進行恢復。
1.2、軟件說明
解壓軟件
RDS的備份文件是一個壓縮包,需要先解壓出來,才能恢復,這里下載解壓工具 rds_backup_extract (sh文件),目前只支持64位linux系統。
軟件使用方式 sh rds_backup_extract -f backup.tar.gz/back.xb.gz -C directory
-f 參數后面跟要解壓的備份集文件
-C 參數后面跟要解壓到的目錄,-C 參數是可選的,如果不指定就解壓到當前目錄,如 sh rds_backup_extract -f backup.tar.gz
注:需要通過 bash 來執行 rds_backup_extract 腳本文件。
恢復軟件
恢復軟件請下載官方的 Percona-XtraBackup【下載地址:https://www.percona.com/downloads/XtraBackup/】,官方提供各種平台的安裝包,請根據自己的需要下載。RDS 備份使用的版本是 2.2.9,建議您下載 2.2.9 或更新的版本使用。想要了解工具原理的可以參考官方文檔。
安裝percona-Xtrabackup
下載軟件https://www.percona.com/downloads/XtraBackup/
rpm -ivh percona-xtrabackup-24-2.4.5-1.el7.x86_64.rpm –nodeps
注意:檢查 vim /etc/my.cnf 如圖確保存在[client] 及指定目錄 socket=/var/lib/mysql/mysql.sock
二、恢復數據
2.1、管理控制台中下載備份文件
在RDS控制台中的備份與恢復->備份列表,選擇一個備份文件進行下載,如下圖
下載文件成功后,將備份文件上傳至linux系統,上傳成功后在Linux系統上檢測,如下圖:
2.2、解壓備份文件
解壓備份文件前,要先下載好解壓工具 rds_backup_extract
解壓備份文件
執行命令:sh rds_backup_extract.sh -f /home/mysql/backup/hins575175_xtra_20150429091224.tar.gz -C /home/mysql/data 如下圖:
查詢解壓后生成的文件,其中藍色字體的目錄文件為備份生成時RDS存在的數據庫
2.3、恢復數據文件
解壓備份文件前,要先安裝好 [Percona-XtraBackup]
( http://www.percona.com/downloads/XtraBackup/) 工具。
innobackupex --defaults-file=/home/mysql/data/backup-my.cnf --apply-log /home/mysql/data
這一步最后如果看到類似如下輸出,顯示 completed OK,表示執行成功:
2.4、配置文件修改
由於存在的版本問題,請將解壓文件backup-my.cnf中的innodb_fast_checksum,innodb_page_size ,innodb_log_block_size 注釋掉,如下圖:
2.5、修改文件屬主
執行chown -R mysql:mysql /home/mysql/data ,並檢查文件所屬為mysql用戶
2.6、啟動mysqld進程並且登錄驗證
啟動mysqld進程,並驗證啟動成功
mysqld_safe --defaults-file=/home/mysql/data/backup-my.cnf --user=mysql --datadir=/home/mysql/data &
客戶端登錄mysql驗證
注意:
1、恢復完成后,mysql.user中是不包含rds中的用戶的;需要新建;
2、新建用戶前請執行如下sql:
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;
即可.
三、其他問題
因為軟件限制,目前恢復只支持Linux下進行。Linux下恢復的數據文件,無論Windows、Linux下,MySQL都可以正常使用.
GRANT ALL PRIVILEGES ON *.* TO 'mysql'@'%'IDENTIFIED BY '123456' WITH GRANT OPTION;
FLUSH PRIVILEGES;