設定 Aurora MySQL 的二進位日誌複寫 - Amazon Aurora

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

設定 Aurora MySQL 的二進位日誌複寫

使用 Aurora MySQL 設定 MySQL 複寫涉及下列詳細討論的步驟:

1. 在複寫來源上開啟二進位日誌

在以下尋找如何在資料庫引擎的複寫來源上開啟二進位日誌的相關指示。

2. 在複寫來源上保留二進位日誌,直到不再需要為止

使用 MySQL 二進位日誌複寫時,Amazon RDS 不會管理複寫程序。因此,您需要確保會保留複寫來源上的 binlog 檔案,直到變更已套用至複本後為止。此維護可協助您在發生故障時將您的來源資料庫還原。

使用以下保留資料庫引擎二進位日誌的相關指示。

3. 建立複寫來源的複製或傾印

您可以使用複寫來源的快照、複製或傾印,將資料的基準複製載入到複本上。然後,您會從該點開始複寫。

使用以下為資料庫引擎建立複寫來源複製或傾印的相關指示。

4. 將傾印載入複本目標 (如有需要)

如果您計劃從位於 Amazon RDS 外部的 MySQL 資料庫傾印載入資料,那麼,您可能需要建立供複製傾印檔案的 EC2 執行個體。然後,您可以從該 EC2 執行個體將資料載入資料庫叢集或資料庫執行個體。使用此方法,您可以在將傾印檔案複製到 EC2 執行個體之前加以壓縮,以便減少與複製資料至 Amazon RDS 相關聯的網路成本。您也可以加密一或多個傾印檔案,以於網路間傳輸資料時加以保護。

注意

如果您建立新的 Aurora MySQL 資料庫叢集作為複本目標,則不需要載入傾印檔案:

使用以下為資料庫引擎將複寫來源的傾印載入複寫目標的相關指示。

5. 在複製來源上建立複寫使用者

在僅供複寫使用的資源上建立使用者 ID。下列範例適用於 RDS for MySQL 或外部 MySQL 來源資料庫。

mysql> CREATE USER 'repl_user'@'domain_name' IDENTIFIED BY 'password';

對於 Aurora MySQL 來源資料庫,skip_name_resolve 資料庫叢集參數設定為 1 (ON) 且無法修改,因此您必須使用主機的 IP 位址,而非網域名稱。如需詳細資訊,請參閱 MySQL 文件中的 skip_name_resolve

mysql> CREATE USER 'repl_user'@'IP_address' IDENTIFIED BY 'password';

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

如果需要使用加密複寫,請對複寫使用者要求 SSL 連接。例如,您可以使用以下其中一個陳述式來對使用者帳戶 repl_user 要求 SSL 連線。

GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'IP_address';
GRANT USAGE ON *.* TO 'repl_user'@'IP_address' REQUIRE SSL;
注意

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

6. 在複本目標上開啟複寫

開啟複寫之前,建議您手動取得 Aurora MySQL 資料庫叢集的快照或 RDS for MySQL 資料庫執行個體複本目標。如果發生問題,而您需要使用資料庫叢集或資料庫執行個體複本目標重新建立複寫,則可以從此快照還原資料庫叢集或資料庫執行個體,而不需再次將資料匯入至複本目標。

使用以下開啟資料庫引擎複寫功能的相關指示。

如果複寫失敗,可能會導致複本上的非預期輸入/輸出大幅增加,進而降低效能。如果複寫失敗或不再需要複寫,可以執行 mysql.rds_reset_external_master (Aurora MySQL 第 2 版)mysql.rds_reset_external_source (Aurora MySQL 第 3 版) 預存程序來移除複寫組態。

設定位置以停止僅供讀取複本的複寫作業

在 Aurora MySQL 3.04 版及更新版本中,您可以使用 mysql.rds_start_replication_until (Aurora MySQL 3 版) 預存程序開始複寫,然後在指定的二進位日誌檔案位置讓它停止。

啟動僅供讀取複本的複寫作業,並在特定位置停止複寫
  1. 透過 MySQL 用戶端,以主要使用者的身分連接至複本 Aurora MySQL 資料庫叢集。

  2. 執行 mysql.rds_start_replication_until (Aurora MySQL 3 版) 預存程序。

    以下範例會啟動複寫並複寫變更,直到達到 120 二進位日誌檔案中的位置 mysql-bin-changelog.000777 為止。若要使用災難復原功能,請在發生損毀前將位置預設為 120

    call mysql.rds_start_replication_until( 'mysql-bin-changelog.000777', 120);

達到停止點時,複寫作業即會自動停止。而且,系統還會產生以下 RDS 事件:Replication has been stopped since the replica reached the stop point specified by the rds_start_replication_until stored procedure

如果您使用 GTID 式複寫,請使用 mysql.rds_start_replication_until_gtid (Aurora MySQL 3 版) 預存程序,而非 mysql.rds_start_replication_until (Aurora MySQL 3 版) 預存程序。如需 GTID 式複寫的詳細資訊,請參閱使用 GTID 式複寫

7. 監控複本

設定使用 Aurora MySQL 資料庫叢集的 MySQL 複寫時,當 Aurora MySQL 資料庫叢集為複本目標時,您必須監控其容錯移轉事件。若發生容錯移轉,則屬於複本目標的資料庫叢集可能會以不同的網路地址,在新主機上重新建立。如需如何監控容錯移轉事件的資訊,請參閱使用 Amazon RDS 事件通知

您也可以監控複本目標落後複寫來源的程度,方法是連接至複本目標並執行 SHOW SLAVE STATUS (Aurora MySQL 第 2 版) 或 SHOW REPLICA STATUS (Aurora MySQL 第 3 版) 命令。在命令輸出中,Seconds Behind Master 欄位會告知您複本目標落後於來源的程度。

重要

若您升級資料庫叢集並指定自訂參數群組,請務必在升級完成後手動重新啟動叢集。這樣做可讓叢集使用您的新自訂參數設定,並重新開始 binlog 複寫。

同步複寫來源和目標之間的密碼

當您使用 SQL 陳述式變更複寫來源上的使用者帳戶和密碼時,這些變更會自動複寫到複寫目標。

如果您使用 AWS Management Console、AWS CLI 或 RDS API 變更複寫來源上的主要密碼,則這些變更不會自動複寫到複寫目標。如果您要同步來源系統和目標系統之間的主要使用者和主要密碼,則必須自行對複寫目標進行相同的變更。