

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

# 透過 MySQL 設定延遲複寫
<a name="USER_MySQL.Replication.ReadReplicas.DelayReplication"></a>

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

  使用 [mysql.rds\$1stop\$1replication](mysql-stored-proc-replicating.md#mysql_rds_stop_replication) 預存程序來停止複寫作業。
+ 啟動複寫作業並指定日誌檔案位置，則當系統複寫到該位置時，即會自動停止作業。

  透過 [mysql.rds\$1start\$1replication\$1until](mysql-stored-proc-replicating.md#mysql_rds_start_replication_until) 預存程式，藉此在發生損毀前指定日誌檔案位置。
+ 若要將僅供讀取複本提升為新的來源資料庫執行個體，請參照[提升僅供讀取複本為獨立的資料庫執行個體](USER_ReadRepl.Promote.md)中的指示。

**注意**  
在 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 管理主控台 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\$1start\$1replication\$1until\$1gtid](mysql-stored-proc-gtid.md#mysql_rds_start_replication_until_gtid) 預存程序，而非 [mysql.rds\$1start\$1replication\$1until](mysql-stored-proc-replicating.md#mysql_rds_start_replication_until) 預存程序。如需 GTID 式複寫的詳細資訊，請參閱[使用 GTID 式複寫](mysql-replication-gtid.md)。

**Topics**
+ [在僅供讀取複本建立期間設定延遲複寫](#USER_MySQL.Replication.ReadReplicas.DelayReplication.ReplicaCreation)
+ [修改現有僅供讀取複本的延遲複寫](#USER_MySQL.Replication.ReadReplicas.DelayReplication.ExistingReplica)
+ [設定位置以停止僅供讀取複本的複寫作業](#USER_MySQL.Replication.ReadReplicas.DelayReplication.StartUntil)
+ [提升僅供讀取複本](#USER_MySQL.Replication.ReadReplicas.DelayReplication.Promote)

## 在僅供讀取複本建立期間設定延遲複寫
<a name="USER_MySQL.Replication.ReadReplicas.DelayReplication.ReplicaCreation"></a>

若要為任何未來從資料庫執行個體建立的僅供讀取複本設定延遲複寫，請利用 [mysql.rds\$1set\$1configuration](mysql-stored-proc-configuring.md#mysql_rds_set_configuration) 參數來執行 `target delay` 預存程序。

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

1. 透過 MySQL 用戶端，以主要使用者的身分連接至 MySQL 資料庫執行個體，該執行個體將成為僅供讀取複本的來源。

1. 利用 [mysql.rds\$1set\$1configuration](mysql-stored-proc-configuring.md#mysql_rds_set_configuration) 參數來執行 `target delay` 預存程序。

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

   ```
   call mysql.rds_set_configuration('target delay', 3600);
   ```
**注意**  
執行此預存程序後，您使用 AWS CLI 或 Amazon RDS API 建立的任何僅供讀取複本都會設定為複寫延遲指定的秒數。

## 修改現有僅供讀取複本的延遲複寫
<a name="USER_MySQL.Replication.ReadReplicas.DelayReplication.ExistingReplica"></a>

若要修改現有僅供讀取複本的延遲複寫，請執行 [mysql.rds\$1set\$1source\$1delay](mysql-stored-proc-replicating.md#mysql_rds_set_source_delay) 預存程序。

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

1. 透過 MySQL 用戶端，以主要使用者的身分連接至僅供讀取複本。

1. 使用 [mysql.rds\$1stop\$1replication](mysql-stored-proc-replicating.md#mysql_rds_stop_replication) 預存程序來停止複寫作業。

1. 執行 [mysql.rds\$1set\$1source\$1delay](mysql-stored-proc-replicating.md#mysql_rds_set_source_delay) 預存程序。

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

   ```
   call mysql.rds_set_source_delay(3600);
   ```

1. 使用 [mysql.rds\$1start\$1replication](mysql-stored-proc-replicating.md#mysql_rds_start_replication) 預存程序來啟動複寫作業。

## 設定位置以停止僅供讀取複本的複寫作業
<a name="USER_MySQL.Replication.ReadReplicas.DelayReplication.StartUntil"></a>

停止僅供讀取複本的複寫作業後，您可以使用 [mysql.rds\$1start\$1replication\$1until](mysql-stored-proc-replicating.md#mysql_rds_start_replication_until) 預存程序來啟動複寫，然後在特定的二進位日誌檔案位置停止複寫。

**啟動僅供讀取複本的複寫作業，並在特定位置停止複寫**

1. 透過 MySQL 用戶端，以主要使用者的身分連接至來源 MySQL 資料庫執行個體。

1. 執行 [mysql.rds\$1start\$1replication\$1until](mysql-stored-proc-replicating.md#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`。

## 提升僅供讀取複本
<a name="USER_MySQL.Replication.ReadReplicas.DelayReplication.Promote"></a>

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