使用佩爾科納 XtraBackup 和 Amazon S3 從 MySQL 進行物理遷移 - Amazon Aurora

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用佩爾科納 XtraBackup 和 Amazon S3 從 MySQL 進行物理遷移

您可以從來源 MySQL 5.7 或 8.0 版資料庫將完整和增量備份檔案複製到 Amazon S3 儲存貯體。然後,您可以從這些檔案還原到具有相同主要資料庫引擎版本的 Amazon Aurora MySQL 資料庫叢集。

此選項比使用 mysqldump 來遷移資料快得多,因為使用 mysqldump 會重新執行所有命令,在新的 Aurora MySQL 資料庫叢集中重新建立來源資料庫的結構描述和資料。經由複製來源 MySQL 資料檔案,Aurora MySQL 可以立即使用這些檔案做為 Aurora MySQL 資料庫叢集的資料。

此外,您還可以在遷移過程中使用二進位日誌複寫來盡可能縮短停機時間。如果您使用二進位日誌複寫,則當資料正在遷移至 Aurora MySQL 資料庫叢集時,外部 MySQL 資料庫仍然可能發生交易。建立 Aurora MySQL 資料庫叢集之後,您可以使用二進位日誌複寫,以同步 Aurora MySQL 資料庫叢集與備份之後發生的交易。當 Aurora MySQL 資料庫叢集與 MySQL 資料庫達到同步時,請完全切換至 Aurora MySQL 資料庫叢集來處理新交易,以便完成遷移。如需詳細資訊,請參閱 使用複寫來同步 Amazon Aurora MySQL 資料庫叢集與 MySQL 資料庫

限制及考量

從 Amazon S3 儲存貯體還原至 Amazon Aurora MySQL 資料庫叢集時,須注意下列限制和考量:

  • 您只能將資料遷移至新的資料庫叢集,而非現有資料庫叢集。

  • 您必須使用 Percona XtraBackup 將資料備份到 S3。如需詳細資訊,請參閱 安裝佩爾科納 XtraBackup

  • Amazon S3 儲存貯體和 Aurora MySQL 資料庫叢集必須位於相同 AWS 區域。

  • 您無法從以下項目還原:

    • 從資料庫叢集快照匯出還原至 Amazon S3。您無法將資料從資料庫叢集快照匯出遷移到 S3 儲存貯體。

    • 加密的來源資料庫,但可以加密要遷移的資料。您也可以在遷移過程中維持不加密資料。

    • MySQL 5.5 或 5.6 資料庫

  • 不支持 MySQL 的 Percona 服務器作為源數據庫,因為它可以包含mysql模式中的compression_dictionary*表。

  • 您無法還原至 Aurora Serverless 資料庫叢集。

  • 主要版本或次要版本都不支援回溯遷移。例如,您無法從 MySQL 8.0 版遷移至 Aurora MySQL 第 2 版 (與 MySQL 5.7 相容),也無法從 MySQL 8.0.32 版遷移至 Aurora MySQL 3.03 版 (與 MySQL Community 8.0.26 版相容)。

  • 您無法從某些舊版 MySQL 8.0 版本 (包括 8.0.11、8.0.13 和 8.0.15) 遷移到 Aurora MySQL 版本 3.05 及更高版本。建議您在遷移之前,先升級至 MySQL 8.0.28 版。

  • db.t2.micro 資料庫執行個體類別上不支援從 Amazon S3 匯入。不過,您可以先還原至不同的資料庫執行個體類別,稍後再變更資料庫執行個體類別。如需資料庫執行個體類別的詳細資訊,請參閱 Amazon Aurora 數據庫實例類

  • Amazon S3 對上傳至 S3 儲存貯體的檔案大小限制為 5 TB。如果備份檔案超過 5 TB,您必須將備份檔案分割為較小的檔案。

  • Amazon RDS 隊上傳至 S3 儲存貯體的檔案數量限制為 1 百萬個。如果資料庫的備份資料 (包括所有完整和增量備份) 超過 1 百萬個檔案,請使用 Gzip (.gz)、tar (.tar.gz) 或 Percona xbstream (.xbstream) 檔案將完整和增量備份檔案儲存在 S3 儲存貯體中。佩科納 XtraBackup 8.0 僅支持用於壓縮的帕科納 xbstream。

  • 若要為每個資料庫叢集提供管理服務,建立資料庫執行個體時,系統會一併建立 rdsadmin 使用者。由於這是 RDS 中預留的使用者,因此適用以下限制:

  • 對於 Aurora MySQL 第 3 版,不會匯入動態權限。Aurora 支援的動態權限可在遷移後匯入。如需詳細資訊,請參閱 Aurora MySQL 第 3 版中的動態權限

  • 不會遷移 mysql 結構描述中使用者建立的資料表。

  • innodb_data_file_path 參數只能使用一個資料檔案 (預設資料檔案名稱 ibdata1:12M:autoextend) 來設定。具有兩個資料檔或具有不同名稱之資料檔的資料庫無法使用此方法移轉。

    以下是不允許的檔案名稱範例:innodb_data_file_path=ibdata1:50Mibdata2:50M:autoextendinnodb_data_file_path=ibdata01:50M:autoextend

  • 如果來源資料庫有資料表是在預設 MySQL 資料目錄外定義,您無法從這個來源資料庫遷移。

  • 使用此方法可支援的最大未壓縮備份大小目前限制為 64 TiB。對於壓縮備份,此限制會降低以考量未壓縮空間需求。在這種情況下,支援的最大備份大小為 (64 TiB – compressed backup size)。

  • Aurora MySQL 不支援匯入 MySQL 及其他外部元件和外掛程式。

  • Aurora MySQL 不會從資料庫還原任何內容。建議您從來源 MySQL 資料庫儲存資料庫結構描述和下列項目的值,然後在還原的 Aurora MySQL 資料庫叢集建立之後,將這些項目新增至其中:

開始之前

您必須執行下列動作,才能將資料複製到 Amazon S3 儲存貯體,並從這些檔案還原至資料庫叢集:

  • 在本地服務器 XtraBackup 上安裝 Percona。

  • 允許 Aurora MySQL 代替您存取 Amazon S3 儲存貯體。

安裝佩爾科納 XtraBackup

Amazon Aurora 可以從使用 Percona XtraBackup 建立的檔案還原資料庫叢集。您可以 XtraBackup 從軟件下載-佩爾科納安裝 Per cona。

對於 MySQL 5.7 遷移,請使用佩科納 XtraBackup 2.4。

對於 MySQL 8.0 遷移,請使用佩科納 XtraBackup 8.0。確保 Percona XtraBackup 版本與源數據庫的引擎版本兼容。

所需的許可

若要將 MySQL 資料遷移至 Amazon Aurora MySQL 資料庫叢集,需要具備幾種許可:

  • 要求 Aurora 從 Amazon S3 儲存貯體建立新叢集的使用者必須擁有列出 AWS 帳戶儲存貯體的權限。您可以使用 AWS Identity and Access Management (IAM) 政策授予使用者此權限。

  • Aurora 需要許可來代表您存取 Amazon S3 儲存貯體,其中存放用來建立 Amazon Aurora MySQL 資料庫叢集的檔案。您需要使用 IAM 服務角色將必要許可授予 Aurora。

  • 提出請求的使用者也必須具備許可才能列出 AWS 帳戶的 IAM 角色。

  • 如果提出請求的使用者想要建立 IAM 服務角色,或要求 Aurora 建立 IAM 服務角色 (使用主控台),則該使用者必須具備許可才能為您的 AWS 帳戶建立 IAM 角色。

  • 如果您計劃在移轉程序期間加密資料,請更新將執行移轉之使用者的 IAM 政策,以授與 RDS 存取 AWS KMS keys 用於加密備份的資料。如需說明,請參閱建立 IAM 政策來存取 AWS KMS 資源

例如,下列 IAM 政策將最低必要許可授予使用者,讓使用者可利用主控台來列出 IAM 角色、建立 IAM 角色、列出您帳戶的 Amazon S3 儲存貯體,以及列出 KMS 金鑰。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:ListRoles", "iam:CreateRole", "iam:CreatePolicy", "iam:AttachRolePolicy", "s3:ListBucket", "kms:ListKeys" ], "Resource": "*" } ] }

此外,若要讓使用者將 IAM 角色與 Amazon S3 儲存貯體相關聯,IAM 使用者必須具備該 IAM 角色的 iam:PassRole 許可。此許可允許管理員限制使用者可將哪些 IAM 角色與 Amazon S3 儲存貯體建立關聯。

例如,下列 IAM 政策可讓使用者將名為 S3Access 的角色與 Amazon S3 儲存貯體建立關聯。

{ "Version":"2012-10-17", "Statement":[ { "Sid":"AllowS3AccessRole", "Effect":"Allow", "Action":"iam:PassRole", "Resource":"arn:aws:iam::123456789012:role/S3Access" } ] }

如需 IAM 使用者許可的詳細資訊,請參閱 使用政策管理存取權

建立 IAM 服務角色

您可以選擇「 AWS Management Console 創建新角色」選項(本主題稍後顯示)來為您創建角色。如果您選取此選項並指定新角色的名稱,Aurora 會建立必要的 IAM 服務角色,讓 Aurora 能夠存取您提供其名稱的 Amazon S3 儲存貯體。

或者,您也可以使用下列程序來手動建立角色。

為 Aurora 建立 IAM 角色以存取 Amazon S3
  1. 完成「建立存取 Amazon S3 資源的IAM政策」中的步驟。

  2. 完成「建立 IAM 角色以允許 Amazon Aurora 存取 AWS 服務」中的步驟。

  3. 完成「將 IAM 角色與 Amazon Aurora MySQL 資料庫叢集建立關聯」中的步驟。

備份要還原為 Amazon Aurora MySQL 資料庫叢集的檔案

您可以使用 Percona 建立 MySQL 資料庫檔案的完整備份, XtraBackup 並將備份檔案上傳到 Amazon S3 儲存貯體。或者,如果您已使用 Percona 備份 MySQL 資料庫檔案,則可以 XtraBackup 將現有的完整備份和增量備份目錄和檔案上傳到 Amazon S3 儲存貯體。

使用佩爾科納創建完整備份 XtraBackup

若要為可從 Amazon S3 還原的 MySQL 資料庫檔案建立完整備份以建立 Aurora MySQL 資料庫叢集,請使用 Percona XtraBackup 公用程式 (xtrabackup) 來備份您的資料庫。

例如,下列命令會建立 MySQL 資料庫的備份,並將檔案存放在 /on-premises/s3-restore/backup 資料夾中。

xtrabackup --backup --user=<myuser> --password=<password> --target-dir=</on-premises/s3-restore/backup>

如果要將備份壓縮成單一檔案 (需要時可以分割),您可以使用 --stream 選項將備份儲存為下列其中一種格式:

  • Gzip (.gz)

  • tar (.tar)

  • Percona xbstream (.xbstream)

下列命令建立 MySQL 資料庫的備份,並分割成多個 Gzip 檔案。

xtrabackup --backup --user=<myuser> --password=<password> --stream=tar \ --target-dir=</on-premises/s3-restore/backup> | gzip - | split -d --bytes=500MB \ - </on-premises/s3-restore/backup/backup>.tar.gz

下列命令建立 MySQL 資料庫的備份,並分割成多個 tar 檔案。

xtrabackup --backup --user=<myuser> --password=<password> --stream=tar \ --target-dir=</on-premises/s3-restore/backup> | split -d --bytes=500MB \ - </on-premises/s3-restore/backup/backup>.tar

下列命令建立 MySQL 資料庫的備份,並分割成多個 xbstream 檔案。

xtrabackup --backup --user=<myuser> --password=<password> --stream=xbstream \ --target-dir=</on-premises/s3-restore/backup> | split -d --bytes=500MB \ - </on-premises/s3-restore/backup/backup>.xbstream
注意

如果您看到下列錯誤,可能是因為在命令中混合檔案格式所致:

ERROR:/bin/tar: This does not look like a tar archive

使用 Percona XtraBackup 公用程式備份 MySQL 資料庫後,您可以將備份目錄和檔案複製到 Amazon S3 儲存貯體。

如需有關建立檔案並上傳至 Amazon S3 儲存貯體的資訊,請參閱 Amazon S3 入門指南中的 Amazon Simple Storage Service 入門

搭配佩爾科納使用增量備份 XtraBackup

Amazon Aurora MySQL 支援使用 Percona XtraBackup 建立的完整備份和增量備份。如果您已使用 Percona XtraBackup 對 MySQL 資料庫檔案執行完整和增量備份,則不需要建立完整備份並將備份檔案上傳到 Amazon S3。反之,您可以將完整和增量備份的現有備份目錄及檔案複製到 Amazon S3 儲存貯體,以節省大量時間。如需詳細資訊,請參閱 Percona 網站上的 Create an incremental backup (建立增量備份)。

將現有的完整和增量備份檔案複製到 Amazon S3 儲存貯體時,您必須遞迴複製基本目錄的內容。這些內容包括完整備份,以及所有增量備份目錄和檔案。此副本必須保留 Amazon S3 儲存貯體中的目錄結構。Aurora 會逐一查看所有檔案和目錄。Aurora 使用包含在每個增量備份中的 xtrabackup-checkpoints 檔案,以識別基本目錄,以及依記錄序號 (LSN) 範圍來排序增量備份。

如需有關建立檔案並上傳至 Amazon S3 儲存貯體的資訊,請參閱 Amazon S3 入門指南中的 Amazon Simple Storage Service 入門

備份考量

Aurora 不支援使用 Percona XtraBackup 建立的部分備份。當您備份資料庫的來源檔案時,您無法使用 --tables--tables-exclude--tables-file--databases--databases-exclude--databases-file 選項來建立局部備份。

如需有關使用 Percona 備份資料庫的詳細資訊 XtraBackup,請參閱 Percona XtraBackup -Percona 網站上的文件與使用二進位記錄

Aurora 支援使用佩爾科納 XtraBackup建立的增量備份。如需詳細資訊,請參閱 Percona 網站上的 Create an incremental backup (建立增量備份)。

Aurora 根據檔案名稱來取用備份檔案。務必根據檔案格式,以適當副檔案名稱來命名備份檔案 — 例如,使用 Percona xbstream 格式儲存的檔案應該採用 .xbstream 副檔案名稱。

Aurora 依字母順序和自然數順序來取用備份檔案。發出 split 命令時,一律使用 xtrabackup 選項,以確保依適當順序寫入和命名備份檔案。

Amazon S3 將上傳至 Amazon S3 儲存貯體的檔案大小限制為 5 TB。如果資料庫的備份資料超過 5 TB,請使用 split 命令將備份檔案分割成多個小於 5 TB 的檔案。

Aurora 將上傳至 Amazon S3 儲存貯體的來源檔案數量限制為 1 百萬個檔案。在某些情況下,資料庫的備份資料 (包括所有完整和增量備份) 可能包含大量檔案。在這些情況下,請使用 tarball (.tar.gz) 檔案將完整和增量備份檔案存放在 Amazon S3 儲存貯體中。

當您將檔案上傳至 Amazon S3 儲存貯體時,您可以使用伺服器端加密將資料加密。您之後就可以從這些加密的檔案還原 Amazon Aurora MySQL 資料庫叢集。Amazon Aurora MySQL 可以使用經過以下幾種伺服器端加密來還原有加密檔案的資料庫叢集:

  • 伺服器端加密搭配 Amazon S3 管理的金鑰 (SSE-S3) – 以採用強式多重因素加密的唯一金鑰來加密每個物件。

  • 使用 AWS KMS—Managed 金鑰 (SSE-KMS) 進行伺服器端加密 — 與 SSE-S3 類似,但您可以選擇自行建立和管理加密金鑰,以及其他差異。

如需將檔案上傳至 Amazon S3 儲存貯體時使用伺服器端加密的相關資訊,請參閱《Amazon S3 開發人員指南》中的使用伺服器端加密保護資料

從 Amazon S3 儲存貯體還原 Amazon Aurora MySQL 資料庫叢集

您可以使用 Amazon RDS 主控台,從 Amazon S3 儲存貯體還原備份檔案,以建立新的 Amazon Aurora MySQL 資料庫叢集。

從 Amazon S3 儲存貯體上的檔案還原 Amazon Aurora MySQL 資料庫叢集
  1. 登入 AWS Management Console 並開啟 Amazon RDS 主控台,網址為 https://console.aws.amazon.com/rds/

  2. 在 Amazon RDS 主控台的右上角,選擇要在其中建立資料庫叢集的 AWS 區域。選擇與包含資料庫備份的 Amazon S3 儲存貯體相同的 AWS 區域。

  3. 在導覽窗格中,選擇 Databases (資料庫),然後選擇 Restore from S3 (從 S3 還原)。

  4. 選擇 Restore From S3 (從 S3 還原)

    系統會顯示 Create database by restoring from S3 (從 S3 還原以建立資料庫) 頁面。

    您可以在該頁面上指定從 S3 還原資料庫叢集的詳細資訊
  5. S3 目的地 下:

    1. 選擇包含備份檔案的 S3 儲存貯體

    2. (選用) 在 S3 folder path prefix (S3 資料夾路徑字首) 中,針對存放在 Amazon S3 儲存貯體中的檔案,輸入檔案路徑字首。

      如果不指定字首,RDS 會使用 S3 儲存貯體之根資料夾中的所有檔案和資料夾來建立資料庫執行個體。如果指定字首,RDS 會使用 S3 儲存貯體中的檔案和資料夾來建立資料庫執行個體,而且檔案的路徑以指定的字首開頭。

      例如,假設您將備份檔案儲存在 S3 中的一個名為 backups 的子資料夾,而且有多組備份檔案,各存放於自己的目錄中 (gzip_backup1、gzip_backup2 等等)。在此例子中,指定字首 backups/gzip_backup1,即可從 gzip_backup1 資料夾中的檔案還原。

  6. Engine options (引擎選項)

    1. 針對 Engine type (引擎類型),請選擇 Amazon Aurora

    2. 針對 Version (版本),請為已還原的資料庫執行個體選擇 Aurora MySQL 引擎版本。

  7. 針對 IAM Role (IAM 角色),您可以選擇現有的 IAM 角色。

  8. (選用) 您也可以選擇 Create a new role (建立新角色),讓系統為您建立新的 IAM 角色。若是如此:

    1. 請輸入 IAM role name (IAM 角色名稱)。

    2. 請選擇是否 Allow access to KMS key (允許存取 KMS 金鑰):

      • 如果您未加密備份檔案,請選擇 No (否)

      • 如果您將備份檔案上傳送至 Amazon S3 時以 AES-256 (SSE-S3) 加密,請選擇 No (否)。在此情況下,資料會自動解密。

      • 如果您在將備份檔案上傳到 Amazon S3 時使用 AWS KMS (SSE-KMS) 伺服器端加密,請選擇是。接下來,為 AWS KMS key選擇正確的 KMS 金鑰。

        這會 AWS Management Console 建立一個 IAM 政策,讓 Aurora 能夠解密資料。

      如需詳細資訊,請參閱《Amazon S3 開發人員指南》中的使用伺服器端加密保護資料

  9. 選擇資料庫叢集的設定,例如資料庫叢集儲存組態、資料庫執行個體類別、資料庫叢集識別符,以及登入憑證。如需每項設定的相關資訊,請參閱 Aurora 資料庫叢集的設定

  10. 視需為您的 Aurora MySQL 資料庫叢集自訂其他設定。

  11. 選擇 Create database (建立資料庫),以啟動 Aurora 資料庫執行個體。

在 Amazon RDS 主控台上,新的資料庫執行個體會顯示在資料庫執行個體清單中。在資料庫執行個體建立完成且可供使用之前,資料庫執行個體會處於 Creating (建立中) 狀態。狀態變更為 Available (可用) 時,您便能連接到資料庫叢集的主執行個體。視資料庫執行個體類別和分配的存放區而定,新的執行個體可能需要幾分鐘才能使用。

若要檢視新建立的叢集,請在 Amazon RDS 主控台中選擇 Databases (資料庫) 檢視,然後選擇資料庫叢集。如需更多詳細資訊,請參閱 檢視 Amazon Aurora 資料庫叢集

Amazon Aurora 資料庫執行個體清單

請記下資料庫叢集的連接埠和寫入器端點。您可以針對任何會執行寫入或讀取操作的應用程式,在 JDBC 和 ODBC 連線字串中使用資料庫叢集的寫入器端點和連接埠。

使用複寫來同步 Amazon Aurora MySQL 資料庫叢集與 MySQL 資料庫

若要在遷移過程中將停機情況降到最低或完全不停機,您可以將 MySQL 資料庫上已認可的交易複寫至 Aurora MySQL 資料庫叢集。複寫可讓資料庫叢集與遷移期間在 MySQL 資料庫上發生的交易達到同步。當資料庫叢集完全同步時,您就可以停止複寫,完成遷移至 Aurora MySQL。

針對加密複寫來設定外部 MySQL 資料庫和 Aurora MySQL 資料庫叢集

若要安全地複寫資料,您可以使用加密複寫。

注意

如果不需要使用加密複寫,您可以略過這些步驟,並前往同步 Amazon Aurora MySQL 資料庫叢集與外部 MySQL 資料庫中的指示。

下列是使用加密複寫的先決條件:

  • 必須在外部 MySQL 主要資料庫上啟用 Secure Sockets Layer (SSL)。

  • 必須為 Aurora MySQL 資料庫叢集準備用戶端金鑰和用戶端憑證。

在加密複寫期間,Aurora MySQL 資料庫叢集充當 MySQL 資料庫伺服器的用戶端。Aurora MySQL 用戶端的憑證和金鑰位於 .pem 格式的檔案中。

針對加密複寫來設定外部 MySQL 資料庫和 Aurora MySQL 資料庫叢集
  1. 確保您已準備好進行加密複寫:

    • 如果您在外部 MySQL 主要資料庫上未啟用 SSL,也沒有準備用戶端金鑰和用戶端憑證,請在 MySQL 資料庫伺服器上啟用 SSL,並產生所需的用戶端金鑰和用戶端憑證。

    • 如果外部主要資料庫上已啟用 SSL,請為 Aurora MySQL 資料庫叢集提供用戶端金鑰和憑證。如果您沒有這些資料,請為 Aurora MySQL 資料庫叢集產生新的金鑰和憑證。若要簽署用戶端憑證,您必須有用於外部 MySQL 主要資料庫上設定 SSL 的憑證授權單位金鑰。

    如需詳細資訊,請參閱 MySQL 文件中的使用 openssl 建立 SSL 憑證和金鑰

    您需要憑證授權單位憑證、用戶端金鑰和用戶端憑證。

  2. 使用 SSL 以主要使用者的身分連接至 Aurora MySQL 資料庫叢集。

    如需以 SSL 連接至 Aurora MySQL 資料庫叢集的相關資訊,請參閱TLS Aurora MySQL 資料庫叢集的連線

  3. 執行 mysql.rds_import_binlog_ssl_material 預存程序將 SSL 資訊匯入 Aurora MySQL 資料庫叢集。

    對於 ssl_material_value 參數,將 Aurora MySQL 資料庫叢集之 .pem 格式檔案中的資訊,插入正確的 JSON 承載中。

    下列範例將 SSL 資訊匯入 Aurora MySQL 資料庫叢集。在 .pem 格式檔案中,內文程式碼通常比範例所示的內文程式碼更長。

    call mysql.rds_import_binlog_ssl_material( '{"ssl_ca":"-----BEGIN CERTIFICATE----- AAAAB3NzaC1yc2EAAAADAQABAAABAQClKsfkNkuSevGj3eYhCe53pcjqP3maAhDFcvBS7O6V hz2ItxCih+PnDSUaw+WNQn/mZphTk/a/gU8jEzoOWbkM4yxyb/wB96xbiFveSFJuOp/d6RJhJOI0iBXr lsLnBItntckiJ7FbtxJMXLvvwJryDUilBMTjYtwB+QhYXUMOzce5Pjz5/i8SeJtjnV3iAoG/cQk+0FzZ qaeJAAHco+CY/5WrUBkrHmFJr6HcXkvJdWPkYQS3xqC0+FmUZofz221CBt5IMucxXPkX4rWi+z7wB3Rb BQoQzd8v7yeb7OzlPnWOyN0qFU0XA246RA8QFYiCNYwI3f05p6KLxEXAMPLE -----END CERTIFICATE-----\n","ssl_cert":"-----BEGIN CERTIFICATE----- AAAAB3NzaC1yc2EAAAADAQABAAABAQClKsfkNkuSevGj3eYhCe53pcjqP3maAhDFcvBS7O6V hz2ItxCih+PnDSUaw+WNQn/mZphTk/a/gU8jEzoOWbkM4yxyb/wB96xbiFveSFJuOp/d6RJhJOI0iBXr lsLnBItntckiJ7FbtxJMXLvvwJryDUilBMTjYtwB+QhYXUMOzce5Pjz5/i8SeJtjnV3iAoG/cQk+0FzZ qaeJAAHco+CY/5WrUBkrHmFJr6HcXkvJdWPkYQS3xqC0+FmUZofz221CBt5IMucxXPkX4rWi+z7wB3Rb BQoQzd8v7yeb7OzlPnWOyN0qFU0XA246RA8QFYiCNYwI3f05p6KLxEXAMPLE -----END CERTIFICATE-----\n","ssl_key":"-----BEGIN RSA PRIVATE KEY----- AAAAB3NzaC1yc2EAAAADAQABAAABAQClKsfkNkuSevGj3eYhCe53pcjqP3maAhDFcvBS7O6V hz2ItxCih+PnDSUaw+WNQn/mZphTk/a/gU8jEzoOWbkM4yxyb/wB96xbiFveSFJuOp/d6RJhJOI0iBXr lsLnBItntckiJ7FbtxJMXLvvwJryDUilBMTjYtwB+QhYXUMOzce5Pjz5/i8SeJtjnV3iAoG/cQk+0FzZ qaeJAAHco+CY/5WrUBkrHmFJr6HcXkvJdWPkYQS3xqC0+FmUZofz221CBt5IMucxXPkX4rWi+z7wB3Rb BQoQzd8v7yeb7OzlPnWOyN0qFU0XA246RA8QFYiCNYwI3f05p6KLxEXAMPLE -----END RSA PRIVATE KEY-----\n"}');

    如需詳細資訊,請參閱 mysql.rds_import_binlog_ssl_materialTLS Aurora MySQL 資料庫叢集的連線

    注意

    執行程序之後,密碼會儲存在檔案中。若稍後要清除這些檔案,您可以執行 mysql.rds_remove_binlog_ssl_material 預存程序。

同步 Amazon Aurora MySQL 資料庫叢集與外部 MySQL 資料庫

您可以使用複寫來同步 Amazon Aurora MySQL 資料庫叢集與 MySQL 資料庫。

使用複寫來同步 Aurora MySQL 資料庫叢集與 MySQL 資料庫
  1. 請確定外部 MySQL 資料庫的 /etc/my.cnf 檔案有相關的項目。

    如果不需要加密複寫,則啟動外部 MySQL 資料庫時,務必啟用二進位日誌 (binlog) 並停用 SSL。下列是未加密資料 /etc/my.cnf 檔案中的相關項目。

    log-bin=mysql-bin server-id=2133421 innodb_flush_log_at_trx_commit=1 sync_binlog=1

    如果需要加密複寫,則啟動外部 MySQL 資料庫時,務必啟用 SSL 和 binlog。/etc/my.cnf 檔案中的項目包括 MySQL 資料庫伺服器的 .pem 檔案位置。

    log-bin=mysql-bin server-id=2133421 innodb_flush_log_at_trx_commit=1 sync_binlog=1 # Setup SSL. ssl-ca=/home/sslcerts/ca.pem ssl-cert=/home/sslcerts/server-cert.pem ssl-key=/home/sslcerts/server-key.pem

    您可以使用下列命令確認 SSL 已啟用。

    mysql> show variables like 'have_ssl';

    輸出類似如下。

    +~-~-~-~-~-~-~-~-~-~-~-~-~-~--+~-~-~-~-~-~--+ | Variable_name | Value | +~-~-~-~-~-~-~-~-~-~-~-~-~-~--+~-~-~-~-~-~--+ | have_ssl | YES | +~-~-~-~-~-~-~-~-~-~-~-~-~-~--+~-~-~-~-~-~--+ 1 row in set (0.00 sec)
  2. 決定複寫的二進位日誌起始位置。在後續步驟中,您需要指定此位置來開始複寫。

    使用 AWS Management Console

    1. 登入 AWS Management Console 並開啟 Amazon RDS 主控台,網址為 https://console.aws.amazon.com/rds/

    2. 在導覽窗格中,選擇 Events (事件)。

    3. Events (事件) 清單中,記下 Recovered from Binary log filename (已從二進位日誌檔案名稱還原) 事件的位置。

      檢視 MySQL 主要資料庫

    使用 AWS CLI

    您也可以通過使用描述 AWS CLI 事件命令獲取 binlog 文件名和位置。以下顯示命令範例 describe-events 命令。

    PROMPT> aws rds describe-events

    在輸出中,識別顯示 binlog 位置的事件。

  3. 在已連接外部 MySQL 資料庫的情況下,建立用於複寫的使用者。此帳戶只供複寫作業使用,務必限制其存取您的網域,以提升安全性。以下是範例。

    mysql> CREATE USER '<user_name>'@'<domain_name>' IDENTIFIED BY '<password>';

    使用者需要 REPLICATION CLIENTREPLICATION SLAVE 權限。授予這些權限給該使用者。

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO '<user_name>'@'<domain_name>';

    如果需要使用加密複寫,請對複寫使用者要求 SSL 連接。例如,您可以使用以下陳述式要求使用者帳戶 <user_name>.

    GRANT USAGE ON *.* TO '<user_name>'@'<domain_name>' REQUIRE SSL;
    注意

    如果未包含 REQUIRE SSL,則複寫連線可能會以無訊息方式回復為未加密的連線。

  4. 在 Amazon RDS 主控台中,將託管外部 MySQL 資料庫之伺服器的 IP 地址,新增至 Aurora MySQL 資料庫叢集的 VPC 安全群組。如需有關修改 VPC 安全群組的詳細資訊,請參閱《Amazon Virtual Private Cloud 使用者指南》中的 VPC 安全群組

    您可能還需要設定本機網路,以允許來自 Aurora MySQL 資料庫叢集之 IP 地址的連線,使其能與外部 MySQL 資料庫通訊。若要找出 Aurora MySQL 資料庫叢集的 IP 地址,請使用 host 命令。

    host <db_cluster_endpoint>

    主機名稱是來自 Aurora MySQL 資料庫叢集端點的 DNS 名稱。

  5. 執行 外部主機(Aurora 我的版本 2)SQL外部源代碼(Aurora 我的版本 3)SQL 預存程序以啟用二進位日誌複寫。此儲存的程序採用下列語法。

    CALL mysql.rds_set_external_master ( host_name , host_port , replication_user_name , replication_user_password , mysql_binary_log_file_name , mysql_binary_log_file_location , ssl_encryption ); CALL mysql.rds_set_external_source ( host_name , host_port , replication_user_name , replication_user_password , mysql_binary_log_file_name , mysql_binary_log_file_location , ssl_encryption );

    如需有關參數的詳細資訊,請參閱 外部主機(Aurora 我的版本 2)SQL外部源代碼(Aurora 我的版本 3)SQL

    mysql_binary_log_file_namemysql_binary_log_file_location 中,使用您稍早在 Recovered from Binary log filename (已從二進位日誌檔案名稱還原) 事件中記下的位置。

    如果 Aurora MySQL 資料庫叢集的資料未加密,則 ssl_encryption 參數必須設為 0。如果資料已加密,則 ssl_encryption 參數必須設為 1

    下列範例對具有加密資料的 Aurora MySQL 資料庫叢集執行此程序。

    CALL mysql.rds_set_external_master( 'Externaldb.some.com', 3306, 'repl_user'@'mydomain.com', 'password', 'mysql-bin.000010', 120, 1); CALL mysql.rds_set_external_source( 'Externaldb.some.com', 3306, 'repl_user'@'mydomain.com', 'password', 'mysql-bin.000010', 120, 1);

    此儲存的程序會設定參數,供 Aurora MySQL 資料庫叢集用來連接至外部 MySQL 資料庫和讀取其二進位日誌。如果資料已加密,則它也會將 SSL 憑證授權單位憑證、用戶端憑證和用戶端金鑰下載至本機磁碟。

  6. 執行 mysql.rds_start_replication 儲存的程序以啟動二進位日誌複寫。

    CALL mysql.rds_start_replication;
  7. 監控 Aurora MySQL 資料庫叢集落後於 MySQL 複寫主要資料庫的程度。若要這麼做,請連接至 Aurora MySQL 資料庫叢集並執行下列命令。

    Aurora MySQL version 2: SHOW SLAVE STATUS; Aurora MySQL version 3: SHOW REPLICA STATUS;

    在命令輸出中,Seconds Behind Master 欄位顯示 Aurora MySQL 資料庫叢集落後於 MySQL 主要資料庫的程度。當此值為 0 (零) 時,表示 Aurora MySQL 資料庫叢集與主要資料庫已同步,而您可以繼續下一步來停止複寫。

  8. 連接至 MySQL 複寫主要資料庫並停止複寫。若要這樣做,請執行 mysql.rds_stop_replication 預存程序。

    CALL mysql.rds_stop_replication;