RDS MySQL備份文件按時間點恢復到自建數(shù)據(jù)庫
您可以參考本文示例,在本地或ECS實例的自建MySQL數(shù)據(jù)庫上進行RDS MySQL的增量恢復,以恢復到指定的時間點。
本方案適用于增量級別的恢復,實例級別的恢復方案,請參見RDS MySQL物理備份文件恢復到自建數(shù)據(jù)庫或RDS MySQL邏輯備份文件恢復到自建數(shù)據(jù)庫。
更多數(shù)據(jù)恢復方案,請參見數(shù)據(jù)恢復方案概覽。
注意事項
本文僅提供本地增量恢復的步驟說明,您需要自行配置和搭建自建環(huán)境。實際操作時,請根據(jù)您自己的環(huán)境進行具體的配置和命令調整。
在本地或ECS實例上恢復RDS MySQL備份數(shù)據(jù)操作是否成功,取決于您本地MySQL環(huán)境的配置。
在進行恢復操作前,請確保您的本地環(huán)境的MySQL版本大于等于RDS MySQL版本要求。例如,RDS MySQL 5.6要求本地環(huán)境版本大于MySQL 5.6.16,RDS MySQL 5.5要求本地環(huán)境版本大于MySQL 5.5.18。
說明MySQL 5.5和5.6是不同的版本,不能在本地使用MySQL 5.6版本對RDS MySQL 5.5進行恢復。
增量恢復
本文以tar.gz格式的MySQL 5.6.20社區(qū)版為示例。
準備工作,創(chuàng)建并授權可以遠程登錄本地自建MySQL的用戶。
在本地自建MySQL上創(chuàng)建一個可以遠程登錄的用戶,并賦予該用戶相應的操作權限。權限設置的詳細操作,請參見權限設置。
執(zhí)行以下命令,查看由XtraBackup工具生成的備份文件中的Binlog位置信息,確定開始增量恢復的起始位置。
cat xtrabackup_binlog_info
說明xtrabackup_binlog_info文件目錄請以實際環(huán)境為準,可以使用
find
命令查看。系統(tǒng)顯示類似如下:
mysql-bin.000688 531167 66ef5f51-94f3-11e5-98cf-40a8f034c4d0:1-405320, 72fb7cf6-94f3-11e5-98cf-a0d3c1f98c98:1-3082798, 79f98899-5d2d-11e4-a7c9-ecf4bbc08418:1-365786, 7e88493e-5d2d-11e4-a7c9-ecf4bbc06cb8:1, a9285f36-9d56-11e4-8a2c-d89d672a9530:1-29549875, ac2d9725-9d56-11e4-8a2c-d89d672af420:1-4838217
說明mysql-bin.000688為應用的起始Binlog文件,531167為開始位置點(start position)。
從RDS控制臺獲取與備份文件所在實例編號一致的Binlog日志文件,執(zhí)行以下命令下載備份文件:
wget -c "日志備份下載鏈接" -O <日志文件名>
以
mysql-bin.000688
和mysql-bin.000689
文件為例,示例如下:wget -c "http://rdslog-hz-v3-3az.oss-cn-hangzhou.aliyuncs.com/custins71349641/hostins26******/mysql-bin.000688?Expires=16951*******" -O mysql-bin.000688
說明日志備份文件下載鏈接獲取方法,請參見下載備份。
通過mysqlbinlog命令分析文件內容,確定增量恢復到的時間點。
mysqlbinlog -v --base64-output=decode-rows mysql-bin.0006XX > 689.log
執(zhí)行以下命令,查看689.log文件,確認想要恢復的時間點。
vi 689.log
執(zhí)行以下命令,執(zhí)行增量恢復,恢復到指定的時間點。
mysqlbinlog binlog_file1 binlog_file2 ... binlog_filen --start-position=xxxx --stop-datetime="YY-mm-dd hh:mm:ss" | mysql -uuser -p<$Password> -P<$Port> -h<$Host_IP>
示例如下:
mysqlbinlog mysql-bin.000688 mysql-bin.000689 --start-position=531167 --stop-datetime="16-05-16 18:05:03" | mysql -uuser -p<$Password> -P<$Port> -h<$Host_IP>
參數(shù)解釋如下:
參數(shù)
含義
binlog_file1 binlog_file2 ... binlog_filen
用于指定要恢復的Binlog文件,可以根據(jù)需要指定多個文件。請將
binlog_file1 binlog_file2 ... binlog_filen
替換為實際的Binlog文件名稱。--start-position=xxxx
用于指定開始恢復的Binlog位置點,該位置點應存在于指定的第一個Binlog文件中。請將
xxxx
替換為實際的位置點。--stop-position=xxxx
用于指定恢復到的Binlog位置點,該位置點應該存在于最后一個指定的Binlog文件中。請將
xxxx
替換為實際的位置點。--stop-datetime="YYYY-MM-DD HH:MM:SS"
用于指定開始恢復的時間點,即從第一個等于或大于該時間點的Binlog事件開始恢復。時間點以本地時間時區(qū)為準,格式為MySQL可接受的時間格式,例如:"2016-05-16 08:01:05" 或 "16-05-16 08:01:05"。請將
"YYYY-MM-DD HH:MM:SS"
替換為實際的時間點。--stop-datetime="YYYY-MM-DD HH:MM:SS"
用于指定停止恢復的時間點,即在第一個等于或大于該時間點的Binlog事件停止恢復。時間點以本地時間時區(qū)為準,格式為MySQL可接受的時間格式,例如:"2016-05-16 08:01:05" 或 "16-05-16 08:01:05"。
請將
"YYYY-MM-DD HH:MM:SS"
替換為實際的時間點。-p<$Password>
用于指定MySQL密碼,請將
<$Password>
替換為實際的密碼,且-p
參數(shù)和<$Password>
間不要有空格。-P<$Port>
用于指定MySQL端口號,請將
<$Port>
替換為實際的端口號。-h<$Host_IP>
用于指定MySQL主機IP,請將
<$Host_IP>
替換為實際的主機IP。說明您可以按需選擇使用
--start-position
和--stop-position
來指定位置點,或使用--start-datetime
和--stop-datetime
來指定時間點,來確定需要恢復的Binlog事件的范圍。
常見問題
如果您是MySQL 5.7或8.0版本進行增量備份出現(xiàn)以下報錯時,說明MySQL服務器拒絕了訪問,當前用戶沒有足夠的權限。您需要自行使用skip-grant-tables
參數(shù)關閉MySQL的認證,然后進行授權。
ERROR 1227 (42000) at line 7: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
適用于
云數(shù)據(jù)庫RDS MySQL版