RDS MySQL支援全量備份匯入功能,可以將Object Storage Service中的自建MySQL全量備份資料匯入至RDS控制台,並恢複至新RDS MySQL執行個體中。
前提條件
上雲流程概覽
本文包含如下步驟:
示範環境說明
本文示範所用的環境為阿里雲ECS執行個體,鏡像為CentOS Linux release 8.3.2011版本,其他版本請適配相關命令。如何建立ECS執行個體,請參見建立ECS執行個體。
步驟一:安裝Percona Xtrabackup
Percona XtraBackup是Percona公司開發的用於MySQL資料庫物理熱備的備份工具,支援多種資料庫引擎。如您使用的是Ubuntu系統,請參見附錄1:Ubuntu安裝Xtrabackup。
請根據MySQL資料庫的版本選擇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。如未安裝,請在命令列中執行下列命令安裝。
sudo yum install -y go
已安裝unzip。如未安裝,請在命令列中執行下列命令安裝。
sudo yum install -y unzip
上述命令僅限CentOS系統使用,如您使用的是Ubuntu系統,請參見附錄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可執行檔。
cd mysql-backup-helper-master go build -a -o backup_helper main.go
進入oss_stream檔案夾,對oss_stream.go檔案進行編譯,獲得oss_stream可執行檔。
cd oss_stream go build -a -o oss_stream oss_stream.go
步驟三:備份自建庫並上雲
通過MySQL Backup Helper驗證當前自建MySQL資料庫是否支援備份。
cd ~/mysql-backup-helper-master && ./backup_helper -host <自建庫主機地址> -port <自建庫連接埠號碼> -user <自建庫root帳號> --password <自建庫root密碼>
驗證通過後,全量備份自建庫並將備份檔案上傳至阿里雲Object Storage Service。如您未提前建立OSS Bucket,請參見本文前提條件。
請根據MySQL資料庫的版本選擇命令。
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的地區節點> -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
資料量越大,備份時間越長。如果資料量較大,為了避免意外登出導致備份中斷,建議通過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的地區節點> -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
資料量越大,備份時間越長。如果資料量較大,為了避免意外登出導致備份中斷,建議通過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' &
說明此過程的時間長度取決於執行個體在備份時的狀態,例如備份期間原執行個體中有太多寫入操作,導致執行個體大量產生redo日誌、或執行個體中執行了大型的事務等情況下,備份時間會變長。當備份順利完成後,螢幕上會列印出
completed OK !
。如您暫時無法使用阿里雲OSS服務,可先將自建庫備份至本地,等可以順利訪問OSS後再上傳。更多資訊,請參見附錄3:分步驟執行全量備份和上傳至OSS。
完成此步驟後,可以登入OSS控制台確認備份檔案是否上傳成功。如未上傳成功,請重複執行步驟2。
登入RDS執行個體列表,在頁面左上方選擇地區,在左側導覽列中單擊備份管理。
單擊使用者備份頁簽下的匯入備份按鈕。
在彈出的資料匯入嚮導對話方塊中,仔細閱讀相關說明並單擊下一步,直至切換到3. 資料匯入頁簽。
說明嚮導視窗引導您如何匯入備份,詳情如下。更多操作,請參見分步驟執行全量備份並上傳至OSS。
1. 备份您的数据库:全量備份自建庫中的資料。
2. 上傳備份檔案到OSS:將自建庫的全量備份資料上傳到OSS。
在3. 數據匯入頁簽中,配置如下參數,並單擊確定。
參數名
說明
MySQL版本
系統自動顯示為5.7/8.0。
說明僅支援匯入備份自建資料庫的版本為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
格式進行儲存。更多限制,請參見附錄:使用限制。備忘
自訂備份檔案的備忘資訊。
可用性區域
設定使用者備份的可用性區域。選擇可用性區域後,系統會在該可用性區域內建立一個秒級快照,大幅節省備份匯入所需要的時間。
說明使用者備份匯入完成,並通過其恢複到新執行個體時,該可用性區域即為新執行個體所在的可用性區域。
儲存空間
選擇還原使用者備份所需的儲存空間大小,可選範圍為20 GB~6000 GB。
說明預設為備份檔案的3倍大小,若該大小未超過20 GB,則儲存空間預設為20 GB。
說明如您未授權RDS訪問OSS,請先在3. 資料匯入頁面下方單擊授權地址,在跳轉到的頁面左下角單擊同意授權。
更多匯入備份時的注意事項請仔細閱讀該頁面下的說明。
系統會在使用者備份中產生備份檔案校正任務,等待任務狀態由校正中變更為完成即可。
重要備份檔案的校正時間長度取決於執行個體在備份時的狀態。例如,備份期間原執行個體中若有太多寫入操作,會導致執行個體大量產生redo日誌、或執行個體中執行了大型的事務等情況下,備份檔案校正時間會變長。
單擊目標備份ID/備忘右側操作列下的復原。
設定如下參數,單擊下一步:執行個體配置。
類別
說明
主節點可用性區域
選擇主執行個體所在可用性區域。
說明本參數僅適用於匯入時未選擇可用性區域的使用者備份。匯入時已選擇可用性區域的使用者備份不顯示本參數。
儲存類型
ESSD PL1雲端硬碟:PL1效能層級的增強型(Enhanced)SSD雲端硬碟。
SSD雲端硬碟:基於分布式儲存架構的彈性Block Storage裝置。選擇SSD雲端硬碟,即實現了計算與儲存分離。
說明更多資訊,請參見儲存類型。
執行個體規格
通用規格(入門級):通用型的執行個體規格,獨享被分配的記憶體和I/O資源,與同一伺服器上的其他通用型執行個體共用CPU和儲存資源。
說明每種規格都有對應的CPU核心數、記憶體、最大串連數和最大IOPS。詳情請參見主執行個體規格列表。
儲存空間
儲存空間包括資料空間、系統檔案空間、記錄檔空間和事務檔案空間。調整儲存空間時最小單位為5 GB。
設定如下參數,單擊下一步:確認訂單。
類別
說明
網路類型
專用網路:也稱為VPC(Virtual Private Cloud)。VPC是一種隔離的網路環境,安全性和效能均高於傳統的傳統網路。選擇專用網路時您需要選擇對應的VPC和主節點交換器。
說明請確保選擇的VPC與需要串連的ECS一致,否則它們無法通過內網互連。
參數模板
設定執行個體參數模板。方便您使用系統參數模板或已建立的自訂參數模板預設執行個體的參數,更多資訊,請參見使用參數模板。
時區
設定執行個體時區。
表名大小寫
設定執行個體表名是否區分大小寫。當本機資料庫區分大小寫時,您可以選擇區分大小寫,便於您遷移資料。
確認參數配置,選擇購買量,選中服務合約,單擊去支付完成支付。
說明執行個體的建立需要1~5分鐘時間,請耐心等待。
相關操作
設定使用者備份保留天數
備份匯入完成後,該使用者備份預設保留3天。您可以根據業務需求增加或減少備份保留天數。
當您不再需要某個使用者備份,您可以刪除使用者備份。
登入RDS執行個體列表,在頁面左上方選擇地區,並在左側導覽列中單擊備份管理。
單擊目標備份ID/備忘右側到期時間列下的設定保留天數。
在彈出的對話方塊中,您可以直接單擊下拉框選擇系統預設的保留天數,也可以勾選自訂天數左側的選框,手動輸入或單擊數字右側的上下箭頭增減保留天數。
說明保留到展示了備份的到期時間,若該時間超過2099年即顯示為永久。
單擊確定完成更改。
為使用者備份添加標籤
為了方便管理,您可以為已經匯入的備份添加標籤。
登入RDS執行個體列表,在頁面左上方選擇地區,並在左側導覽列中單擊備份管理。
單擊目標備份ID/備忘右側標籤列下的+添加標籤。
單擊建立標籤,輸入標籤的鍵和值,單擊文字框右側的確定完成建立,並單擊對話方塊右下角的確定完成建立。
說明如果您已經建立了標籤,可以單擊選擇標籤,為使用者備份添加標籤。
添加完成後,如果您希望變更目標備份的標籤,可以將滑鼠移動到已添加的標籤上,在彈出的氣泡中單擊編輯,重複步驟3重新建立或選擇標籤。
查看使用者備份的日誌資訊
在備份自建庫過程中,如果源庫中存在資料修改的操作,則備份檔案中會帶有日誌資訊,方便您恢複這部分增量資料。
登入RDS執行個體列表,在頁面左上方選擇地區,並在左側導覽列中單擊備份管理。
單擊目標備份ID右側操作列下的詳情。
在彈出的視窗中即可查詢到日誌的具體資訊。
說明日誌資訊中包含如下內容:
Master_Log_File::日誌的檔案名稱,展示增量資料所在的起始記錄檔。
Master_Log_Position::記錄檔中的位置資訊,展示記錄檔中增量資料的起始位置。
刪除使用者備份
為了節省開支,您可以刪除不再需要的使用者備份。
登入RDS執行個體列表,在頁面左上方選擇地區,並在左側導覽列中單擊備份管理。
單擊目標備份ID/備忘右側操作列下的刪除。
在彈出的視窗中單擊確認。
其他動作
自訂欄表項:顯示或隱藏備份列表下的列,預設為全部顯示。
登入RDS執行個體列表,在頁面左上方選擇地區,並在左側導覽列中單擊備份管理。
單擊頁面右側的表徵圖,在彈出的視窗中,選定清單項目,單擊或表徵圖,顯示或隱藏清單項目。
說明左邊框中的清單項目為隱藏項,右邊框中的清單項目為顯示項目。
單擊確定。
匯出資源清單:將當前所有使用者備份資訊匯出到CSV檔案。
登入RDS執行個體列表,在頁面左上方選擇地區,並在左側導覽列中單擊備份管理。
單擊頁面右側的表徵圖即可匯出資源清單。
重新整理:重新整理使用者備份列表。
登入RDS執行個體列表,在頁面左上方選擇地區,並在左側導覽列中單擊備份管理。
單擊頁面右側的表徵圖即可重新整理使用者備份列表。