

# Configuración de la replicación retrasada con MySQL
<a name="USER_MySQL.Replication.ReadReplicas.DelayReplication"></a>

Puede utilizar la replicación retrasada como estrategia de recuperación de desastres. Con la replicación retardada, se especifica el tiempo mínimo, en segundos, que se retardará la replicación desde la instancia de origen a la réplica de lectura. En caso de desastre, por ejemplo, si se elimina una tabla involuntariamente, el procedimiento siguiente permite recuperarse rápidamente del desastre:
+ Detenga la replicación en la réplica de lectura antes de que se envíe a ella el cambio que provocó el desastre.

  Utilice el procedimiento almacenado [mysql.rds\$1stop\$1replication](mysql-stored-proc-replicating.md#mysql_rds_stop_replication) para detener la replicación.
+ Inicie la replicación y especifique que esta se detenga automáticamente en una ubicación del archivo registro.

  Para especificar una ubicación justo anterior al desastre, se utiliza el procedimiento almacenado [mysql.rds\$1start\$1replication\$1until ](mysql-stored-proc-replicating.md#mysql_rds_start_replication_until).
+ Promocione la réplica de lectura para que sea la nueva instancia de base de datos de origen; para ello, siga las instrucciones de [Promoción de una réplica de lectura para convertirla en una instancia de base de datos independiente](USER_ReadRepl.Promote.md).

**nota**  
En Amazon RDS para MySQL 8.4, la replicación retrasada es compatible con MySQL 8.4.3 y versiones posteriores. En Amazon RDS para MySQL 8.0, la replicación retrasada es compatible con MySQL 8.0.28 y versiones posteriores. En Amazon RDS para MySQL 5.7, la replicación retardada es compatible con MySQL 5.7.44 y versiones posteriores.
Use procedimientos almacenados para configurar la replicación retardada. La reproducción retrasada no se puede configurar con la Consola de administración de AWS, la AWS CLI o la API de Amazon RDS.
Puede usar la replicación basada en identificadores de transacciones globales (GTID) en una configuración de replicación retrasada para las versiones siguientes.  
RDS para MySQL versión 5.7.44 y versiones 5.7 posteriores
RDS para MySQL versión 8.0.28 y versiones 8.0 posteriores
RDS para MySQL versión 8.4.3 y versiones 8.4 posteriores
Si usa una replicación basada en GTID, use el procedimiento almacenado [mysql.rds\$1start\$1replication\$1until\$1gtid ](mysql-stored-proc-gtid.md#mysql_rds_start_replication_until_gtid) en lugar del procedimiento almacenado [mysql.rds\$1start\$1replication\$1until ](mysql-stored-proc-replicating.md#mysql_rds_start_replication_until). Para obtener más información sobre la replicación basada en GTID, consulte [Uso de la replicación basada en GTID](mysql-replication-gtid.md).

**Topics**
+ [Configuración de la replicación retrasada durante la creación de réplicas de lectura](#USER_MySQL.Replication.ReadReplicas.DelayReplication.ReplicaCreation)
+ [Modificación de la replicación retrasada para una réplica de lectura existente](#USER_MySQL.Replication.ReadReplicas.DelayReplication.ExistingReplica)
+ [Establecimiento de una ubicación para detener la replicación en una réplica de lectura](#USER_MySQL.Replication.ReadReplicas.DelayReplication.StartUntil)
+ [Promoción de una réplica de lectura](#USER_MySQL.Replication.ReadReplicas.DelayReplication.Promote)

## Configuración de la replicación retrasada durante la creación de réplicas de lectura
<a name="USER_MySQL.Replication.ReadReplicas.DelayReplication.ReplicaCreation"></a>

Para configurar la replicación retardada para cualquier réplica de lectura futura creada a partir de una instancia de base de datos, ejecute el procedimiento almacenado [mysql.rds\$1set\$1configuration](mysql-stored-proc-configuring.md#mysql_rds_set_configuration) con el parámetro `target delay`.

**Para configurar la replicación retardada durante la creación de réplicas de lectura**

1. Utilice un cliente de MySQL para conectarse como usuario maestro a la instancia de base de datos MySQL que vaya a ser el origen de las réplicas de lectura.

1. Ejecute el procedimiento almacenado [mysql.rds\$1set\$1configuration](mysql-stored-proc-configuring.md#mysql_rds_set_configuration) con el parámetro `target delay`.

   Por ejemplo, ejecute el siguiente procedimiento almacenado para especificar que la replicación se retardará al menos una hora (3600 segundos) para todas las réplicas de lectura creadas desde la instancia de base de datos actual.

   ```
   call mysql.rds_set_configuration('target delay', 3600);
   ```
**nota**  
Después de ejecutar este procedimiento almacenado, todas las réplicas de lectura que cree mediante la AWS CLI o la API de Amazon RDS se configurarán con la reproducción retardada el número de segundos especificado.

## Modificación de la replicación retrasada para una réplica de lectura existente
<a name="USER_MySQL.Replication.ReadReplicas.DelayReplication.ExistingReplica"></a>

Para modificar la replicación retardada para una réplica de lectura existente, ejecute el procedimiento almacenado [mysql.rds\$1set\$1source\$1delay](mysql-stored-proc-replicating.md#mysql_rds_set_source_delay).

**Para modificar la replicación retardada de una réplica de lectura existente**

1. Use un cliente de MySQL para conectarse como usuario maestro a la réplica de lectura.

1. Utilice el procedimiento almacenado [mysql.rds\$1stop\$1replication](mysql-stored-proc-replicating.md#mysql_rds_stop_replication) para detener la replicación.

1. Ejecute el procedimiento almacenado [mysql.rds\$1set\$1source\$1delay](mysql-stored-proc-replicating.md#mysql_rds_set_source_delay).

   Por ejemplo, ejecute el siguiente procedimiento almacenado para especificar que la replicación en la réplica de lectura se retardará al menos una hora (3600 segundos).

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

1. Utilice el procedimiento almacenado [mysql.rds\$1start\$1replication](mysql-stored-proc-replicating.md#mysql_rds_start_replication) para iniciar la replicación.

## Establecimiento de una ubicación para detener la replicación en una réplica de lectura
<a name="USER_MySQL.Replication.ReadReplicas.DelayReplication.StartUntil"></a>

Después de detener la replicación en la réplica de lectura, puede utilizar el procedimiento almacenado [mysql.rds\$1start\$1replication\$1until ](mysql-stored-proc-replicating.md#mysql_rds_start_replication_until) para iniciar la replicación y volver a detenerla en una ubicación concreta del registro binario.

**Para iniciar la replicación en una réplica de lectura y detenerla en una ubicación concreta**

1. Use un cliente de MySQL para conectarse como usuario maestro a la instancia de base de datos MySQL de origen.

1. Ejecute el procedimiento almacenado [mysql.rds\$1start\$1replication\$1until ](mysql-stored-proc-replicating.md#mysql_rds_start_replication_until).

   En el ejemplo siguiente se inicia la replicación y se replican los cambios hasta que alcanza la ubicación `120` del archivo registro binario `mysql-bin-changelog.000777`. En una situación de recuperación de desastres, supongamos que la ubicación `120` es justo anterior al desastre.

   ```
   call mysql.rds_start_replication_until(
     'mysql-bin-changelog.000777',
     120);
   ```

La replicación se detiene automáticamente cuando se alcanza el punto de detención. Se genera el siguiente evento de RDS: `Replication has been stopped since the replica reached the stop point specified by the rds_start_replication_until stored procedure`.

## Promoción de una réplica de lectura
<a name="USER_MySQL.Replication.ReadReplicas.DelayReplication.Promote"></a>

Después de que se detenga la replicación, en una situación de recuperación de desastres, puede promocionar una réplica de lectura para que sea la nueva instancia de base de datos de origen. Para obtener información acerca de la promoción de una réplica de lectura, consulte [Promoción de una réplica de lectura para convertirla en una instancia de base de datos independiente](USER_ReadRepl.Promote.md).