您可以使用RDS MySQL的備份下載功能,將云盤實例的快照備份數據轉換成CSV文件或SQL文件導出,然后通過該文件將數據恢復到自建MySQL數據庫中。
前提條件
RDS實例需滿足以下條件:
MySQL數據庫版本:8.0、5.7(支持Serverless實例)
存儲類型:ESSD云盤、通用云盤
說明您可以前往實例基本信息頁面查看以上信息。
RDS實例未開啟TDE加密。實例中若存在加密過的表,會導致恢復過程出錯,請先對已加密的表執行解密操作。
請確保自建MySQL數據庫已開啟
local_infile
參數。說明查看local_infile參數狀態(ON表示已開啟):
SHOW GLOBAL VARIABLES LIKE 'local_infile';
開啟local_infile參數:
SET GLOBAL local_infile=1;
功能限制
從下載的備份集恢復到本地MySQL數據庫時,需要注意以下限制:
不支持以下二進制字段類型:BIT、BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB。
說明如果備份集中包含這些字段類型,它們將會以十六進制格式進行存儲。在導入時,MySQL會將二進制字段當作字符串進行處理。此種情況下,需要手動在
load data local infile
命令中使用UNHEX函數將十六進制格式轉換為原始的二進制串。不支持以下空間字段類型:GEOMETRY、POINT、LINESTRING、POLYGON、MULTIPOINT、MULTILINESTRING、MULTIPOLYGON、GEOMETRYCOLLECTION。
注意事項
建議RDS MySQL數據庫和自建MySQL數據庫版本保持一致。不同版本的數據庫間可能存在不兼容的特性,導致恢復失敗。
在執行恢復命令前,請確保目標數據庫中不存在與備份數據中同名的數據庫和表,以防止數據沖突或數據丟失。請仔細檢查并刪除可能會產生沖突的同名數據庫和表。
在進行恢復任務時,如果您因為某些原因中斷了恢復任務,可能會導致恢復數據不完整或恢復失敗,請謹慎操作。
操作步驟
本示例以RDS MySQL云盤實例的SQL文件恢復至ECS實例(CentOS 7.8 64位)的自建MySQL數據庫為例,其他環境請使用對應命令。
登錄RDS控制臺,使用下載備份功能將云盤實例的備份文件轉換成CSV文件或SQL文件,并下載到本地或ECS實例中。
在本地或ECS實例中解壓下載的備份文件,命令如下:
tar -izxvf <壓縮包文件名>.tar.gz -C <解壓縮后的文件位置>
本示例將名為
backup.tar.gz
的壓縮文件解壓縮到指定目錄/home/mysql/data
中,具體請以實際文件名和目錄為準。tar -izxvf backup.tar.gz -C /home/mysql/data
(可選)查看備份文件是否已解壓到指定位置(/home/mysql/data)。
ls -al /home/mysql/data
將MySQL Python腳本文件下載至本地或ECS實例中。
對Python腳本文件
restore_from_downloads.py
進行授權,命令如下:chmod +x ./restore_from_downloads.py
將CSV文件或SQL文件恢復至自建數據庫,恢復命令如下:
python ./restore_from_downloads.py <CSV文件或SQL文件目錄路徑> <數據庫主機> <數據庫端口> <數據庫賬號> <數據庫密碼>
示例如下:
python ./restore_from_downloads.py /home/mysql/data 127.0.0.1 3306 root "#Tes********"
執行結果:
重要請確保自建數據庫中沒有和備份數據中同名的數據庫,否則會導致恢復失敗。
如果數據庫賬號名或密碼中包含了特殊字符(例如:#、空格等),在命令行傳入參數時需要使用英文雙引號("")將密碼括起來。例如,如果數據庫密碼是
#1234
,則需要在命令行中傳入"#1234"
。如果出現類似
Command 'python' not found
的報錯,說明系統中沒有安裝Python或者Python命令不在系統的搜索路徑中。此時請確認您系統中安裝的Python版本以及執行Python的命令是否正確。例如,如果系統中安裝了Python3,可以使用python3 ./restore_from_downloads.py /home/mysql/data/test1.sql 127.0.0.1 3306 zhtxxxxx "#txxxxx"
。
相關文檔
本方案僅適用于云盤版實例的快照備份恢復。如果您需要恢復本地盤實例的備份,請參見RDS MySQL物理備份文件恢復到自建數據庫或RDS MySQL邏輯備份文件恢復到自建數據庫。
阿里云提供的遷移服務也可幫助您將RDS MySQL遷移至自建MySQL數據庫。更多詳情,請參見從RDS MySQL遷移至自建MySQL。
更多數據恢復方案,請參見數據恢復方案概覽。