全部產品
Search
文件中心

ApsaraDB RDS:RDS MySQL物理備份檔案恢複到自建資料庫

更新時間:Jun 24, 2025

本文介紹如何使用Percona XtraBackup工具,將RDS MySQL的物理備份檔案恢複到自建資料庫。

背景

RDS MySQL支援將執行個體備份檔案恢複到自建資料庫,當前支援物理備份檔案恢複、邏輯備份檔案恢複等多種方式。如何選擇資料恢複方案,請參見MySQL資料恢複方案

您可以前往RDS管理主控台,在左側導覽列選擇備份復原,然後在基礎備份列表 > 資料備份中查看執行個體備份的類型。

image

說明

如果沒有物理備份,可以手動建立備份後,再進行本文操作。建立方法,請參見手動備份

應用情境

如果您未來一段時間不再使用RDS MySQL,或執行個體已釋放但有物理備份檔案,您可以將RDS MySQL資料庫的物理備份恢複到本地自建資料庫,以保留RDS MySQL中的資料。

前提條件

  • RDS MySQL執行個體基礎配置需滿足以下條件:

    • 大版本:8.0、5.7、5.6、5.5

    • 系列:高可用系列

    • 儲存類型:高效能本地碟

    說明
    • 您可以在執行個體基本資料頁面查看以上資訊。

    • 僅如上版本的執行個體支援下載物理備份。如果您的執行個體是基礎系列執行個體,請參見本文常見問題

  • RDS執行個體中的表未通過TDE加密。

    重要
    • 加密表會導致恢複出錯,請先執行解密操作

    • 您可在RDS控制台目標執行個體資料安全性TDE頁面查看TDE開啟狀況。

  • RAM帳號需要具備下載備份檔案的許可權,授權操作請參見添加下載備份檔案許可權給唯讀子帳號

使用限制

影響

  • 如果將RDS MySQL物理備份恢複到當前運行其他業務的自建資料庫,原有業務將不可用。

  • 本文介紹的恢複方案將資料恢複到建立的資料庫資料目錄中,不影響自建資料庫中的原資料。

技術實現

本文介紹的物理備份恢複方式主要是通過如下流程實現的:

  1. 對資料庫進行全量物理備份。

  2. 下載物理備份檔案到本地,通過qpress工具進行解壓。

  3. 使用Percona XtraBackup工具,將解壓後的備份檔案恢複到自建資料庫的資料目錄中。

  4. 重啟資料庫後,即可在自建資料庫中查看到原先位於RDS MySQL中的資料。

注意事項

  • 備份下載連結有效時間為一小時,到期後請重新整理頁面擷取新連結。

  • 請勿修改或刪減備份檔案內容,否則可能導致檔案損壞且無法恢複。如需修改,請先恢複到自建資料庫。

費用說明

  • 如果需要手動備份,請關注當前備份使用量,超出免費額度的備份空間將會產生備份費用

  • 下載備份時,如果您的自建資料庫部署在本地,則需要使用外網連結下載備份資料,超出外網下載免費額度後需要支付外網流量費用

    說明

    如果您的自建資料庫部署在與RDS相同地區、相同VPC的Elastic Compute Service中,使用內網地址下載備份資料,不收取流量費用。

準備工作

環境準備

  1. 本文以CentOS 7.9 64位為例,其他Linux發行版本請適配命令。

  2. 部署自建MySQL資料庫,其中資料庫大版本與RDS MySQL的大版本必須相同(例如都是8.0)。

    使用以下命令查詢自建資料庫大版本:

    mysql --version
  3. 查詢自建資料庫的設定檔路徑

    本文樣本中涉及的資料庫設定檔路徑如下:

    • MySQL 8.0、5.7為/etc/my.cnf

    • MySQL 5.6為/usr/my.cnf

    • MySQL 5.5需要手動建立,使用echo "[mysqld]" | sudo tee /etc/my.cnf命令建立。

    使用如下命令查詢自建資料庫的設定檔路徑。

    sudo find / -name my.cnf
    說明

    如果查詢結果不一致,請根據實際情況修改後續命令。

  4. 建立備份解壓路徑mysql_bkdata),用於存放解壓後的備份檔案。

    使用如下命令建立備份解壓目錄

    sudo mkdir /var/mysql_bkdata
    sudo chown -R $USER:$USER /var/mysql_bkdata
    說明

    $USER:$USER表示從環境變數中擷取目前使用者及使用者組,無需修改。

  5. 建立資料庫資料目錄mysql_newdata),用於將備份檔案恢複到此目錄,啟動資料庫時使用此目錄的資料。

    使用如下命令建立資料目錄

    sudo mkdir /var/mysql_newdata
    sudo chown -R $USER:$USER /var/mysql_newdata
    說明

    上述命令的$USER:$USER表示從環境變數中擷取目前使用者及使用者組,無需修改。

工具準備

  1. 安裝備份恢複工具Percona XtraBackup。

    MySQL 8.0

    對於MySQL 8.0執行個體,請根據主機環境下載對應版本的XtraBackup工具,上傳至伺服器後安裝使用。如您需要上傳至ECS伺服器,請參考ECS上傳或下載檔案

    重要

    由於RDS MySQL 8.0有新增Redo類型,開源版本的Percona XtraBackup可能存在相容性問題。因此請下載下表RDS提供的XtraBackup工具。

    主機環境

    XtraBackup 8.0工具下載入口

    安裝命令樣本

    說明

    本樣本將工具下載至/Xtrabackup8.0目錄下,實際安裝命令會因目錄不同而有所變化,請以實際工具下載位置為準調整安裝命令。

    Linux 6(基於x86_64架構)

    RDS XtraBackup 8.0工具下載

    sudo yum localinstall -y /XtraBackup8.0/t-rds-xtrabackup-80-8.0.31-20230817110455.alios6.x86_64

    Linux 7(基於x86_64架構)

    RDS XtraBackup 8.0工具下載

    sudo yum localinstall -y /XtraBackup8.0/t-rds-xtrabackup-80-8.0.31-20230817110455.alios7.x86_64.rpm

    Linux 7(基於ARM AArch64架構)

    RDS XtraBackup 8.0工具下載

    sudo yum localinstall -y /XtraBackup8.0/t-rds-xtrabackup-80-8.0.31-20230817110455.alios7.aarch64.rpm

    Linux 8(基於ARM AArch64架構)

    RDS XtraBackup 8.0工具下載

    sudo yum localinstall -y /XtraBackup8.0/t-rds-xtrabackup-80-8.0.31-20230817110455.al8.aarch64.rpm
    說明

    安裝完成後,Percona XtraBackup的可執行檔將位於/u01/xtrabackup80/bin目錄下,該目錄路徑預設不會被添加到Linux系統的PATH環境變數中。

    如您需要在其他目錄下直接執行Percona XtraBackup命令,您有兩種方法:

    • 在執行Percona XtraBackup命令時,使用完整路徑(本文多處命令均採用該方式)。例如/u01/xtrabackup80/bin/xtrabackup --xxxxxx

    • 手動將/u01/xtrabackup80/bin目錄添加到系統的PATH環境變數中。

    MySQL 5.7、5.6或5.5

    對於MySQL 5.7、5.6或5.5執行個體,下載並安裝Percona XtraBackup 2.4

    本文以Percona XtraBackup 2.4.28為例,安裝命令如下:

    wget https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.28/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.28-1.el7.x86_64.rpm
    sudo yum localinstall -y percona-xtrabackup-24-2.4.28-1.el7.x86_64.rpm
  2. 安裝解壓工具qpress。

    ## 下載可執行檔的tar包
    wget "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20230406/flxd/qpress-11-linux-x64.tar"
    
    ## 解壓下載的tar包
    tar -xvf qpress-11-linux-x64.tar
    
    ## 設定qpress檔案的執行許可權
    sudo chmod 775 qpress
    
    ## 拷貝qpress到/usr/bin中,以便系統可以全域訪問
    sudo cp qpress /usr/bin

1. 下載備份檔案

  1. 訪問RDS執行個體列表,在上方選擇地區,然後單擊目標執行個體ID。

  2. 在左側導覽列單擊備份復原

  3. 基础备份列表 > 資料備份中,找到目標物理備份,單擊操作列的執行個體備份下載

  4. 執行個體備份下載對話方塊,根據實際情況,選擇並複製內網地址或外網地址。

    重要
    • 使用內網地址下載時,需要在同地區的VPC網路中才可下載,在跨地區VPC以及傳統網路的伺服器端無法下載。

    • 使用外網地址下載時,超出外網下載免費額度後需要支付外網流量費用。更多資訊,請參見費用說明

    • 備份下載地址有效時間為一個小時,超過有效時間後可重新整理頁面擷取最新連結。

    • 請勿修改或刪減已備份的檔案內容,可能造成備份檔案損壞,無法恢複。如需修改,請恢複到自建資料庫後再進行修改操作。

  5. 登入本地自建MySQL所在的Linux伺服器,執行如下命令下載物理備份。

    wget -c 'https://****.bak.rds.aliyuncs.com/****_xb.qp?****' -O test_xb.qp
    說明
    • 請將上述命令中的https://****.bak.rds.aliyuncs.com/****_xb.qp?****替換為實際複製的備份下載地址。備份檔案下載後請您及時儲存,避免泄露。

    • 本文樣本將test_xb.qp作為另存的檔案名稱,您可以自訂該檔案名稱,但檔案名稱尾碼必須與下載地址裡的尾碼保持一致

      目前RDS MySQL備份下載地址的尾碼名存在兩種格式_xb.qp_qp.xb,您可以在下載連結中查看備份檔案尾碼格式。

    • RDS MySQL 5.5的物理備份格式為tar.gz

常見下載問題

  • Q:為什麼下載資料檔案會報錯?

    A:使用wget -c 'https://****.bak.rds.aliyuncs.com/****_xb.qp?****' -O test_xb.qp命令下載時請用2個英文單引號(')將下載地址包裹起來,便於程式識別具體的地址,防止出錯。

2. 解壓備份檔案

請根據備份檔案的實際尾碼,選擇相關命令解壓備份壓縮包。

重要

請參考準備工作章節,先安裝Percona XtraBackupqpress,然後執行以下命令。

xbstream檔案包(_xb.qp尾碼)

執行以下解壓命令時,將test_xb.qp替換為您另存新檔的備份檔案名,/var/mysql_bkdata/替換為您建立的備份解壓路徑。

### MySQL 8.0
qpress -do  test_xb.qp | /u01/xtrabackup80/bin/xbstream -x -v -C /var/mysql_bkdata/

### MySQL 5.5/5.6/5.7
qpress -do  test_xb.qp | xbstream -x -v -C /var/mysql_bkdata/

xbstream檔案包(_qp.xb尾碼)

執行以下解壓命令時,請將test_qp.xb替換為您另存新檔的備份檔案名,/var/mysql_bkdata/替換為您建立的備份解壓路徑。

## 步驟一:解包
cat test_qp.xb | xbstream -x -v -C /var/mysql_bkdata/

## 步驟二:解壓
### MySQL 5.5/5.6/5.7
innobackupex --decompress --remove-original /var/mysql_bkdata/

### MySQL 8.0
/u01/xtrabackup80/bin/xtrabackup --decompress --remove-original --target-dir=/var/mysql_bkdata/

tar壓縮包(.tar.gz尾碼)

執行以下解壓命令時,請將test.tar.gz替換為您另存新檔的備份檔案名,/var/mysql_bkdata/替換為您建立的備份解壓路徑。

tar -izxvf test.tar.gz -C /var/mysql_bkdata/

xbstream壓縮包(.xb.gz尾碼)

執行以下解壓命令時,請將test.xb.gz替換為您另存新檔的備份檔案名,/var/mysql_bkdata/替換為您建立的備份解壓路徑。

### MySQL 8.0
gzip -d -c test.xb.gz | /u01/xtrabackup80/bin/xbstream -x -v -C /var/mysql_bkdata/

### MySQL 5.5/5.6/5.7
gzip -d -c test.xb.gz | xbstream -x -v -C /var/mysql_bkdata/

常見解壓問題

  • Q:下載的備份檔案解壓縮報錯怎麼辦?

    A:請根據如下步驟檢查或處理報錯:

    確認您下載的檔案是否為物理備份檔案。

    請確認壓縮檔儲存的名稱尾碼是否正確(使用URL中包含的檔案名稱尾碼xb.qp.tar.gz.xb.gz_qp.xb)。

    針對不同格式的壓縮檔,請使用本步驟提供的解壓命令。

    常見的報錯如下:

    • 執行解壓命令出現sh: qpress: command not found報錯。

      解決方案:請參考本文前提條件確認您自建庫所在伺服器中是否已安裝解壓工具qpress。

    • 備份檔案類型為xbstream檔案包(_qp.xb 尾碼),執行解壓命令出現innobackupex未找到。

      解決方案:請參考本文前提條件確認您自建庫所在伺服器中是否已安裝Percona XtraBackup。

    • 出現報錯:備份檔案類型為xbstream檔案包(_qp.xb 尾碼),執行cat解包命令出現can't change to dir to xx( errorcode:no such file or directory)報錯。

      解決方案:報錯原因可能是命令中檔案名稱或路徑錯誤引起,請確認檔案名稱和路徑是否正確。

3. 恢複資料

重要

恢複資料庫前,請先停止自建資料庫服務。

您可以使用ps -ef | grep '[m]ysql'命令查看是否存在mysql相關進程,並使用sudo kill -9 <PID>將進程結束。

MySQL 8.0恢複

  1. 恢複前準備。

    /u01/xtrabackup80/bin/xtrabackup --defaults-file=/var/mysql_bkdata/backup-my.cnf  --prepare --target-dir=/var/mysql_bkdata/

    參數解釋:

    參數

    含義

    --defaults-file

    通過傳入設定檔設定MySQL預設選項。

    RDS MySQL備份檔案中,提供名為backup-my.cnf的設定檔,該檔案位於備份解壓目錄,即/var/mysql_bkdata/

    --prepare

    XtraBackup工具的準備命令。

    --target-dir

    備份解壓目錄/var/mysql_bkdata/

  2. 修改自建資料庫的資料目錄(datadir)。

    1. 編輯資料庫設定檔。

      sudo vim /etc/my.cnf

      查詢資料庫設定檔路徑,請參見準備工作

    2. i鍵進入編輯模式,修改datadir的參數取值為/var/mysql_newdata

      datadir = /var/mysql_newdata

      mysql_newdata為自建資料庫的新資料目錄,已在準備工作中建立。

    3. 為新資料目錄授權。

      chown -R mysql:mysql /var/mysql_newdata 
    4. Esc鍵退出編輯模式,輸入:wq!儲存並退出。

  3. 恢複資料。

    sudo xtrabackup --defaults-file=/etc/my.cnf --copy-back --target-dir=/var/mysql_bkdata/

    參數解釋:

    參數

    含義

    --defaults-file

    自建資料庫的my.cnf檔案,根據此設定檔中設定的資料目錄(datadir),擷取恢複資料的目標路徑。

    --copy-back

    XtraBackup工具的恢複命令。

    --target-dir

    備份解壓目錄/var/mysql_bkdata/,XtraBackup工具將此目錄資料恢複到自建資料庫的資料目錄中。

MySQL 5.7恢複

  1. 恢複前準備。

    innobackupex --defaults-file=/var/mysql_bkdata/backup-my.cnf --apply-log /var/mysql_bkdata/

    參數解釋:

    參數

    含義

    --defaults-file

    通過傳入設定檔設定MySQL預設選項。

    RDS MySQL備份檔案中,提供名為backup-my.cnf的設定檔,該檔案位於備份解壓目錄,即/var/mysql_bkdata/

    --apply-log

    XtraBackup工具的準備命令。

    該命令後配置存放備份檔案的目錄,即備份解壓目錄/var/mysql_bkdata/

  2. 修改自建資料庫設定檔my.cnf

    1. 編輯資料庫設定檔。

      sudo vim /etc/my.cnf

      查詢資料庫設定檔路徑,請參見準備工作

    2. i鍵進入編輯模式,修改datadir的參數取值為/var/mysql_newdata

      datadir = /var/mysql_newdata

      mysql_newdata為自建資料庫的新資料目錄,已在準備工作中建立。

    3. my.cnf中添加如下內容。

      innodb_undo_tablespaces=2
      innodb_undo_directory=/var/mysql_newdata
      重要

      參數innodb_undo_tablespaces的取值需要與/var/mysql_bkdata/backup-my.cnf中的取值相同,您可以使用cat /var/mysql_bkdata/backup-my.cnf | grep innodb_undo_tablespaces查詢。

    4. Esc鍵退出編輯模式,輸入:wq!儲存並退出。

  3. 恢複資料。

    sudo innobackupex --defaults-file=/etc/my.cnf --copy-back /var/mysql_bkdata/

    參數解釋:

    參數

    含義

    --defaults-file

    自建資料庫的my.cnf檔案,根據此設定檔中設定的資料目錄(datadir),擷取恢複資料的目標路徑。

    --copy-back

    XtraBackup工具的恢複命令。

    該命令後配置存放備份檔案的目錄,即備份解壓目錄/var/mysql_bkdata/,XtraBackup工具將此目錄資料恢複到自建資料庫的資料目錄中。

MySQL 5.6恢複

  1. 恢複前準備。

    innobackupex --defaults-file=/var/mysql_bkdata/backup-my.cnf --apply-log /var/mysql_bkdata/

    參數解釋:

    參數

    含義

    --defaults-file

    通過傳入設定檔設定MySQL預設選項。

    RDS MySQL備份檔案中,提供名為backup-my.cnf的設定檔,該檔案位於備份解壓目錄,即/var/mysql_bkdata/

    --apply-log

    XtraBackup工具的準備命令。

    該命令後配置存放備份檔案的目錄,即備份解壓目錄/var/mysql_bkdata/

  2. 修改自建資料庫的資料目錄(datadir)。

    1. 編輯資料庫設定檔。

      sudo vim /usr/my.cnf

      查詢資料庫設定檔路徑,請參見準備工作

    2. i鍵進入編輯模式,添加datadir參數。

      datadir = /var/mysql_newdata

      mysql_newdata為自建資料庫的新資料目錄,已在準備工作中建立。

    3. Esc鍵退出編輯模式,輸入:wq!儲存並退出。

  3. 恢複資料。

    sudo innobackupex --defaults-file=/usr/my.cnf --copy-back /var/mysql_bkdata/

    參數解釋:

    參數

    含義

    --defaults-file

    自建資料庫的my.cnf檔案,根據此設定檔中設定的資料目錄(datadir),擷取恢複資料的目標路徑。

    --copy-back

    XtraBackup工具的恢複命令。

    該命令後配置存放備份檔案的目錄,即備份解壓目錄/var/mysql_bkdata/,XtraBackup工具將此目錄資料恢複到自建資料庫的資料目錄中。

MySQL 5.5恢複

  1. 恢複前準備。

    innobackupex --defaults-file=/var/mysql_bkdata/backup-my.cnf --apply-log /var/mysql_bkdata/

    參數解釋:

    參數

    含義

    --defaults-file

    通過傳入設定檔設定MySQL預設選項。

    RDS MySQL備份檔案中,提供名為backup-my.cnf的設定檔,該檔案位於備份解壓目錄,即/var/mysql_bkdata/

    --apply-log

    XtraBackup工具的準備命令。

    該命令後配置存放備份檔案的目錄,即備份解壓目錄/var/mysql_bkdata/

  2. 修改自建資料庫設定檔my.cnf

    1. 編輯資料庫設定檔。

      sudo vim /etc/my.cnf

      查詢資料庫設定檔路徑,請參見準備工作

    2. i鍵進入編輯模式,添加datadir參數。

      datadir = /var/mysql_newdata

      mysql_newdata為自建資料庫的新資料目錄,已在準備工作中建立。

    3. my.cnf中添加如下內容。

      innodb_log_file_size=1048576000
      重要

      參數innodb_log_file_size的取值需要與/var/mysql_bkdata/backup-my.cnf中的取值相同,您可以使用cat /var/mysql_bkdata/backup-my.cnf | grep innodb_log_file_size查詢。

    4. Esc鍵退出編輯模式,輸入:wq!儲存並退出。

  3. 恢複資料。

    sudo innobackupex --defaults-file=/etc/my.cnf --copy-back /var/mysql_bkdata/

    參數解釋:

    參數

    含義

    --defaults-file

    自建資料庫的my.cnf檔案,根據此設定檔中設定的資料目錄(datadir),擷取恢複資料的目標路徑。

    --copy-back

    XtraBackup工具的恢複命令。

    該命令後配置存放備份檔案的目錄,即備份解壓目錄/var/mysql_bkdata/,XtraBackup工具將此目錄資料恢複到自建資料庫的資料目錄中。

常見恢複問題

  • Q:系統返回報錯xtrabackup: Unknown error 3613,如何處理?

    A:請將Percona XtraBackup更新到最新版本後再次嘗試。

  • Q:系統返回報錯Original data directory /var/mysql_newdata is not empty!,如何處理?

    A:使用sudo rm -rf /var/mysql_newdata/*命令清空檔案夾內檔案,然後在重新執行恢複操作。

  • Q:系統返回報錯InnodDB: Encryption information in datafile: ./xxx.ibd can't be decrypted, please check if a keyring plugin is loaded and initialized successfully.,如何處理?

    請檢查執行個體是否開啟了TDE加密:

    • 如果開啟了TDE加密,請確認是否存在加密過的表,請參見本文前提條件,先對已加密的表執行設定透明資料加密TDE,然後重新根據本文操作指引進行恢複。

    • 如果未開啟TDE加密,請確保您的Percona XtraBackup版本正確,請參見準備工作安裝。

  • Q:已下載的備份檔案發現存在TDE加密的資料,導致恢複資料出錯,有什麼解決辦法?

    A:該情況下無法基於已下載的加密的備份檔案進行恢複。RDS執行個體中如果存在加密過的表,會導致恢複過程出錯。請參見本文前提條件,先對已加密的表執行設定透明資料加密TDE,然後重新根據本文操作指引進行恢複。

  • Q:恢複時報錯innobackupex: File 'undo001' not found (Errcode: 2 - No Such file or directory)如何處理?

    A:undo檔案為系統檔案,不同版本資料庫間存在差異,請檢查本地自建資料庫的版本是否與RDS MySQL資料庫版本一致。

4. 啟動資料庫

MySQL 8.0、5.7啟動

  1. (可選)在RDS MySQL管理主控台中查看執行個體參數lower_case_table_names的取值,如果取值為1,則需要修改自建資料庫設定檔my.cnf

    1. 編輯資料庫設定檔。

      sudo vim /etc/my.cnf

      查詢資料庫設定檔路徑,請參見準備工作

    2. i進入編輯模式,添加如下內容。

      lower_case_table_names=1
    3. Esc鍵退出編輯模式,輸入:wq!儲存並退出。

  2. 資料目錄授權。

    sudo chown -R mysql:mysql /var/mysql_newdata
  3. 執行如下命令,啟動MySQL進程。

    sudo mysqld --defaults-file=/etc/my.cnf --user=mysql --datadir=/var/mysql_newdata &

    參數解釋:

    參數

    含義

    --defaults-file

    自建資料庫的設定檔路徑。本文以/etc/my.cnf為例,您可以參考準備工作,確認資料庫的設定檔路徑。

    --user

    啟動資料庫的使用者。固定為mysql,無需修改。

    --datadir

    啟動資料庫使用的資料目錄。本文以/var/mysql_newdata為例,您可以參考準備工作,確認資料庫的資料目錄。

MySQL 5.6啟動

  1. (可選)在RDS MySQL管理主控台中查看執行個體參數lower_case_table_names的取值,如果取值為1,則需要修改自建資料庫設定檔my.cnf

    1. 編輯資料庫設定檔。

      sudo vim /usr/my.cnf

      查詢資料庫設定檔路徑,請參見準備工作

    2. i進入編輯模式,添加如下內容。

      lower_case_table_names=1
    3. Esc鍵退出編輯模式,輸入:wq!儲存並退出。

  2. 資料目錄授權。

    sudo chown -R mysql:mysql /var/mysql_newdata
  3. 執行如下命令,啟動MySQL進程。

    sudo mysqld --defaults-file=/usr/my.cnf --user=mysql --datadir=/var/mysql_newdata &

    參數

    含義

    --defaults-file

    自建資料庫的設定檔路徑。本文以/usr/my.cnf為例,您可以參考準備工作,確認資料庫的設定檔路徑。

    --user

    啟動資料庫的使用者。固定為mysql,無需修改。

    --datadir

    啟動資料庫使用的資料目錄。本文以/var/mysql_newdata為例,您可以參考準備工作,確認資料庫的資料目錄。

MySQL 5.5啟動

  1. 資料目錄授權。

    sudo chown -R mysql:mysql /var/mysql_newdata
  2. 執行如下命令,啟動MySQL進程。

    sudo mysqld --defaults-file=/etc/my.cnf --user=mysql --datadir=/var/mysql_newdata &

    參數

    含義

    --defaults-file

    自建資料庫的設定檔路徑。本文以/etc/my.cnf為例,您可以參考準備工作,確認資料庫的設定檔路徑。

    --user

    啟動資料庫的使用者。固定為mysql,無需修改。

    --datadir

    啟動資料庫使用的資料目錄。本文以/var/mysql_newdata為例,您可以參考準備工作,確認資料庫的資料目錄。

常見啟動問題

  • Q:Ubuntu作業系統報錯mysqld: [ERROR] Failed to open required defaults file: /etc/my.cnf,是為什麼,怎麼處理?

    A:該報錯是由Ubuntu內建安全程式AppArmor導致的,請使用apt install -y apparmor-utilsaa-complain /usr/sbin/mysqld命令修改AppArmor設定。

  • Q:恢複完成後,無法啟動自建庫或在使用自建庫的過程中遇到error 1105 Unknown error錯誤怎麼辦?

    A:執行如下SQL語句轉換資料庫儲存引擎即可:

    USE mysql;
    ALTER TABLE proc engine=myisam;
    ALTER TABLE event engine=myisam;
    ALTER TABLE func engine=myisam;
    說明

    如果執行上述語句報錯ERROR 1067 (42000): Invalid default value for 'modified',請先執行SET SQL_MODE='ALLOW_INVALID_DATES';語句。

  • Q:資料庫恢複後,root密碼是多少?

    A:根據版本不同,root密碼擷取方法如下:

    • 如果您的執行個體版本為MySQL 5.7或8.0,則root密碼即自建庫的root密碼。

    • 如果您的執行個體版本為MySQL 5.5或5.6,需要重設root密碼方可正常使用。更多資訊,請參見官方文檔

  • Q:啟動時報錯InnodDB: Assertion failure in thread 140xxx in file page0zip.icne xxx,如何處理?

    A:造成該報錯的原因可能是系統磁碟空間不足,您可以嘗試擴容自建資料庫所在伺服器的磁碟後,再進行嘗試。

  • Q:啟動時報錯[ERROR] Failed to open the relay log xxx[ERROR] Slave: Failed to initialize the master info xxx[ERROR] Failed to create or recover replication info repositories.,如何處理?

    A:該報錯是由於RDS執行個體為高可用,而本地自建資料庫不涉及主備節點而導致的,不影響資料庫啟動,無需關注。

  • Q:啟動時報錯[ERROR] Data Dictionary initialization failed如何處理?

    A:該報錯可能由作業系統不相容導致,RDS底層作業系統為Linux,建議使用Linux作業系統恢複資料庫,不同作業系統恢複可能會有版本相容問題。

  • Q:使用sudo systemctl start mysqld啟動本地MySQL失敗,如何處理?

    A:可能由於Linux系統的SELinux為強制模式(Enforcing mode)引起。通過getenforce命令可以查看SELinux的目前狀態。

    • 如果是開發或測試環境,建議將SELinux模式修改為許可模式(Permissive mode)後,再嘗試使用sudo systemctl start mysqld啟動MySQL。

    • 如果是生產環境,建議詳細檢查 SELinux日誌確認MySQL無法啟動的具體原因,並根據這些資訊修複SELinux策略。

5. 串連資料庫並驗證

  1. 執行如下命令,登入MySQL資料庫以驗證進程啟動成功。

    mysql -u<源RDS MySQL執行個體帳號> -p<對應密碼>
    說明
    • 該登入命令用於驗證恢複成功。若僅需查看錶資料,確保帳號有查詢許可權即可。

    • 若忘記帳號或密碼,請在執行啟動MySQL進程命令時,傳入--skip-grant-tables參數,進程啟動後會忽略許可權檢查,允許無需賬戶密碼登入資料庫。登入成功後,您可以重新設定帳號和密碼。

  2. 執行如下命令,查看是否有RDS MySQL執行個體中的資料庫。

    SHOW DATABASES;

常見串連及驗證問題

  • Q:為什麼阿里雲物理備份還原到自建MySQL上以後,資料的時間欄位和本地時間不一致?怎樣才能保持時間一致?

    A:如果自建庫的時區與RDS執行個體的時區不一致,則需要修改自建庫的time_zone參數,使其與RDS執行個體的time_zone參數一致。如果RDS執行個體的time_zone參數值為system,則需查看RDS執行個體所在的地區,並將自建庫的time_zone設定為該地區的時區。

  • Q:串連自建資料庫時報錯Access denied for user 'XXX',如何處理?

    A:請檢查RDS MySQL執行個體帳號或密碼是否正確,使用的帳號和密碼為RDS中建立的帳號和密碼。

  • Q:串連自建資料庫時,忘記密碼了怎麼辦?

    A:若忘記帳號或密碼,請在執行啟動MySQL進程命令時,傳入--skip-grant-tables參數,進程啟動後會忽略許可權檢查,允許無需賬戶密碼登入資料庫。請注意,使用--skip-grant-tables參數存在安全風險,建議在登入成功後立即修改帳號和密碼。

  • Q:串連自建資料庫後,只看到系統庫或部分資料庫怎麼處理?

    A:請重啟資料庫後,使用root帳號或原RDS執行個體中的高許可權帳號串連資料庫查看。

相關文檔

其他常見問題

下載的RDS MySQL備份能恢複到另一個RDS MySQL執行個體上嗎?

暫不支援此操作。如需恢複到另一個執行個體中,您可以:

如何恢複指定時間段的資料到自建資料庫?

您可以在控制台下載指定時間段的記錄備份並恢複到自建庫。詳情請參見下載備份按時間點恢複資料

如何將MySQL執行個體的資料備份到自建資料庫?

基礎系列執行個體的備份怎麼恢複或遷移呢?

基礎系列執行個體僅支援快照備份,您可以使用以下方法:

可以將多個RDS MySQL的物理備份恢複到一個自建資料庫中嗎?

暫不支援此操作,您可以分別恢複到多個自建資料庫,然後使用DTS或mysqldump進行資料移轉。詳情請參見使用DTS將自建MySQL遷移至RDS MySQL使用mysqldump遷移MySQL資料

後端建立一個高許可權帳號,通過物理備份到本地後,該帳號是否仍有高許可權?

是的,原庫帳號許可權不受備份影響。