RDS MySQL支持全量備份導入功能,可以將對象存儲OSS中的自建MySQL全量備份數(shù)據導入至RDS控制臺,并恢復至新RDS MySQL實例中。
前提條件
自建MySQL數(shù)據庫必須符合上云條件。具體詳情,請參見附錄:使用限制。
已在目標地域創(chuàng)建了OSS Bucket。如未創(chuàng)建,請參見控制臺創(chuàng)建存儲空間。
說明該目標地域必須為您希望創(chuàng)建RDS實例的地域。
上云流程概覽
本文包含如下步驟:
演示環(huán)境說明
本文演示所用的環(huán)境為阿里云ECS實例,鏡像為CentOS Linux release 8.3.2011版本,其他版本請適配相關命令。如何創(chuàng)建ECS實例,請參見創(chuàng)建ECS實例。
步驟一:安裝Percona Xtrabackup
Percona XtraBackup是Percona公司開發(fā)的用于MySQL數(shù)據庫物理熱備的備份工具,支持多種數(shù)據庫引擎。如您使用的是Ubuntu系統(tǒng),請參見附錄1:Ubuntu安裝Xtrabackup。
請根據MySQL數(shù)據庫的版本選擇Xtrabackup的版本。
MySQL 5.7
wget https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.29/binary/redhat/8/x86_64/percona-xtrabackup-24-2.4.29-1.el8.x86_64.rpm
yum localinstall percona-xtrabackup-24-2.4.29-1.el8.x86_64.rpm
MySQL 8.0
wget https://downloads.percona.com/downloads/Percona-XtraBackup-8.0/Percona-XtraBackup-8.0.35-31/binary/redhat/8/x86_64/percona-xtrabackup-80-8.0.35-31.1.el8.x86_64.rpm
yum localinstall percona-xtrabackup-80-8.0.35-31.1.el8.x86_64.rpm
步驟二:安裝MySQL Backup Helper
前提條件
已安裝Golang。如未安裝,請在命令行中執(zhí)行下列命令安裝。
sudo yum install -y go
已安裝unzip。如未安裝,請在命令行中執(zhí)行下列命令安裝。
sudo yum install -y unzip
上述命令僅限CentOS系統(tǒng)使用,如您使用的是Ubuntu系統(tǒng),請參見附錄2:Ubuntu安裝Golang和Unzip。
操作步驟
下載MySQL Backup Helper源碼包。
wget https://github.com/aliyun/mysql-backup-helper/archive/refs/heads/master.zip
說明您可訪問mysql-backup-helper獲取最新版的源碼包。
解壓MySQL Backup Helper源碼包。
unzip master.zip
進入mysql-backup-helper-master文件夾,對main.go文件進行編譯,獲得backup_helper可執(zhí)行文件。
cd mysql-backup-helper-master go build -a -o backup_helper main.go
說明如無法正常完成編譯,請參見附錄4:設置Go代理。
進入oss_stream文件夾,對oss_stream.go文件進行編譯,獲得oss_stream可執(zhí)行文件。
cd oss_stream go build -a -o oss_stream oss_stream.go
說明如無法正常完成編譯,請參見附錄4:設置Go代理。
步驟三:備份自建庫并上云
通過MySQL Backup Helper驗證當前自建MySQL數(shù)據庫是否支持備份。
cd ~/mysql-backup-helper-master && ./backup_helper -host <自建庫主機地址> -port <自建庫端口號> -user <自建庫root賬號> --password <自建庫root密碼>
驗證通過后,全量備份自建庫并將備份文件上傳至阿里云對象存儲OSS。如您未提前創(chuàng)建OSS Bucket,請參見本文前提條件。
請根據MySQL數(shù)據庫的版本選擇命令。
MySQL 5.7
innobackupex --backup --host=<自建庫主機地址> --port=<自建庫端口號> --user=<自建庫root賬號> --password=<自建庫root密碼> --stream=xbstream --compress <備份文件臨時目錄> | ./mysql-backup-helper-master/oss_stream/oss_stream -accessKeyId <阿里云賬號的AccessKey ID> -accessKeySecret <阿里云賬號的AccessKey Secret> -bucketName <OSS Bucket名稱> -endpoint <OSS Bucket的地域節(jié)點> -objectName <自定義備份文件名>
示例:
innobackupex --backup --host=127.0.0.1 --port=3306 --user=root --password=Aa123456@ --stream=xbstream --compress /root/mysql/data | ./mysql-backup-helper-master/oss_stream/oss_stream -accessKeyId LTAI5tCqY18jvvKk**** -accessKeySecret 4A5Q7ZVzcYnWMQPysXFxld**** -bucketName test -endpoint oss-********.aliyuncs.com -objectName backup_qp.xb
數(shù)據量越大,備份時間越長。如果數(shù)據量較大,為了避免意外登出導致備份中斷,建議通過nohup命令在后臺進行備份。命令示例如下:
nohup sh -c 'innobackupex --backup --host=127.0.0.1 --port=3306 --user=root --password=Aa123456@ --stream=xbstream --compress /root/mysql/data | ./mysql-backup-helper-master/oss_stream/oss_stream -accessKeyId LTAI5tCqY18jvvKk**** -accessKeySecret 4A5Q7ZVzcYnWMQPysXFxld**** -bucketName test -endpoint oss-ap-southeast-1.aliyuncs.com -objectName backup_qp.xb' &
MySQL 8.0
xtrabackup --backup --host=<自建庫主機地址> --port=<自建庫端口號> --user=<自建庫root賬號> --password=<自建庫root密碼> --stream=xbstream <備份文件臨時目錄> | ./mysql-backup-helper-master/oss_stream/oss_stream -accessKeyId <阿里云賬號的AccessKey ID> -accessKeySecret <阿里云賬號的AccessKey Secret> -bucketName <OSS Bucket名稱> -endpoint <OSS Bucket的地域節(jié)點> -objectName <自定義備份文件名>
示例:
xtrabackup --backup --host=127.0.0.1 --port=3306 --user=root --password=Aa123456@ --stream=xbstream /root/mysql/data | ./mysql-backup-helper-master/oss_stream/oss_stream -accessKeyId LTAI5tCqY18jvvKk**** -accessKeySecret 4A5Q7ZVzcYnWMQPysXFxld******** -bucketName test -endpoint oss-****.aliyuncs.com -objectName backup_qp.xb
數(shù)據量越大,備份時間越長。如果數(shù)據量較大,為了避免意外登出導致備份中斷,建議通過nohup命令在后臺進行備份。命令示例如下:
nohup sh -c 'xtrabackup --backup --host=127.0.0.1 --port=3306 --user=root --password=Aa123456@ --stream=xbstream /root/mysql/data | ./mysql-backup-helper-master/oss_stream/oss_stream -accessKeyId LTAI5tCqY18jvvKk**** -accessKeySecret 4A5Q7ZVzcYnWMQPysXFxld**** -bucketName test -endpoint oss-ap-southeast-1.aliyuncs.com -objectName backup_qp.xb' &
說明此過程的時長取決于實例在備份時的狀態(tài),例如備份期間原實例中有太多寫入操作,導致實例大量生成redo日志、或實例中執(zhí)行了大型的事務等情況下,備份時間會變長。當備份順利完成后,屏幕上會打印出
completed OK !
。如您暫時無法使用阿里云OSS服務,可先將自建庫備份至本地,等可以順利訪問OSS后再上傳。更多信息,請參見附錄3:分步驟執(zhí)行全量備份和上傳至OSS。
完成此步驟后,可以登錄OSS控制臺確認備份文件是否上傳成功。如未上傳成功,請重復執(zhí)行步驟2。
登錄RDS實例列表,在頁面左上角選擇地域,在左側導航欄中單擊備份管理。
單擊用戶備份頁簽下的導入備份按鈕。
在彈出的數(shù)據導入向導對話框中,仔細閱讀相關說明并單擊下一步,直至切換到3. 數(shù)據導入頁簽。
說明向導窗口引導您如何導入備份,詳情如下。更多操作,請參見分步驟執(zhí)行全量備份并上傳至OSS。
1. 備份您的數(shù)據庫:全量備份自建庫中的數(shù)據。
2. 上傳備份文件到OSS:將自建庫的全量備份數(shù)據上傳到OSS。
在3. 數(shù)據導入頁簽中,配置如下參數(shù),并單擊確定。
參數(shù)名
說明
MySQL版本
系統(tǒng)自動顯示為5.7/8.0。
說明僅支持導入備份自建數(shù)據庫的版本為MySQL 5.7或8.0。
地域
步驟1中選擇的地域,該地域需要和備份文件所在的OSS Bucket的地域一致。
OSS Bucket
選擇自建庫備份文件所在的OSS Bucket。關于OSS Bucket的更多信息,請參見上傳文件。
OSS文件名
選擇OSS Bucket中的自建庫備份文件。您可以在OSS文件名右側的文本框中輸入備份文件的文件名快速查找。本功能支持模糊匹配和精確匹配。
說明OSS中的備份文件必須為
_QP.XB
格式,或者將_QP.XB
格式的文件壓縮為TAR.GZ
格式進行存儲。更多限制,請參見附錄:使用限制。備注
自定義備份文件的備注信息。
可用區(qū)
設置用戶備份的可用區(qū)。選擇可用區(qū)后,系統(tǒng)會在該可用區(qū)內創(chuàng)建一個秒級快照,大幅節(jié)省備份導入所需要的時間。
說明用戶備份導入完成,并通過其恢復到新實例時,該可用區(qū)即為新實例所在的可用區(qū)。
存儲空間
選擇還原用戶備份所需的存儲空間大小,可選范圍為20 GB~6000 GB。
說明默認為備份文件的3倍大小,若該大小未超過20 GB,則存儲空間默認為20 GB。
說明如您未授權RDS訪問OSS,請先在3. 數(shù)據導入頁面下方單擊授權地址,在跳轉到的頁面左下角單擊同意授權。
更多導入備份時的注意事項請仔細閱讀該頁面下的說明。
系統(tǒng)會在用戶備份中生成備份文件校驗任務,等待任務狀態(tài)由校驗中變更為完成即可。
重要備份文件的校驗時長取決于實例在備份時的狀態(tài)。例如,備份期間原實例中若有太多寫入操作,會導致實例大量生成redo日志、或實例中執(zhí)行了大型的事務等情況下,備份文件校驗時間會變長。
單擊目標備份ID/備注右側操作列下的恢復。
設置如下參數(shù),單擊下一步:實例配置。
類別
說明
主節(jié)點可用區(qū)
選擇主實例所在可用區(qū)。
說明本參數(shù)僅適用于導入時未選擇可用區(qū)的用戶備份。導入時已選擇可用區(qū)的用戶備份不顯示本參數(shù)。
存儲類型
ESSD PL1云盤:PL1性能級別的增強型(Enhanced)SSD云盤。
SSD云盤:基于分布式存儲架構的彈性塊存儲設備。選擇SSD云盤,即實現(xiàn)了計算與存儲分離。
說明更多信息,請參見存儲類型。
實例規(guī)格
通用規(guī)格(入門級):通用型的實例規(guī)格,獨享被分配的內存和I/O資源,與同一服務器上的其他通用型實例共享CPU和存儲資源。
說明每種規(guī)格都有對應的CPU核數(shù)、內存、最大連接數(shù)和最大IOPS。詳情請參見主實例規(guī)格列表。
存儲空間
存儲空間包括數(shù)據空間、系統(tǒng)文件空間、日志文件空間和事務文件空間。調整存儲空間時最小單位為5 GB。
設置如下參數(shù),單擊下一步:確認訂單。
類別
說明
網絡類型
專有網絡:也稱為VPC(Virtual Private Cloud)。VPC是一種隔離的網絡環(huán)境,安全性和性能均高于傳統(tǒng)的經典網絡。選擇專有網絡時您需要選擇對應的VPC和主節(jié)點交換機。
說明請確保選擇的VPC與需要連接的ECS一致,否則它們無法通過內網互通。
參數(shù)模板
設置實例參數(shù)模板。方便您使用系統(tǒng)參數(shù)模板或已創(chuàng)建的自定義參數(shù)模板預設實例的參數(shù),更多信息,請參見使用參數(shù)模板。
時區(qū)
設置實例時區(qū)。
表名大小寫
設置實例表名是否區(qū)分大小寫。當本地數(shù)據庫區(qū)分大小寫時,您可以選擇區(qū)分大小寫,便于您遷移數(shù)據。
確認參數(shù)配置,選擇購買量,選中服務協(xié)議,單擊去支付完成支付。
說明實例的創(chuàng)建需要1~5分鐘時間,請耐心等待。
相關操作
設置用戶備份保留天數(shù)
備份導入完成后,該用戶備份默認保留3天。您可以根據業(yè)務需求增加或減少備份保留天數(shù)。
當您不再需要某個用戶備份,您可以刪除用戶備份。
登錄RDS實例列表,在頁面左上角選擇地域,并在左側導航欄中單擊備份管理。
單擊目標備份ID/備注右側過期時間列下的設置保留天數(shù)。
在彈出的對話框中,您可以直接單擊下拉框選擇系統(tǒng)預設的保留天數(shù),也可以勾選自定義天數(shù)左側的選框,手動輸入或單擊數(shù)字右側的上下箭頭增減保留天數(shù)。
說明保留到展示了備份的過期時間,若該時間超過2099年即顯示為永久。
單擊確定完成更改。
為用戶備份添加標簽
為了方便管理,您可以為已經導入的備份添加標簽。
登錄RDS實例列表,在頁面左上角選擇地域,并在左側導航欄中單擊備份管理。
單擊目標備份ID/備注右側標簽列下的+編輯標簽。
單擊創(chuàng)建標簽,輸入標簽的鍵和值,單擊文本框右側的確定完成創(chuàng)建,并單擊對話框右下角的確定完成創(chuàng)建。
說明如果您已經新建了標簽,可以單擊選擇標簽,為用戶備份添加標簽。
添加完成后,如果您希望變更目標備份的標簽,可以將鼠標移動到已添加的標簽上,在彈出的氣泡中單擊編輯標簽,重復步驟3重新創(chuàng)建或選擇標簽。
查看用戶備份的日志信息
在備份自建庫過程中,如果源庫中存在數(shù)據修改的操作,則備份文件中會帶有日志信息,方便您恢復這部分增量數(shù)據。
登錄RDS實例列表,在頁面左上角選擇地域,并在左側導航欄中單擊備份管理。
單擊目標備份ID右側操作列下的詳情。
在彈出的窗口中即可查詢到日志的具體信息。
說明日志信息中包含如下內容:
Master_Log_File::日志的文件名,展示增量數(shù)據所在的起始日志文件。
Master_Log_Position::日志文件中的位置信息,展示日志文件中增量數(shù)據的起始位置。
刪除用戶備份
為了節(jié)省開支,您可以刪除不再需要的用戶備份。
登錄RDS實例列表,在頁面左上角選擇地域,并在左側導航欄中單擊備份管理。
單擊目標備份ID/備注右側操作列下的刪除。
在彈出的窗口中單擊確認。
其他操作
附錄1:Ubuntu安裝Xtrabackup
請根據MySQL數(shù)據庫的版本選擇Xtrabackup的版本。
MySQL 5.7
安裝Xtrabackup。
wget https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.29/binary/redhat/8/x86_64/percona-xtrabackup-24-2.4.29-1.el8.x86_64.rpm yum localinstall percona-xtrabackup-24-2.4.29-1.el8.x86_64.rpm
安裝qpress。
sudo apt-get install -y qpress
說明qpress是Xtrabackup的解壓縮工具,由于Ubuntu系統(tǒng)安裝XtraBackup不會集成qpress,因此需要此步驟單獨進行安裝。
執(zhí)行上述任意步驟時如出現(xiàn)類似于The following packages have unmet dependencies
的提示,請按照提示執(zhí)行apt-get -f install
命令安裝缺失的依賴包后重新執(zhí)行。
MySQL 8.0
安裝Xtrabackup。
wget https://downloads.percona.com/downloads/Percona-XtraBackup-8.0/Percona-XtraBackup-8.0.35-31/binary/redhat/8/x86_64/percona-xtrabackup-80-8.0.35-31.1.el8.x86_64.rpm yum localinstall percona-xtrabackup-80-8.0.35-31.1.el8.x86_64.rpm
安裝qpress。
sudo apt-get install -y qpress
說明qpress是XtraBackup的解壓縮工具,由于Ubuntu系統(tǒng)安裝XtraBackup不會集成qpress,因此需要此步驟單獨進行安裝。
執(zhí)行上述任意步驟時如出現(xiàn)類似于The following packages have unmet dependencies
的提示,請按照提示執(zhí)行apt-get -f install
命令安裝缺失的依賴包后重新執(zhí)行。
附錄2:Ubuntu安裝Golang和Unzip
安裝Golang
sudo apt-get install -y software-properties-common sudo add-apt-repository ppa:longsleep/golang-backports sudo apt-get update sudo apt-get install -y golang-go
安裝Unzip
sudo apt-get -y install unzip
附錄3:分步驟執(zhí)行全量備份和上傳至OSS
全量備份自建數(shù)據庫至本地。
請根據MySQL數(shù)據庫的版本選擇命令。
MySQL 5.7
innobackupex --backup --host=<自建庫主機地址> --port=<自建庫端口號> --user=<自建庫root賬號> --password=<自建庫root密碼> --stream=xbstream --compress <備份文件臨時目錄> > /<備份路徑>/<備份文件名>_qp.xb
示例:
innobackupex --backup --host=127.0.0.1 --port=3306 --user=root --password=Aa123456@ --stream=xbstream --compress /root/mysql/data > /root/backup_qp.xb
MySQL 8.0
xtrabackup --backup --host=<自建庫主機地址> --port=<自建庫端口號> --user=<自建庫root賬號> --password=<自建庫root密碼> --stream=xbstream <備份文件臨時目錄> > /<備份路徑>/<備份文件名>_qp.xb
示例:
xtrabackup --backup --host=127.0.0.1 --port=3306 --user=root --password=Aa123456@ --stream=xbstream /root/mysql/data > /root/backup_qp.xb
通過OSS_Stream將備份文件上傳至OSS。
cat /<備份路徑>/<備份文件名>_qp.xb | ./mysql-backup-helper-master/oss_stream/oss_stream -accessKeyId LTAI5tCqY18jvvKk******** -accessKeySecret 4A5Q7ZVzcYnWMQPysXFxld******** -bucketName test -endpoint oss-********.aliyuncs.com -objectName backup_qp.xb
示例:
cat /root/backup_qp.xb | ./mysql-backup-helper-master/oss_stream/oss_stream -accessKeyId LTAI5tCqY18jvvKk******** -accessKeySecret 4A5Q7ZVzcYnWMQPysXFxld******** -bucketName test -endpoint oss-********.aliyuncs.com -objectName backup_qp.xb
附錄4:設置Go代理
如果您使用的是中國地域的ECS,可能無法正常完成步驟二的編譯流程,此時需要執(zhí)行如下命令以便Go使用阿里云的代理,然后重新執(zhí)行編譯。
go env -w GO111MODULE=on
go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/,direct
如果設置了上述代理后還是出現(xiàn)編譯出錯的情況,則可能是代理地址暫不可用造成的。此時可以在搜索引擎中搜索其他Go的代理地址來替換上述命令中的https://mirrors.aliyun.com/goproxy/,direct
部分。推薦搜索關鍵詞:Go代理
。
附錄5:使用限制
限制項 | 詳情 |
MySQL版本限制 | 目前僅支持如下自建數(shù)據庫上云。
說明
|
自建MySQL限制 |
|
備份限制 |
|
OSS限制 |
|
恢復限制 |
|
復制限制 |
|