全部產品
Search
文件中心

ApsaraDB RDS:MySQL 5.7、8.0自建資料庫全量上雲

更新時間:Sep 07, 2024

RDS MySQL支援全量備份匯入功能,可以將Object Storage Service中的自建MySQL全量備份資料匯入至RDS控制台,並恢複至新RDS MySQL執行個體中。

前提條件

  • 使用的阿里雲帳號為主帳號。

  • 自建MySQL資料庫必須符合上雲條件。具體詳情,請參見附錄:使用限制

  • 已在目標地區建立了OSS Bucket。如未建立,請參見控制台建立儲存空間

    說明

    該目標地區必須為您希望建立RDS執行個體的地區。

上雲流程概覽

本文包含如下步驟:

步驟一:安裝Percona Xtrabackup

步驟二:安裝MySQL Backup Helper

步驟三:備份自建庫並上雲

示範環境說明

本文示範所用的環境為阿里雲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

操作步驟

  1. 下載MySQL Backup Helper源碼包。

    wget https://github.com/aliyun/mysql-backup-helper/archive/refs/heads/master.zip
    說明

    您可訪問mysql-backup-helper擷取最新版的源碼包。

  2. 解壓MySQL Backup Helper源碼包。

    unzip master.zip
  3. 進入mysql-backup-helper-master檔案夾,對main.go檔案進行編譯,獲得backup_helper可執行檔。

    cd mysql-backup-helper-master
    go build -a -o backup_helper main.go
  4. 進入oss_stream檔案夾,對oss_stream.go檔案進行編譯,獲得oss_stream可執行檔。

    cd oss_stream
    go build -a -o oss_stream oss_stream.go

步驟三:備份自建庫並上雲

  1. 通過MySQL Backup Helper驗證當前自建MySQL資料庫是否支援備份。

    cd ~/mysql-backup-helper-master && ./backup_helper -host <自建庫主機地址> -port <自建庫連接埠號碼> -user <自建庫root帳號> --password <自建庫root密碼>

    backup_helper

  2. 驗證通過後,全量備份自建庫並將備份檔案上傳至阿里雲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

  3. 登入RDS執行個體列表,在頁面左上方選擇地區,在左側導覽列中單擊備份管理

  4. 單擊使用者備份頁簽下的匯入備份按鈕。

  5. 在彈出的資料匯入嚮導對話方塊中,仔細閱讀相關說明並單擊下一步,直至切換到3. 資料匯入頁簽。

    說明

    嚮導視窗引導您如何匯入備份,詳情如下。更多操作,請參見分步驟執行全量備份並上傳至OSS

    • 1. 备份您的数据库:全量備份自建庫中的資料。

    • 2. 上傳備份檔案到OSS:將自建庫的全量備份資料上傳到OSS。

  6. 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. 資料匯入頁面下方單擊授權地址,在跳轉到的頁面左下角單擊同意授權

    • 更多匯入備份時的注意事項請仔細閱讀該頁面下的說明。

  7. 系統會在使用者備份中產生備份檔案校正任務,等待任務狀態校正中變更為完成即可。

    重要

    備份檔案的校正時間長度取決於執行個體在備份時的狀態。例如,備份期間原執行個體中若有太多寫入操作,會導致執行個體大量產生redo日誌、或執行個體中執行了大型的事務等情況下,備份檔案校正時間會變長。

  8. 單擊目標備份ID/備忘右側操作列下的復原

  9. 設定如下參數,單擊下一步:執行個體配置

    類別

    說明

    主節點可用性區域

    選擇主執行個體所在可用性區域。

    說明

    本參數僅適用於匯入時未選擇可用性區域的使用者備份。匯入時已選擇可用性區域的使用者備份不顯示本參數。

    儲存類型

    • ESSD PL1雲端硬碟:PL1效能層級的增強型(Enhanced)SSD雲端硬碟。

    • SSD雲端硬碟:基於分布式儲存架構的彈性Block Storage裝置。選擇SSD雲端硬碟,即實現了計算與儲存分離。

    說明

    更多資訊,請參見儲存類型

    執行個體規格

    通用規格(入門級):通用型的執行個體規格,獨享被分配的記憶體和I/O資源,與同一伺服器上的其他通用型執行個體共用CPU和儲存資源。

    說明

    每種規格都有對應的CPU核心數、記憶體、最大串連數和最大IOPS。詳情請參見主執行個體規格列表

    儲存空間

    儲存空間包括資料空間、系統檔案空間、記錄檔空間和事務檔案空間。調整儲存空間時最小單位為5 GB。

  10. 設定如下參數,單擊下一步:確認訂單

    類別

    說明

    網路類型

    專用網路:也稱為VPC(Virtual Private Cloud)。VPC是一種隔離的網路環境,安全性和效能均高於傳統的傳統網路。選擇專用網路時您需要選擇對應的VPC主節點交換器

    說明

    請確保選擇的VPC與需要串連的ECS一致,否則它們無法通過內網互連。

    參數模板

    設定執行個體參數模板。方便您使用系統參數模板或已建立的自訂參數模板預設執行個體的參數,更多資訊,請參見使用參數模板

    時區

    設定執行個體時區。

    表名大小寫

    設定執行個體表名是否區分大小寫。當本機資料庫區分大小時,您可以選擇區分大小寫,便於您遷移資料。

  11. 確認參數配置,選擇購買量,選中服務合約,單擊去支付完成支付。

    說明

    執行個體的建立需要1~5分鐘時間,請耐心等待。

相關操作

設定使用者備份保留天數

備份匯入完成後,該使用者備份預設保留3天。您可以根據業務需求增加或減少備份保留天數。

說明

當您不再需要某個使用者備份,您可以刪除使用者備份。

  1. 登入RDS執行個體列表,在頁面左上方選擇地區,並在左側導覽列中單擊備份管理

  2. 單擊目標備份ID/備忘右側到期時間列下的設定保留天數

  3. 在彈出的對話方塊中,您可以直接單擊下拉框選擇系統預設的保留天數,也可以勾選自訂天數左側的選框,手動輸入或單擊數字右側的上下箭頭增減保留天數。

    說明

    保留到展示了備份的到期時間,若該時間超過2099年即顯示為永久

  4. 單擊確定完成更改。

為使用者備份添加標籤

為了方便管理,您可以為已經匯入的備份添加標籤。

  1. 登入RDS執行個體列表,在頁面左上方選擇地區,並在左側導覽列中單擊備份管理

  2. 單擊目標備份ID/備忘右側標籤列下的+添加標籤

  3. 單擊建立標籤,輸入標籤的,單擊文字框右側的確定完成建立,並單擊對話方塊右下角的確定完成建立。

    說明

    如果您已經建立了標籤,可以單擊選擇標籤,為使用者備份添加標籤。

  4. 添加完成後,如果您希望變更目標備份的標籤,可以將滑鼠移動到已添加的標籤上,在彈出的氣泡中單擊編輯,重複步驟3重新建立或選擇標籤。

查看使用者備份的日誌資訊

備份自建庫過程中,如果源庫中存在資料修改的操作,則備份檔案中會帶有日誌資訊,方便您恢複這部分增量資料。

  1. 登入RDS執行個體列表,在頁面左上方選擇地區,並在左側導覽列中單擊備份管理

  2. 單擊目標備份ID右側操作列下的詳情

  3. 在彈出的視窗中即可查詢到日誌的具體資訊。

    說明

    日誌資訊中包含如下內容:

    • Master_Log_File::日誌的檔案名稱,展示增量資料所在的起始記錄檔。

    • Master_Log_Position::記錄檔中的位置資訊,展示記錄檔中增量資料的起始位置。

刪除使用者備份

為了節省開支,您可以刪除不再需要的使用者備份。

  1. 登入RDS執行個體列表,在頁面左上方選擇地區,並在左側導覽列中單擊備份管理

  2. 單擊目標備份ID/備忘右側操作列下的刪除

  3. 在彈出的視窗中單擊確認

其他動作

  • 自訂欄表項:顯示或隱藏備份列表下的列,預設為全部顯示。

    1. 登入RDS執行個體列表,在頁面左上方選擇地區,並在左側導覽列中單擊備份管理

    2. 單擊頁面右側的自訂欄表項表徵圖,在彈出的視窗中,選定清單項目,單擊右左表徵圖,顯示或隱藏清單項目。

      說明

      左邊框中的清單項目為隱藏項,右邊框中的清單項目為顯示項目。

    3. 單擊確定

  • 匯出資源清單:將當前所有使用者備份資訊匯出到CSV檔案。

    1. 登入RDS執行個體列表,在頁面左上方選擇地區,並在左側導覽列中單擊備份管理

    2. 單擊頁面右側的匯出資源清單表徵圖即可匯出資源清單。

  • 重新整理:重新整理使用者備份列表。

    1. 登入RDS執行個體列表,在頁面左上方選擇地區,並在左側導覽列中單擊備份管理

    2. 單擊頁面右側的重新整理表徵圖即可重新整理使用者備份列表。

附錄1:Ubuntu安裝Xtrabackup

  1. 下載最新版的Percona包。

    wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb
  2. 安裝Percona包。

    sudo dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb
  3. 啟用Percona存放庫。

    percona-release enable-only tools release
  4. 更新本地倉庫的軟體列表。

    apt-get update
  5. 安裝Xtrabackup 2.4或8.0版本。

    sudo apt-get install -y percona-xtrabackup-24 #安裝Xtrabackup 2.4版本。
    sudo apt-get install -y percona-xtrabackup-80 #安裝Xtrabackup 8.0版本。
    說明

    請根據MySQL資料庫的版本選擇Xtrabackup的版本。對應關係如下:

    • MySQL 5.7:請安裝Xtrabackup 2.4。

    • MySQL 8.0:請安裝Xtrabackup 8.0。

  6. 安裝qpress。

    sudo apt-get install -y qpress
    說明

    qpress是Xtrabuckup的解壓縮工具,由於Ubuntu系統安裝XtraBackup不會整合qpress,因此需要此步驟單獨進行安裝。

說明

執行上述任意步驟時如出現類似於The following packages have unmet dependencies的提示,請按照提示執行apt-get -f install命令安裝缺失的依賴包後重新執行。

附錄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:分步驟執行全量備份和上傳至OSS

  1. 全量備份自建資料庫至本地。

    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版本,需要將上述innobackupex命令替換為xtrabackup命令。

  2. 通過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:使用限制

限制項

詳情

MySQL版本限制

目前僅支援如下自建資料庫上雲。

  • MySQL 5.7(5.7.32及以下小版本)

  • MySQL 8.0(8.0.18及以下小版本)

說明
  • 自建庫的版本必須和RDS執行個體版本對應。例如:MySQL 5.7的備份資料只能恢複至RDS MySQL 5.7版本的執行個體。

  • 如果版本不符合本文的要求,請參見從自建MySQL遷移至RDS MySQL執行個體進行遷移。

自建MySQL限制

  • 自建庫的資料必須儲存在MySQL中配置的datadir資料目錄下。您可在命令列執行mysqladmin -u<自建庫root帳號> -p<自建庫root密碼> variables | grep datadir命令,確認當前MySQL的datadir資料目錄。

  • innodb_data_file_path參數必須為預設的ibdata1

備份限制

  • 備份完成之後,自建庫中產生的增量資料不會保留在備份檔案中。

  • 備份自建MySQL 5.7資料庫必須使用Percona XtraBackup 2.4版本。

  • 使用Percona XtraBackup備份自建庫時不支援傳入--tables--tables-exclude--tables-file--databases--databases-file選項。

  • 無法讀取OSS Bucket中的加密檔案,因此建立OSS Bucket時服務端加密方式需要選

  • 不支援差異備份檔案或記錄備份檔案。

  • 全量備份檔案名不能包含特殊字元,否則會導致上雲失敗。

  • 授予RDS服務帳號訪問OSS的許可權以後,系統會在存取控制RAM的角色管理中建立名為AliyunRDSImportRole的角色。請勿修改或刪除這個角色,否則會導致上雲任務無法下載備份檔案而失敗。

  • 在OSS備份資料恢複上雲任務沒有完成之前,請不要刪除OSS上的備份檔案,否則會導致上雲任務失敗。

  • OSS中的備份檔案必須為_QP.XB格式,或者將_QP.XB格式的檔案壓縮為TAR.GZ格式進行儲存。

    說明

    對於不符合格式要求的備份檔案,例如備份格式為.xbstream,建議您先將該格式檔案恢複到本機資料庫,轉換為_QP.XB格式後再進行上雲操作;或者您也可以選擇其他上雲方案,請參見從自建MySQL遷移至RDS MySQL執行個體

OSS限制

  • 使用命令列分區上傳,單個檔案需限制在16 TB以內,詳情請參見OSS使用限制

  • 儲存備份檔案的OSS地區必須與還原到的RDS執行個體地區一致。

恢複限制

  • 為防止誤操作覆蓋執行個體資料,當前僅支援恢複資料至新執行個體。

  • 無法恢複資料大小超過RDS MySQL所支援的最大儲存空間的資料庫,更多規格資訊,請參見主執行個體規格列表

  • 匯入備份時,系統會建立一個臨時執行個體並將備份資料匯入至該臨時執行個體,恢複時從該臨時執行個體中提取資料。預設情況下,該臨時執行個體預配儲存空間大小為備份資料大小的5倍,如匯入備份出現儲存空間不足,可自行調整該儲存空間。

  • 恢複操作不會匯入自建庫的使用者賬戶,自訂函數和預存程序。請記錄上述資訊,在恢複完成後手動添加至RDS執行個體。

  • 恢複操作不會匯入時區資訊。請記錄自建庫的時區資訊,在恢複完成後手動進行設定。

  • 目前僅支援將備份檔案恢複至RDS MySQL 5.7或8.0基礎系列(SSD雲端硬碟)隨用隨付執行個體。

複製限制

  • 僅支援基於全域事務標識GTID(Global Transaction Identifier)方式的複製。因此,自建庫需要開啟GTID複製,將gtid_modeenforce_gtid_consistency均設定為ON

  • 備份校正記錄預設儲存7天,超過7天的備份記錄以及產生的快照會自動刪除,建立複製關係操作應在執行個體恢複完成後儘快實施,避免自建庫的日誌被清理,以及備份校正後產生的快照被刪除。