

# 使用 MariaDB 配置延迟复制
<a name="USER_MariaDB.Replication.ReadReplicas.DelayReplication"></a>

可以使用延迟复制作为灾难恢复策略。使用延迟复制，可指定最短的时间（以秒为单位）以延迟从源到只读副本的复制。如果出现灾难（如意外删除了表），可完成以下步骤以快速从灾难恢复：
+ 在导致灾难的更改发送到它之前停止复制到只读副本。

  要停止复制，请使用 [mysql.rds\$1stop\$1replication](mysql-stored-proc-replicating.md#mysql_rds_stop_replication) 存储过程。
+ 按照[将只读副本提升为独立的数据库实例](USER_ReadRepl.Promote.md)中的说明，将只读副本提升为新的源数据库实例。

**注意**  
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>

要为未来通过数据库实例创建的任何只读副本配置延迟复制，请使用 [mysql.rds\$1set\$1configuration](mysql-stored-proc-configuring.md#mysql_rds_set_configuration) 参数运行 `target delay` 存储过程。

**在创建只读副本时配置延迟复制**

1. 通过使用 MariaDB 客户端，以主用户身份连接到作为只读副本源的 MariaDB 数据库实例。

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_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) 存储过程。

   例如，运行以下存储过程，指定复制到只读副本延迟至少一小时（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>

在灾难恢复方案中，当复制停止后，您可以将只读副本提升为新的源数据库实例。有关提升只读副本的信息，请参阅 [将只读副本提升为独立的数据库实例](USER_ReadRepl.Promote.md)。