透過 MySQL 設定延遲複寫 - Amazon Relational Database Service

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

透過 MySQL 設定延遲複寫

您可以將延遲複寫做為災難復原的策略。利用延遲複寫功能來指定最短時間 (以秒為單位),即可延遲來源到僅供讀取複本的複寫作業。在發生損毀之時 (例如不小心刪除資料表),若要快速完成事後復原作業,則請執行下列步驟:

注意
  • 在 RDS for MySQL 8.4 上,MySQL 8.4.3 和更高版本支援延遲複寫。在 RDS for MySQL 8.0 版上,MySQL 8.0.28 版和更新版本可支援延遲複寫。在 RDS for MySQL 5.7 上,MySQL 5.7.44 和更高版本支援延遲複寫。

  • 使用預存程序來設定延遲複寫。您無法透過 AWS Management Console、AWS CLI 或 Amazon RDS API 設定延遲複寫。

  • 您可以在下列版本的延遲複寫組態中使用基於全域交易識別符 (GTID) 的複寫:

    • RDS for MySQL 5.7.44 版和更高的 5.7 版

    • RDS for MySQL 8.0.28 版和更高的 8.0 版

    • RDS for MySQL 8.4.3 版和更高的 8.4 版

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

在僅供讀取複本建立期間設定延遲複寫

若要為任何未來從資料庫執行個體建立的僅供讀取複本設定延遲複寫,請利用 mysql.rds_set_configuration 參數來執行 target delay 預存程序。

在僅供讀取複本建立期間設定延遲複寫
  1. 透過 MySQL 用戶端,以主要使用者的身分連接至 MySQL 資料庫執行個體,該執行個體將成為僅供讀取複本的來源。

  2. 利用 mysql.rds_set_configuration 參數來執行 target delay 預存程序。

    例如,您可以執行下列預存程序,藉此設定複寫至少會延遲一小時 (3600 秒),並將該設定套用至目前資料庫執行個體所建立的任何僅供讀取複本。

    call mysql.rds_set_configuration('target delay', 3600);
    注意

    一旦執行此預存程序,系統即會針對任何透過 AWS CLI 或 Amazon RDS API 建立的僅供讀取複本,將複寫延遲時間設定為指定的秒數。

修改現有僅供讀取複本的延遲複寫

若要修改現有僅供讀取複本的延遲複寫,請執行 mysql.rds_set_source_delay 預存程序。

修改現有僅供讀取複本的延遲複寫
  1. 透過 MySQL 用戶端,以主要使用者的身分連接至僅供讀取複本。

  2. 使用 mysql.rds_stop_replication 預存程序來停止複寫作業。

  3. 執行 mysql.rds_set_source_delay 預存程序。

    例如,您可以執行下列預存程序,藉此設定複寫至少會延遲一小時 (3600 秒),並將該設定套用至僅供讀取複本。

    call mysql.rds_set_source_delay(3600);
  4. 使用 mysql.rds_start_replication 預存程序來啟動複寫作業。

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

停止僅供讀取複本的複寫作業後,您可以使用 mysql.rds_start_replication_until 預存程序來啟動複寫,然後在特定的二進位日誌檔案位置停止複寫。

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

  2. 執行 mysql.rds_start_replication_until 預存程序。

    以下範例會啟動複寫並複寫變更,直到達到 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

提升僅供讀取複本

使用災難復原功能時,您可以參照中的指示,在複寫作業停止後將僅供讀取複本提升為新的來源資料庫執行個體。如需提升僅供讀取複本的相關資訊,請參閱 提升僅供讀取複本為獨立的資料庫執行個體