Configuración de filtros de replicación con MySQL - Amazon Relational Database Service

Configuración de filtros de replicación con MySQL

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 MySQL 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.

Configurar parámetros de filtrado de replicación de RDS for MySQL

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, asegúrese de incluir la base de datos que incluye las tablas especificadas 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 MySQL.

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 del registro binario de RDS para MySQL.

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 de RDS fopara r MySQL

Las siguientes limitaciones se aplican al filtrado de replicación de RDS para MySQL:

  • Cada parámetro de filtrado de replicación tiene un límite de 2000 caracteres.

  • No se admiten comas en los filtros de replicación para los valores de los parámetros. En una lista de parámetros, las comas solo se pueden usar como separadores de valores. Por ejemplo, no se admite ParameterValue='`a,b`', pero sí ParameterValue='a,b'.

  • Las opciones --binlog-do-db y --binlog-ignore-db de MySQL 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 en la documentación de MySQL.

Ejemplos de filtrado de replicación de RDS para MySQL

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.

Puede establecer parámetros en un grupo de parámetros mediante la API de RDS, AWS Management Console 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. 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:

ejemplo 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.

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"
ejemplo 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"
ejemplo 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 order y return 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.order%,mydb.return%',ApplyMethod=immediate"

En:Windows

aws rds modify-db-parameter-group ^ --db-parameter-group-name myparametergroup ^ --parameters "ParameterName=replicate-wild-do-table,ParameterValue='mydb.order%,mydb.return%',ApplyMethod=immediate"
ejemplo Exclusión de bases de datos de la replicación

En el siguiente ejemplo se excluyen las bases de datos mydb5 y mydb6 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='mydb5,mydb6',ApplyMethod=immediate"

En:Windows

aws rds modify-db-parameter-group ^ --db-parameter-group-name myparametergroup ^ --parameters "ParameterName=replicate-ignore-db,ParameterValue='mydb5,mydb6',ApplyMethod=immediate"
ejemplo Exclusión de tablas de la replicación

En el siguiente ejemplo, se excluyen de la replicación las tablas table1 en la base de datos mydb5 y table2 en la base de datos mydb6.

Para Linux, macOS o:Unix

aws rds modify-db-parameter-group \ --db-parameter-group-name myparametergroup \ --parameters "ParameterName=replicate-ignore-table,ParameterValue='mydb5.table1,mydb6.table2',ApplyMethod=immediate"

En:Windows

aws rds modify-db-parameter-group ^ --db-parameter-group-name myparametergroup ^ --parameters "ParameterName=replicate-ignore-table,ParameterValue='mydb5.table1,mydb6.table2',ApplyMethod=immediate"
ejemplo 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 order y return en la base de datos mydb7 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='mydb7.order%,mydb7.return%',ApplyMethod=immediate"

En:Windows

aws rds modify-db-parameter-group ^ --db-parameter-group-name myparametergroup ^ --parameters "ParameterName=replicate-wild-ignore-table,ParameterValue='mydb7.order%,mydb7.return%',ApplyMethod=immediate"

Visualización de los filtros de replicación para una réplica de lectura

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.

  • En un cliente de MySQL, 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 en la documentación de MySQL.

    nota

    Versiones anteriores de MySQL utilizaban SHOW SLAVE STATUS en lugar de SHOW REPLICA STATUS. Si usa una versión de MySQL anterior a la 8.0.23, utilice SHOW SLAVE STATUS.