

# MariaDB での遅延レプリケーションの設定
<a name="USER_MariaDB.Replication.ReadReplicas.DelayReplication"></a>

遅延レプリケーションは、災害対策用の戦略として使用できます。遅延レプリケーションでは、ソースからリードレプリカへのレプリケーションを遅延させる最小時間を秒数で指定します。障害発生時 (意図しないテーブルの削除など) には、以下のステップを実行して障害から早急に復旧します。
+ 障害を起こした変更がリードレプリカに送られる前に、リードレプリカへのレプリケーションを停止します。

  レプリケーションを停止するには、[mysql.rds\$1stop\$1replication](mysql-stored-proc-replicating.md#mysql_rds_stop_replication) ストアドプロシージャを使用します。
+ 「[リードレプリカをスタンドアロン DB インスタンスに昇格させる](USER_ReadRepl.Promote.md)」の手順を使用してリードレプリカを新しいソースの DB インスタンスに昇格させます。

**注記**  
遅延レプリケーションは MariaDB 10.6 以降でサポートされています。
遅延レプリケーションを設定するには、ストアドプロシージャを使用します。遅延レプリケーションを AWS マネジメントコンソール、AWS CLI、または Amazon RDS API で設定することはできません。
遅延レプリケーションの設定でグローバルなトランザクション識別子 (GTID) に基づくレプリケーションを使用できます。

**Topics**
+ [リードレプリカ作成時の遅延レプリケーションの設定](#USER_MariaDB.Replication.ReadReplicas.DelayReplication.ReplicaCreation)
+ [既存のリードレプリカの遅延レプリケーションの変更](#USER_MariaDB.Replication.ReadReplicas.DelayReplication.ExistingReplica)
+ [リードレプリカの昇格](#USER_MariaDB.Replication.ReadReplicas.DelayReplication.Promote)

## リードレプリカ作成時の遅延レプリケーションの設定
<a name="USER_MariaDB.Replication.ReadReplicas.DelayReplication.ReplicaCreation"></a>

DB インスタンスから今後作成するリードレプリカの遅延レプリケーションを設定するには、[mysql.rds\$1set\$1configuration](mysql-stored-proc-configuring.md#mysql_rds_set_configuration) パラメータを指定して `target delay` ストアドプロシージャを実行します。

**リードレプリカの作成時に遅延レプリケーションを設定するには**

1. MariaDB クライアントを使用して、マスターユーザーとしてリードレプリカのソースとなる MariaDB DB インスタンスに接続します。

1. [mysql.rds\$1set\$1configuration](mysql-stored-proc-configuring.md#mysql_rds_set_configuration) パラメータを指定して `target delay` ストアドプロシージャを実行します。

   例えば、現在の DB インスタンスから作成されるリードレプリカへのレプリケーションを少なくとも 1 時間 (3600 秒) 遅延させるように指定するには、次のストアドプロシージャを実行します。

   ```
   call mysql.rds_set_configuration('target delay', 3600);
   ```
**注記**  
このストアドプロシージャを実行すると、AWS CLI または Amazon RDS API を使用して作成したリードレプリカには、指定した秒数で遅延するレプリケーションが設定されます。

## 既存のリードレプリカの遅延レプリケーションの変更
<a name="USER_MariaDB.Replication.ReadReplicas.DelayReplication.ExistingReplica"></a>

既存のリードレプリカの遅延レプリケーションを変更するには、[mysql.rds\$1set\$1source\$1delay](mysql-stored-proc-replicating.md#mysql_rds_set_source_delay) ストアドプロシージャを実行します。

**既存のリードレプリカの遅延レプリケーションを変更するには**

1. MariaDB クライアントを使用して、マスターユーザーとしてリードレプリカに接続します。

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) ストアドプロシージャを実行します。

   例えば、リードレプリカへのレプリケーションを少なくとも 1 時間 (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_MariaDB.Replication.ReadReplicas.DelayReplication.Promote"></a>

レプリケーションが停止したら、災害対策シナリオでリードレプリカを新しいソース DB インスタンスに昇格させます。リードレプリカの昇格については、「[リードレプリカをスタンドアロン DB インスタンスに昇格させる](USER_ReadRepl.Promote.md)」を参照してください。