

# Uso de réplicas de lectura de MariaDB
<a name="USER_MariaDB.Replication.ReadReplicas"></a>

A continuación, encontrará información específica acerca de cómo utilizar las réplicas de lectura en Amazon RDS for MySQL. Para obtener información general sobre las réplicas de lectura e instrucciones sobre cómo usarlas, consulte [Trabajo con réplicas de lectura de instancias de base de datos](USER_ReadRepl.md).
+ [Configuración de filtros de replicación con MariaDB](USER_MariaDB.Replication.ReadReplicas.ReplicationFilters.md)
+ [Configuración de la replicación retrasada con MariaDB](USER_MariaDB.Replication.ReadReplicas.DelayReplication.md)
+ [Eliminación de réplicas de lectura con MariaDB](USER_MariaDB.Replication.ReadReplicas.Updates.md)
+ [Implementaciones de réplicas de lectura Multi-AZ con MariaDB](USER_MariaDB.Replication.ReadReplicas.MultiAZ.md)
+ [Uso de réplicas de lectura en cascada con RDS para MariaDB](USER_MariaDB.Replication.ReadReplicas.Cascading.md)
+ [Monitoreo de réplicas de lectura de MariaDB](USER_MariaDB.Replication.ReadReplicas.Monitor.md)
+ [Inicio y detención de replicaciones con réplicas de lectura de MariaDB](USER_MariaDB.Replication.ReadReplicas.StartStop.md)
+ [Solución de problemas de una réplica de lectura de MariaDB](USER_ReadRepl.Troubleshooting.MariaDB.md)

## Eliminación de réplicas de lectura con MariaDB
<a name="USER_MariaDB.Replication.ReadReplicas.Configuration"></a>

Para que una instancia de base de datos de MariaDB pueda servir como origen de replicación, debe habilitar las copias de seguridad automáticas en la instancia de base de datos de origen estableciendo el periodo de retención de copia de seguridad en un valor distinto de 0. Este requisito también es válido para una réplica de lectura que sea la instancia de base de datos de origen de otra réplica de lectura. 

Puede crear hasta 15 réplicas de lectura a partir de una instancia de base de datos de dentro de la misma región. Para que la replicación sea eficaz, cada réplica de lectura debe tener la misma cantidad de recursos informáticos y de almacenamiento que la instancia de base de datos de origen. Si modifica la escala de la instancia de base de datos de origen, debe ajustar también la escala de las réplicas de lectura. 

RDS para MariaDB admite réplicas de lectura en cascada. Para obtener información sobre cómo configurar réplicas de lectura en cascada, consulte [Uso de réplicas de lectura en cascada con RDS para MariaDB](USER_MariaDB.Replication.ReadReplicas.Cascading.md).

Puede ejecutar varias acciones de creación y eliminación de réplicas de lectura al mismo tiempo que hagan referencia a la misma instancia de base de datos de origen. Al realizar estas acciones, permanezca dentro del límite de 15 réplicas de lectura para cada instancia de origen.

# Configuración de filtros de replicación con MariaDB
<a name="USER_MariaDB.Replication.ReadReplicas.ReplicationFilters"></a>

Puede utilizar filtros de replicación para especificar qué bases de datos y tablas se replican con una réplica de lectura. Los filtros de replicación pueden incluir bases de datos y tablas en la replicación o excluirlas de la replicación.

Los siguientes son algunos casos de uso para filtros de replicación:
+ Para reducir el tamaño de una réplica de lectura. Con el filtrado de replicación, puede excluir las bases de datos y las tablas que no son necesarias en la réplica de lectura.
+ Para excluir bases de datos y tablas de réplicas de lectura por razones de seguridad.
+ Para replicar diferentes bases de datos y tablas para casos de uso específicos en diferentes réplicas de lectura. Por ejemplo, puede utilizar réplicas de lectura específicas para análisis o fragmentación.
+ Con una instancia de base de datos que tiene réplicas de lectura en diferentes Regiones de AWS, para replicar diferentes bases de datos o tablas en diferentes regiones de Regiones de AWS.

**nota**  
También puede utilizar filtros de reproducción para especificar qué bases de datos y tablas se reproducen con una instancia de base de datos primaria de MariaDB que está configurada como una réplica en una topología de reproducción entrante. Para obtener más información acerca de esta configuración, consulte [Configuración de la replicación de posición de archivo de registro binario con una instancia de origen externa](MySQL.Procedural.Importing.External.Repl.md).

**Topics**
+ [Parámetros de filtrado de replicación con Amazon RDS for MariaDB](#USER_MariaDB.Replication.ReadReplicas.ReplicationFilters.Configuring)
+ [Limitaciones del filtrado de replicación con for MariaDB](#USER_MariaDB.Replication.ReadReplicas.ReplicationFilters.Limitations)
+ [Ejemplos de filtrado de replicación con for MariaDB](#USER_MariaDB.Replication.ReadReplicas.ReplicationFilters.Examples)
+ [Visualización de los filtros de replicación para una réplica de lectura](#USER_MariaDB.Replication.ReadReplicas.ReplicationFilters.Viewing)

## Parámetros de filtrado de replicación con Amazon RDS for MariaDB
<a name="USER_MariaDB.Replication.ReadReplicas.ReplicationFilters.Configuring"></a>

Para configurar filtros de replicación, establezca los siguientes parámetros de filtrado de replicación en la réplica de lectura:
+ `replicate-do-db` – Replicar los cambios en las bases de datos especificadas. Cuando se establece este parámetro para una réplica de lectura, solo se replican las bases de datos especificadas en el parámetro.
+ `replicate-ignore-db` – No replicar los cambios en las bases de datos especificadas. Cuando el parámetro `replicate-do-db` se establece para una réplica de lectura, este parámetro no se evalúa.
+ `replicate-do-table` – Replicar los cambios en las tablas especificadas. Cuando se establece este parámetro para una réplica de lectura, solo se replican las tablas especificadas en el parámetro. Además, cuando se establece el parámetro `replicate-do-db` o `replicate-ignore-db`, la base de datos que incluye las tablas especificadas debe incluirse en la replicación con la réplica de lectura.
+ `replicate-ignore-table` – No replicar los cambios en las tablas especificadas. Cuando el parámetro `replicate-do-table` se establece para una réplica de lectura, este parámetro no se evalúa.
+ `replicate-wild-do-table` – Replicar tablas en función de la base de datos y los patrones de nombre de tabla especificados. Se admiten los caracteres comodín `%` y `_`. Cuando se establece el parámetro `replicate-do-db` o `replicate-ignore-db`, asegúrese de incluir la base de datos que incluye las tablas especificadas en la replicación con la réplica de lectura.
+ `replicate-wild-ignore-table` – No replicar tablas en función de la base de datos y los patrones de nombre de tabla especificados. Se admiten los caracteres comodín `%` y `_`. Cuando el parámetro `replicate-do-table` o `replicate-wild-do-table` se establece para una réplica de lectura, este parámetro no se evalúa.

Los parámetros se evalúan en el orden en que se enumeran. Para obtener más información sobre cómo funcionan estos parámetros, consulte [la documentación de MariaDB](https://mariadb.com/kb/en/replication-filters/#replication-filters-for-replication-slaves).

Por defecto, cada uno de estos parámetros tiene un valor vacío. En cada réplica de lectura, puede utilizar estos parámetros para establecer, cambiar y eliminar los filtros de replicación. Cuando establezca uno de estos parámetros, separe cada filtro de los demás con una coma.

Puede utilizar los caracteres comodín `%` y `_` en los parámetros `replicate-wild-do-table` y `replicate-wild-ignore-table`. El comodín `%` coincide con cualquier número de caracteres y el comodín `_` solo coincide con un carácter. 

El formato de registro binario de la instancia de base de datos de origen es importante para la replicación, ya que determina el registro de los cambios en los datos. La configuración del parámetro `binlog_format` determina si la replicación está basada en filas o en instrucciones. Para obtener más información, consulte [Configuración de registros binarios de MariaDB](USER_LogAccess.MariaDB.BinaryFormat.md).

**nota**  
Todas las instrucciones de lenguaje de definición de datos (DDL) se replican como instrucciones, independientemente de la configuración de `binlog_format` en la instancia de base de datos de origen. 

## Limitaciones del filtrado de replicación con for MariaDB
<a name="USER_MariaDB.Replication.ReadReplicas.ReplicationFilters.Limitations"></a>

Las siguientes limitaciones se aplican al filtrado de replicación con for MariaDB:
+ Cada parámetro de filtrado de replicación tiene un límite de 2000 caracteres.
+ Las comas no son compatibles con los filtros de replicación.
+ Las opciones `binlog_do_db` y `binlog_ignore_db` de MariaDB para el filtrado de registros binarios no son compatibles.
+ El filtrado de replicación no es compatible con transacciones XA.

  Para obtener más información, consulte [Restricciones a las transacciones XA ](https://dev.mysql.com/doc/refman/8.0/en/xa-restrictions.html) en la documentación de MySQL.
+ No se admite el filtrado de reproducción con para MariaDB versión 10.2.

## Ejemplos de filtrado de replicación con for MariaDB
<a name="USER_MariaDB.Replication.ReadReplicas.ReplicationFilters.Examples"></a>

Para configurar el filtrado de replicación para una réplica de lectura, modifique los parámetros de filtrado de replicación en el grupo de parámetros asociado a la réplica de lectura.

**nota**  
No puede modificar un grupo de parámetros predeterminado. Si la réplica de lectura emplea un grupo de parámetros predeterminado, cree un nuevo grupo de parámetros y asócielo con la réplica de lectura. Para obtener más información acerca de los grupos de parámetros de base de datos, consulte [Grupos de parámetros para Amazon RDS](USER_WorkingWithParamGroups.md).

Puede establecer parámetros en un grupo de parámetros mediante la API de RDS, Consola de administración de AWS o AWS CLI. Para obtener información acerca de cómo configurar los parámetros, consulte [Modificación de los parámetros de un grupo de parámetros de base de datos en Amazon RDS](USER_WorkingWithParamGroups.Modifying.md). Cuando se establecen parámetros en un grupo de parámetros, todas las instancias de base de datos asociadas al grupo de parámetros utilizan la configuración de los parámetros. Si establece los parámetros de filtrado de replicación en un grupo de parámetros, asegúrese de que el grupo de parámetros está asociado solo con réplicas de lectura. Deje los parámetros de filtrado de replicación vacíos para las instancias de base de datos de origen

En los siguientes ejemplos se establecen los parámetros mediante el uso de AWS CLI. Estos ejemplos establecen `ApplyMethod` en `immediate` para que los cambios de los parámetros se produzcan inmediatamente después de que se complete el comando de la CLI. Si desea que se aplique un cambio pendiente después de reiniciar la réplica de lectura, establezca `ApplyMethod` en `pending-reboot`. 

Los siguientes ejemplos establecen filtros de replicación:
+ [Including databases in replication](#rep-filter-in-dbs-mariadb)
+ [Including tables in replication](#rep-filter-in-tables-mariadb)
+ [Including tables in replication with wildcard characters](#rep-filter-in-tables-wildcards-mariadb)
+ [Escaping wildcard characters in names](#rep-filter-escape-wildcards-mariadb)
+ [Excluding databases from replication](#rep-filter-ex-dbs-mariadb)
+ [Excluding tables from replication](#rep-filter-ex-tables-mariadb)
+ [Excluding tables from replication using wildcard characters](#rep-filter-ex-tables-wildcards-mariadb)<a name="rep-filter-in-dbs-mariadb"></a>

**Example Inclusión de bases de datos en la replicación**  
En el ejemplo siguiente se incluyen las bases de datos `mydb1` y `mydb2` en la replicación. Cuando se establece `replicate-do-db` para una réplica de lectura, solo se replican las bases de datos especificadas en el parámetro.  
Para Linux, macOS o:Unix  

```
aws rds modify-db-parameter-group \
  --db-parameter-group-name myparametergroup \
  --parameters "[{"ParameterName": "replicate-do-db", "ParameterValue": "mydb1,mydb2", "ApplyMethod":"immediate"}]"
```
En:Windows  

```
aws rds modify-db-parameter-group ^
  --db-parameter-group-name myparametergroup ^
  --parameters "[{"ParameterName": "replicate-do-db", "ParameterValue": "mydb1,mydb2", "ApplyMethod":"immediate"}]"
```<a name="rep-filter-in-tables-mariadb"></a>

**Example Inclusión de tablas en la replicación**  
En el siguiente ejemplo se incluyen las tablas `table1` y `table2` en la base de datos `mydb1` en la replicación.  
Para Linux, macOS o:Unix  

```
aws rds modify-db-parameter-group \
  --db-parameter-group-name myparametergroup \
  --parameters "[{"ParameterName": "replicate-do-table", "ParameterValue": "mydb1.table1,mydb1.table2", "ApplyMethod":"immediate"}]"
```
En:Windows  

```
aws rds modify-db-parameter-group ^
  --db-parameter-group-name myparametergroup ^
  --parameters "[{"ParameterName": "replicate-do-table", "ParameterValue": "mydb1.table1,mydb1.table2", "ApplyMethod":"immediate"}]"
```<a name="rep-filter-in-tables-wildcards-mariadb"></a>

**Example Inclusión de tablas en la replicación mediante el uso de caracteres comodín**  
En el ejemplo siguiente se incluyen tablas con nombres que empiezan con `orders` y `returns` en la base de datos `mydb` en la replicación.  
Para Linux, macOS o:Unix  

```
aws rds modify-db-parameter-group \
  --db-parameter-group-name myparametergroup \
  --parameters "[{"ParameterName": "replicate-wild-do-table", "ParameterValue": "mydb.orders%,mydb.returns%", "ApplyMethod":"immediate"}]"
```
En:Windows  

```
aws rds modify-db-parameter-group ^
  --db-parameter-group-name myparametergroup ^
  --parameters "[{"ParameterName": "replicate-wild-do-table", "ParameterValue": "mydb.orders%,mydb.returns%", "ApplyMethod":"immediate"}]"
```<a name="rep-filter-escape-wildcards-mariadb"></a>

**Example Escape de caracteres comodín en nombres**  
En el siguiente ejemplo se muestra cómo utilizar el carácter de escape `\` para aplicar el escape de un carácter comodín que forma parte de un nombre.   
Supongamos que tiene varios nombres de tabla en la base de datos `mydb1` que comienzan con `my_table` y desea incluir estas tablas en la replicación. Los nombres de tabla incluyen un guion bajo, que también es un carácter comodín, por lo que el ejemplo aplica el escape al guion bajo en los nombres de tabla.  
Para Linux, macOS o:Unix  

```
aws rds modify-db-parameter-group \
  --db-parameter-group-name myparametergroup \
  --parameters "[{"ParameterName": "replicate-wild-do-table", "ParameterValue": "my\_table%", "ApplyMethod":"immediate"}]"
```
En:Windows  

```
aws rds modify-db-parameter-group ^
  --db-parameter-group-name myparametergroup ^
  --parameters "[{"ParameterName": "replicate-wild-do-table", "ParameterValue": "my\_table%", "ApplyMethod":"immediate"}]"
```<a name="rep-filter-ex-dbs-mariadb"></a>

**Example Exclusión de bases de datos de la replicación**  
En el siguiente ejemplo se excluyen las bases de datos `mydb1` y `mydb2` de la replicación.  
Para Linux, macOS o:Unix  

```
aws rds modify-db-parameter-group \
  --db-parameter-group-name myparametergroup \
  --parameters "[{"ParameterName": "replicate-ignore-db", "ParameterValue": "mydb1,mydb2", "ApplyMethod":"immediate"}]"
```
En:Windows  

```
aws rds modify-db-parameter-group ^
  --db-parameter-group-name myparametergroup ^
  --parameters "[{"ParameterName": "replicate-ignore-db", "ParameterValue": "mydb1,mydb2", "ApplyMethod":"immediate"}]"
```<a name="rep-filter-ex-tables-mariadb"></a>

**Example Exclusión de tablas de la replicación**  
En el siguiente ejemplo se excluyen las tablas `table1` y `table2` en la base de datos `mydb1` de la replicación.  
Para Linux, macOS o:Unix  

```
aws rds modify-db-parameter-group \
  --db-parameter-group-name myparametergroup \
  --parameters "[{"ParameterName": "replicate-ignore-table", "ParameterValue": "mydb1.table1,mydb1.table2", "ApplyMethod":"immediate"}]"
```
En:Windows  

```
aws rds modify-db-parameter-group ^
  --db-parameter-group-name myparametergroup ^
  --parameters "[{"ParameterName": "replicate-ignore-table", "ParameterValue": "mydb1.table1,mydb1.table2", "ApplyMethod":"immediate"}]"
```<a name="rep-filter-ex-tables-wildcards-mariadb"></a>

**Example Exclusión de tablas de la replicación mediante el uso de caracteres comodín**  
En el siguiente ejemplo se excluyen las tablas con nombres que empiezan con `orders` y `returns` en la base de datos `mydb` de la replicación.  
Para Linux, macOS o:Unix  

```
aws rds modify-db-parameter-group \
  --db-parameter-group-name myparametergroup \
  --parameters "[{"ParameterName": "replicate-wild-ignore-table", "ParameterValue": "mydb.orders%,mydb.returns%", "ApplyMethod":"immediate"}]"
```
En:Windows  

```
aws rds modify-db-parameter-group ^
  --db-parameter-group-name myparametergroup ^
  --parameters "[{"ParameterName": "replicate-wild-ignore-table", "ParameterValue": "mydb.orders%,mydb.returns%", "ApplyMethod":"immediate"}]"
```

## Visualización de los filtros de replicación para una réplica de lectura
<a name="USER_MariaDB.Replication.ReadReplicas.ReplicationFilters.Viewing"></a>

Puede ver los filtros de replicación para una réplica de lectura de las siguientes maneras:
+ Verifique la configuración de los parámetros de filtrado de replicación en el grupo de parámetros asociado a la réplica de lectura.

  Para obtener instrucciones, consulte [Visualización de los valores de parámetros de un grupo de parámetros de base de datos en Amazon RDS](USER_WorkingWithParamGroups.Viewing.md).
+ En un cliente de MariaDB, conéctese a la réplica de lectura y ejecute la instrucción `SHOW REPLICA STATUS`.

  En la salida, los siguientes campos muestran los filtros de replicación para la réplica de lectura:
  + `Replicate_Do_DB`
  + `Replicate_Ignore_DB`
  + `Replicate_Do_Table`
  + `Replicate_Ignore_Table`
  + `Replicate_Wild_Do_Table`
  + `Replicate_Wild_Ignore_Table`

  Para obtener más información acerca de estos campos, consulte [Comprobación del estado de replicación](https://dev.mysql.com/doc/refman/8.0/en/replication-administration-status.html) en la documentación de MySQL.
**nota**  
Versiones anteriores de MariaDB utilizaban `SHOW SLAVE STATUS` en lugar de `SHOW REPLICA STATUS`. Si usa una versión de MariaDB anterior a la 10.5, utilice `SHOW SLAVE STATUS`. 

# Configuración de la replicación retrasada con MariaDB
<a name="USER_MariaDB.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.

  Para detener la replicación, utilice el procedimiento almacenado [mysql.rds\$1stop\$1replication](mysql-stored-proc-replicating.md#mysql_rds_stop_replication).
+ 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**  
La replicación retrasada es compatible con MariaDB 10.6 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.

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

## Configuración de la replicación retrasada durante la creación de réplicas de lectura
<a name="USER_MariaDB.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 MariaDB para conectarse como usuario maestro a la instancia de base de datos MariaDB 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_MariaDB.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 MariaDB 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.

## Promoción de una réplica de lectura
<a name="USER_MariaDB.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).

# Eliminación de réplicas de lectura con MariaDB
<a name="USER_MariaDB.Replication.ReadReplicas.Updates"></a>

Las réplicas de lectura se han diseñado para permitir las consultas de lectura, pero puede necesitar actualizaciones ocasionales. Por ejemplo, puede necesitar añadir un índice para acelerar los tipos concretos de consultas que obtienen acceso a la réplica. Puede habilitar las actualizaciones estableciendo el parámetro `read_only` en **0** en el grupo de parámetros de base de datos para la réplica de lectura. 

# Implementaciones de réplicas de lectura Multi-AZ con MariaDB
<a name="USER_MariaDB.Replication.ReadReplicas.MultiAZ"></a>

Puede crear una réplica de lectura a partir de implementaciones de instancia de base de datos Single-AZ o Multi-AZ. Puede usar implementaciones Multi-AZ para mejorar la durabilidad y la disponibilidad de los datos críticos, pero no puede usar la implementación Multi-AZ secundaria para responder a consultas de solo lectura. En lugar de ello, puede crear réplicas de lectura a partir de una instancia de base de datos Multi-AZ con un tráfico elevado para descargar las consultas de solo lectura. Si la instancia de origen de una implementación Multi-AZ conmuta a la secundaria, las réplicas de lectura asociadas cambian automáticamente para usar la secundaria (ahora principal) como origen de replicación. Para obtener más información, consulte [Configuración y administración de una implementación multi-AZ para Amazon RDS](Concepts.MultiAZ.md). 

Puede crear una réplica de lectura como instancia de base de datos de Multi-AZ. Amazon RDS crea una réplica en espera en otra zona de disponibilidad para permitir la conmutación por error de la réplica. La creación de su réplica de lectura como instancia de base de datos Multi-AZ es independiente de si la base de datos de origen es una instancia de base de datos Multi-AZ. 

# Uso de réplicas de lectura en cascada con RDS para MariaDB
<a name="USER_MariaDB.Replication.ReadReplicas.Cascading"></a>

RDS para MariaDB admite réplicas de lectura en cascada. Con *réplicas de lectura en cascada*, puede escalar las lecturas sin agregar sobrecarga a su instancia de base de datos de RDS para MariaDB de origen.

Con réplicas de lectura en cascada, la instancia de base de datos de RDS para MariaDB envía datos a la primera réplica de lectura de la cadena. Esa réplica de lectura envía datos a la segunda réplica de la cadena, etc. El resultado final es que todas las réplicas de lectura de la cadena tienen los cambios de la instancia de base de datos de RDS para MariaDB, pero sin la sobrecarga únicamente en la instancia de base de datos de origen.

Puede crear una serie de hasta tres réplicas de lectura en cadena a partir de una instancia de base de datos RDS para MariaDB de origen. Por ejemplo, suponga que tiene una instancia de base de datos de RDS para MariaDB, `mariadb-main`. Puede hacer lo siguiente:
+ A partir de `mariadb-main`, cree la primera réplica de lectura de la cadena, `read-replica-1`.
+ A continuación, a partir de `read-replica-1`, cree la siguiente réplica de lectura de la cadena, `read-replica-2`.
+ Por último, a partir de `read-replica-2`, cree la tercera réplica de lectura de la cadena, `read-replica-3`.

No se puede crear otra réplica de lectura más allá de esta tercera réplica de lectura en cascada de la serie para `mariadb-main`. Una serie completa de instancias desde una instancia de base de datos de origen de RDS para MariaDB hasta el final de una serie de réplicas de lectura en cascada puede constar de cuatro instancias de base de datos como máximo.

Para que las réplicas de lectura en cascada funcionen, cada instancia de origen de RDS para MariaDB debe tener las copias de seguridad automáticas activadas. Para habilitar las copias de seguridad automáticas en una réplica de lectura, primero debe crear la réplica de lectura y modificarla a continuación para habilitar las copias de seguridad automáticas. Para obtener más información, consulte [Creación de una réplica de lectura](USER_ReadRepl.Create.md).

Al igual que con cualquier réplica de lectura, puede promocionar una réplica de lectura que forma parte de una cascada. La promoción de una réplica de lectura desde dentro de una cadena de réplicas de lectura elimina esa réplica de la cadena. Por ejemplo, suponga que desea trasladar parte de la carga de trabajo de su Instancia de base de datos de `mariadb-main` a una nueva instancia para que la utilice únicamente el departamento de contabilidad. Tomando la cadena de tres réplicas de lectura del ejemplo, decide promocionar `read-replica-2`. La cadena se ve afectada de la siguiente manera:
+ Promover `read-replica-2` la elimina de la cadena de replicación.
  + Ahora es una instancia de base de datos de lectura o escritura completa.
  + Continúa replicando en `read-replica-3`, tal como hacía antes de la promoción.
+ Su `mariadb-main` sigue replicándose en `read-replica-1`.

Para obtener más información acerca de la promoción de réplicas 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).

# Monitoreo de réplicas de lectura de MariaDB
<a name="USER_MariaDB.Replication.ReadReplicas.Monitor"></a>

Para las réplicas de lectura de MariaDB, puede monitorear el retraso de replicación en Amazon CloudWatch mediante la visualización de la métrica `ReplicaLag` de Amazon RDS. La métrica `ReplicaLag` indica el valor del campo `Seconds_Behind_Master` del comando `SHOW REPLICA STATUS`. 

**nota**  
Versiones anteriores de MariaDB utilizaban `SHOW SLAVE STATUS` en lugar de `SHOW REPLICA STATUS`. Si usa una versión de MariaDB anterior a la 10.5, utilice `SHOW SLAVE STATUS`. 

Los motivos comunes de retardo de la replicación para MariaDB son los siguientes: 
+ Una interrupción de la red.
+ Escritura en tablas con índices en una réplica de lectura. Si el parámetro `read_only` no se ha establecido en 0 en la réplica de lectura, puede interrumpirse la replicación.
+ Uso de un motor de almacenamiento no transaccional como MyISAM. La reproducción solo se admite para el motor de almacenamiento InnoDB en MariaDB.

Cuando la métrica `ReplicaLag` llegue a 0, la réplica estará funcionando al mismo ritmo que la instancia de base de datos de origen. Si la métrica `ReplicaLag` devuelve -1, la replicación no está activa. `ReplicaLag` = -1 es equivalente a `Seconds_Behind_Master` = `NULL`. 

# Inicio y detención de replicaciones con réplicas de lectura de MariaDB
<a name="USER_MariaDB.Replication.ReadReplicas.StartStop"></a>

Puede detener y reiniciar el proceso de replicación en una instancia de base de datos de Amazon RDS llamando a los procedimientos [mysql.rds\$1stop\$1replication](mysql-stored-proc-replicating.md#mysql_rds_stop_replication) y [mysql.rds\$1start\$1replication](mysql-stored-proc-replicating.md#mysql_rds_start_replication) almacenados en el sistema. Puede hacerlo cuando replique entre dos instancias de Amazon RDS para las operaciones de larga duración, como la creación de índices grandes. También debe detener y comenzar la replicación cuando importe o exporte bases de datos. Para obtener más información, consulte [Importación de datos a una instancia de base de datos de Amazon RDS para MariaDB con tiempo de inactividad reducido](mariadb-importing-data-reduced-downtime.md) y [Exportación de datos desde una instancia de base de datos MySQL mediante replicación](MySQL.Procedural.Exporting.NonRDSRepl.md). 

Si la replicación se detiene durante más de 30 días consecutivos, ya sea manualmente o a causa de un error de replicación, Amazon RDS termina la replicación entre la instancia de base de datos de origen y todas las réplicas de lectura. Realiza ese procedimiento para impedir que aumenten los requisitos de almacenamiento en la instancia de base de datos de origen y que se incrementen los tiempos de conmutación por error. La instancia de base de datos de la réplica de lectura seguirá estando disponible. Sin embargo, la replicación no se podrá reanudar porque los registros binarios requeridos por la réplica de lectura se eliminan de la instancia de base de datos de origen cuando finaliza la replicación. Puede crear una nueva réplica de lectura para la instancia de base de datos de origen si desea restablecer la replicación. 

# Solución de problemas de una réplica de lectura de MariaDB
<a name="USER_ReadRepl.Troubleshooting.MariaDB"></a>

Las tecnologías de replicación para MariaDB son asíncronas. Como son asíncronas, cabe esperar aumentos ocasionales de `BinLogDiskUsage` en la instancia de base de datos de origen y de `ReplicaLag` en la réplica de lectura. Por ejemplo, en paralelo se pueden realizar gran volumen de operaciones de escritura en la instancia de base de datos de origen. En cambio, las operaciones de escritura en la réplica de lectura se serializan con un único subproceso E/S que puede provocar un retraso entre la instancia de origen y la réplica de lectura. Para obtener más información acerca de las réplicas de solo lectura en la documentación de MariaDB, vaya a [Replication Overview](http://mariadb.com/kb/en/mariadb/replication-overview/).

Puede hacer varias cosas para reducir el retraso entre las actualizaciones de una instancia de base de datos de origen y las actualizaciones posteriores de la réplica de lectura. Por ejemplo, puede hacer lo siguiente:
+ Dimensionar una réplica de lectura para que tenga un tamaño de almacenamiento y una clase de instancia de base de datos comparables a los de la instancia de base de datos de origen.
+ Asegurarse de que los valores de los parámetros de los grupos de parámetros de base de datos utilizados en la instancia de base de datos de origen y la réplica de lectura son compatibles. Para obtener más información y un ejemplo, consulte el análisis del parámetro `max_allowed_packet` que se puede encontrar más adelante en esta sección.

Amazon RDS monitorea el estado de la replicación de las réplicas de lectura y actualiza el campo `Replication State` de la instancia de la réplica de lectura a `Error` si la replicación se detiene por cualquier motivo. Un ejemplo de ello pueden ser las consultas DML que se ejecutan en la réplica de lectura y que entran en conflicto con las actualizaciones realizadas en la instancia de base de datos de origen. 

Puede revisar los detalles del error asociado mostrado por el motor de MariaDB visualizando el campo `Replication Error`. También se generan eventos que indican el estado de la réplica de lectura, entre los que se incluyen [RDS-EVENT-0045](USER_Events.Messages.md#RDS-EVENT-0045), [RDS-EVENT-0046](USER_Events.Messages.md#RDS-EVENT-0046) y [RDS-EVENT-0047](USER_Events.Messages.md#RDS-EVENT-0047). Para obtener más información acerca de los eventos y la suscripción a ellos, consulte [Uso de notificaciones de eventos de Amazon RDS](USER_Events.md). Si aparece un mensaje de error de MariaDB, revise el error en la [documentación sobre los mensajes de error de MariaDB](http://mariadb.com/kb/en/mariadb/mariadb-error-codes/).

Un problema frecuente que puede causar errores de replicación es que el valor del parámetro `max_allowed_packet` de una réplica de lectura sea inferior al parámetro `max_allowed_packet` de la instancia de base de datos de origen. El parámetro `max_allowed_packet` es un parámetro personalizado que se puede establecer en un grupo de parámetros de base de datos y que se usa para especificar el tamaño máximo del código DML que se puede ejecutar en la base de datos. En algunos casos, el valor del parámetro `max_allowed_packet` en el grupo de parámetros de base de datos asociado a una instancia de base de datos de origen es inferior al valor del parámetro `max_allowed_packet` del grupo de parámetros de base de datos asociado a la réplica de lectura de origen. En estos casos, el proceso de replicación puede provocar un error (paquete mayor que los bytes de "max\$1allowed\$1packet") y parar la replicación. Puede resolver el error haciendo que el origen y la réplica de lectura usen grupos de parámetros de base de datos con los mismos valores del parámetro `max_allowed_packet`. 

Entre las situaciones comunes que pueden causar errores de replicación se incluyen las siguientes:
+ Escritura en tablas en una réplica de lectura. Si desea crear índices en una réplica de lectura, debe establecer el parámetro `read_only` en **0** para crear los índices. Si se escribe en las tablas de la réplica de lectura, podría interrumpirse la replicación. 
+ Uso de un motor de almacenamiento no transaccional como MyISAM. Las réplicas de lectura requieren un motor de almacenamiento transaccional. La reproducción solo se admite para el motor de almacenamiento InnoDB en MariaDB.
+ Uso de consultas no deterministas que no sean seguras, como `SYSDATE()`. Para obtener más información, consulte [Determinación de instrucciones seguras e inseguras en el registro binario](https://dev.mysql.com/doc/refman/8.0/en/replication-rbr-safe-unsafe.html). 

Si decide que es seguro hacer caso omiso de un error, puede seguir los pasos que se describen en la sección [Omisión del error de replicación actual de RDS para MySQL](Appendix.MySQL.CommonDBATasks.SkipError.md). De lo contrario, puede eliminar la réplica de lectura y crear una instancia que use el mismo identificador de instancias de bases de datos para que el punto de enlace siga siendo el mismo que en la réplica de lectura antigua. Si se corrige un error de replicación, `Replication State` cambia a *replicating*.

Para las instancias de base de datos de MariaDB, en algunos casos las réplicas de lectura no se pueden cambiar a la secundaria si algunos eventos de binlog no se vacían durante el error. En estos casos, elimine y vuelva a crear manualmente las réplicas de lectura. Puede reducir la probabilidad de que esto ocurra al establecer los siguientes valores de parámetro: `sync_binlog=1` y `innodb_flush_log_at_trx_commit=1`. Estos ajustes pueden reducir el desempeño, así que es aconsejable probar su impacto antes de implementar los cambios en un entorno de producción.