

# Configuración de la replicación retrasada con Amazon Aurora MySQL
<a name="AuroraMySQL.Replication.Delayed"></a>

Puede utilizar la replicación retrasada como estrategia de recuperación ante desastres con Aurora MySQL. 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:

1. Detenga la replicación en la réplica de lectura antes de que el origen envíe el cambio que provocó el desastre. Utilice el procedimiento almacenado [mysql.rds\_stop\_replication](mysql-stored-proc-replicating.md#mysql_rds_stop_replication) para detener la replicación.

1. 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\_start\_replication\_until(Aurora MySQL versión 3)](mysql-stored-proc-replicating.md#mysql_rds_start_replication_until).

1. Promocione la réplica de lectura para que sea el nuevo clúster de base de datos de origen; para ello, siga las instrucciones de [Promoción de una réplica de lectura a un clúster de base de datos para Aurora MySQL](AuroraMySQL.Replication.CrossRegion.Promote.md).

**nota**  
Aurora MySQL admite la replicación retrasada para la versión 8.4.8 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 en función de identificadores de transacciones globales (GTID) en una configuración de replicación retrasada en Aurora MySQL versión 8.4.8 y posteriores.
Si usa una replicación basada en GTID, use el procedimiento almacenado [mysql.rds\_start\_replication\_until\_gtid(Aurora MySQL versión 3)](mysql-stored-proc-gtid.md#mysql_rds_start_replication_until_gtid) en lugar del procedimiento almacenado [mysql.rds\_start\_replication\_until(Aurora MySQL versión 3)](mysql-stored-proc-replicating.md#mysql_rds_start_replication_until).
Aurora MySQL admite la replicación de varios orígenes con hasta 15 canales. Utilice las variantes del procedimiento `_for_channel` para configurar la replicación retrasada en canales específicos.

**Topics**
+ [Casos de uso para la replicación retrasada](#AuroraMySQL.Replication.Delayed.UseCases)
+ [Configuración de la replicación externa con un retraso](#AuroraMySQL.Replication.Delayed.Configuring)
+ [Modificación de la replicación retrasada de una réplica de lectura existente](#AuroraMySQL.Replication.Delayed.Modifying)
+ [Establecimiento de una ubicación para detener la replicación en una réplica de lectura](#AuroraMySQL.Replication.Delayed.StopAt)
+ [Promoción de una réplica de lectura](#AuroraMySQL.Replication.Delayed.Promote)
+ [Temas relacionados](#AuroraMySQL.Replication.Delayed.RelatedTopics)

## Casos de uso para la replicación retrasada
<a name="AuroraMySQL.Replication.Delayed.UseCases"></a>

La replicación retrasada en Aurora MySQL se aplica a la replicación basada en registros binarios. Esto incluye la replicación desde un clúster de base de datos de escritura de Aurora MySQL a una réplica de binlog, desde un origen de MySQL externo a un clúster de base de datos de Aurora MySQL o a través de canales de replicación de múltiples orígenes. No se aplica a las réplicas de Aurora dentro de un único clúster de base de datos, ya que leen desde el almacenamiento del clúster compartido y no desde el registro binario. Entre los casos de uso comunes se incluyen los siguientes:
+ **Recuperación ante desastres por error del operador**: mantenga una réplica de binlog que se retrase con respecto al origen durante un intervalo establecido. Si una instrucción destructiva se ejecuta de forma no intencionada (por ejemplo, eliminando una tabla), detenga la replicación en la réplica retrasada antes de que el origen aplique el cambio. A continuación, avance hasta justo antes del evento mediante [mysql.rds\_start\_replication\_until(Aurora MySQL versión 3)](mysql-stored-proc-replicating.md#mysql_rds_start_replication_until) o [mysql.rds\_start\_replication\_until\_gtid(Aurora MySQL versión 3)](mysql-stored-proc-gtid.md#mysql_rds_start_replication_until_gtid). Por último, promueva la réplica. Este enfoque proporciona una ruta de recuperación más rápida que la recuperación en un momento dado, que requiere la recuperación tras un bloqueo y la reproducción de registros binarios.
+ **Protección contra la corrupción lógica de los datos**: una réplica retrasada también protege contra la implementación o la migración defectuosos de una aplicación que corrompan los datos gradualmente. Como la réplica mantiene el estado previo a la corrupción durante todo el tiempo que dure el retraso, puede recuperarse antes de que se apliquen las transacciones defectuosas.
+ **Versión principal y actualizaciones azul/verde**: conserve una réplica de binlog retrasada durante una actualización o una implementación azul/verde como medida de seguridad, de modo que pueda volver a un estado de funcionalidad comprobada si la actualización presenta problemas.
+ **Captura de datos de cambios (CDC) desde un origen externo**: cuando ingiere cambios en un clúster de base de datos de Aurora MySQL desde un origen de MySQL externo, un retraso intencionado proporciona un búfer controlado antes de que los cambios se apliquen en sentido descendente.
+ **Inspección histórica sin restauración**: consulte la réplica retrasada para ver qué aspecto tenían los datos en un momento anterior. Esto resulta útil para depurar, auditar o investigar los cambios, sin aprovisionar un clon ni ejecutar una restauración en un momento dado.
+ **Prueba del comportamiento de la aplicación con un retraso de replicación**: utilice un retraso exagerado artificialmente para validar el comportamiento de la aplicación cuando una réplica se retrasa y para ejecutar pruebas de regresión en condiciones sensibles al retraso, sin tener que generar una gran carga para reproducir el retraso.

## Configuración de la replicación externa con un retraso
<a name="AuroraMySQL.Replication.Delayed.Configuring"></a>

Para configurar un origen externo con replicación retrasada, utilice el procedimiento almacenado [mysql.rds\_set\_external\_source\_with\_delay (Aurora MySQL versión 8.4.8 y posteriores)](mysql-stored-proc-replicating.md#mysql_rds_set_external_source_with_delay). Para obtener más información sobre todos los procedimientos almacenados de replicación, consulte [Configuración, inicio y detención de la replicación del registro binario (binlog)](mysql-stored-proc-replicating.md).

**Ejemplo (canal predeterminado):**

```
CALL mysql.rds_set_external_source_with_delay(
  '{{source-host.example.com}}',
  3306,
  '{{repl_user}}',
  '{{repl_password}}',
  '{{mysql-bin-changelog.000001}}',
  120,
  0,
  3600);
```

**Ejemplo (canal específico):**

```
CALL mysql.rds_set_external_source_with_delay_for_channel(
  '{{source-host.example.com}}',
  3306,
  '{{repl_user}}',
  '{{repl_password}}',
  '{{mysql-bin-changelog.000001}}',
  120,
  0,
  3600,
  '{{channel_1}}');
```

**Parámetros:**

{{host\_name}}  
El nombre de host o la dirección IP del origen externo.

{{host\_port}}  
El número de puerto del origen externo.

{{replication\_user\_name}}  
El usuario de replicación del origen externo.

{{replication\_user\_password}}  
La contraseña del usuario de replicación.

{{mysql\_binary\_log\_file\_name}}  
El nombre del archivo de registro binario del origen externo.

{{mysql\_binary\_log\_file\_location}}  
La posición en el archivo de registro binario en la que se inicia la replicación.

{{ssl\_encryption}}  
Establezca este parámetro en `1` para habilitar el cifrado SSL para la conexión de replicación, o en `0` para deshabilitar el cifrado SSL.

{{delay}}  
El retraso mínimo en segundos (0-259 200).

{{channel}}  
(solo en la variante for\_channel) El nombre del canal para la replicación de varios orígenes.

**Restricciones:**
+ Aurora MySQL admite un máximo de 15 canales de replicación.
+ Cada canal debe replicarse desde un origen diferente (combinación host:port).
+ El retraso debe estar entre 0 y 259 200 segundos (72 horas).
+ Detenga la replicación antes de modificar la configuración del canal.

## Modificación de la replicación retrasada de una réplica de lectura existente
<a name="AuroraMySQL.Replication.Delayed.Modifying"></a>

Para modificar la replicación retardada para una réplica de lectura existente, ejecute el procedimiento almacenado [mysql.rds\_set\_source\_delay (Aurora MySQL versión 8.4.8 y posteriores)](mysql-stored-proc-replicating.md#mysql_rds_set_source_delay). Para obtener más información sobre todos los procedimientos almacenados de replicación, consulte [Configuración, inicio y detención de la replicación del registro binario (binlog)](mysql-stored-proc-replicating.md).

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

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

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

1. Ejecute el procedimiento almacenado [mysql.rds\_set\_source\_delay (Aurora MySQL versión 8.4.8 y posteriores)](mysql-stored-proc-replicating.md#mysql_rds_set_source_delay).

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

**Ejemplo (canal predeterminado):**

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

**Ejemplo (canal específico):**

```
CALL mysql.rds_set_source_delay_for_channel(3600, '{{channel_1}}');
```

Esto especifica que la replicación en la réplica de lectura se retrasa al menos una hora (3600 segundos). El valor del retraso debe estar entre 0 y 259 200 segundos (72 horas).

**nota**  
Detenga la replicación antes de configurar el retraso. Si la replicación se está ejecutando, recibirá un error que pedirá que se llame primero a [mysql.rds\_stop\_replication](mysql-stored-proc-replicating.md#mysql_rds_stop_replication) (o a `mysql.rds_stop_replication_for_channel` para un canal específico).

## Establecimiento de una ubicación para detener la replicación en una réplica de lectura
<a name="AuroraMySQL.Replication.Delayed.StopAt"></a>

Después de detener la replicación en la réplica de lectura, puede utilizar el procedimiento almacenado [mysql.rds\_start\_replication\_until(Aurora MySQL versión 3)](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 y detenerla en una ubicación específica:**

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

1. Ejecute el procedimiento almacenado [mysql.rds\_start\_replication\_until(Aurora MySQL versión 3)](mysql-stored-proc-replicating.md#mysql_rds_start_replication_until).

**Ejemplo:**

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

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

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

Si usa una replicación basada en GTID, use el procedimiento almacenado [mysql.rds\_start\_replication\_until\_gtid(Aurora MySQL versión 3)](mysql-stored-proc-gtid.md#mysql_rds_start_replication_until_gtid) en su lugar.

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

Después de que se detenga la replicación, en una situación de recuperación ante desastres, puede promocionar una réplica de lectura para que sea el nuevo clúster 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 a un clúster de base de datos para Aurora MySQL](AuroraMySQL.Replication.CrossRegion.Promote.md).

## Temas relacionados
<a name="AuroraMySQL.Replication.Delayed.RelatedTopics"></a>
+ Para obtener una referencia completa de todos los procedimientos almacenados de replicación, consulte [Configuración, inicio y detención de la replicación del registro binario (binlog)](mysql-stored-proc-replicating.md).