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

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

設定 Aurora My 的二進位日誌複寫SQL

使用 Aurora MySQL 設定我的SQL複寫涉及以下步驟,這些步驟會詳細討論:

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

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

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

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

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

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

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

使用下列指示,為您的資料庫引擎建立複寫來源的複本或傾印。

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

如果您打算從 Amazon 外部的 MySQL 資料庫傾印載入資料RDS,建議您建立EC2執行個體以複製傾印檔案。然後,您可以從該執行個體將資料載入資料庫叢集或資料庫EC2執行個體。使用此方法,您可以在將傾印檔案複製到EC2執行個體之前壓縮傾印檔案 (以降低與將資料複製到 Amazon 相關聯的網路成本)RDS。您也可以加密一或多個傾印檔案,以於網路間傳輸資料時加以保護。

注意

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

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

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

在僅供複寫使用的資源上建立使用者 ID。下列範例RDS適用於 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連線。例如,您可以使用下列其中一個陳述式來要求使用者帳戶 上的SSL連線repl_user

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 MySQL 資料庫執行個體複本目標的快照。如果發生問題,而您需要使用資料庫叢集或資料庫執行個體複本目標重新建立複寫,則可以從此快照還原資料庫叢集或資料庫執行個體,而不需再次將資料匯入至複本目標。

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

如果複寫失敗,可能會導致複本上的非預期輸入/輸出大幅增加,進而降低效能。如果複寫失敗或不再需要複寫,可以執行 mysql.rds_reset_external_master (Aurora MySQL version 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 資料庫叢集設定我的SQL複寫時,您必須在 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或 RDSAPI來變更複寫來源上的主密碼,這些變更不會自動複寫到複寫目標。如果您要同步來源系統和目標系統之間的主要使用者和主要密碼,則必須自行對複寫目標進行相同的變更。