Configuración de la replicación de varios orígenes de RDS para MySQL - Amazon Relational Database Service

Configuración de la replicación de varios orígenes de RDS para MySQL

Con la replicación de varios orígenes, puede configurar una instancia de base de datos de Amazon RDS para MySQL como una réplica que reciba eventos de registros binarios de más de una instancia de base de datos de origen de RDS para MySQL. Las instancias de base de datos de RDS para MySQL que ejecutan las siguientes versiones de motor admiten la replicación de varios orígenes:

  • 8.0.35 y versiones secundarias posteriores

  • 5.7.44 y versiones secundarias posteriores

Para obtener información acerca de la replicación varios orígenes de MySQL, consulte MySQL Multi-Source Replication en la documentación de MySQL. La documentación de MySQL contiene información detallada sobre esta característica, mientras que en este tema se describe cómo configurar y administrar canales de replicación de varios orígenes en las instancias de base de datos de RDS para MySQL.

Casos de uso de la replicación de varios orígenes

Los siguientes casos son buenos candidatos para utilizar la replicación de varios orígenes en RDS para MySQL:

  • Aplicaciones que necesitan fusionar o combinar varias particiones de instancias de base de datos independientes en una sola.

  • Aplicaciones que necesitan generar informes a partir de datos consolidados de varios orígenes.

  • Requisitos para crear copias de seguridad consolidadas de los datos a largo plazo que se distribuyen entre varias instancias de base de datos de RDS para MySQL.

Consideraciones y prácticas recomendadas para la replicación de varios orígenes

Antes de utilizar la replicación de varios orígenes en RDS para MySQL, revise las siguientes consideraciones y prácticas recomendadas:

  • Asegúrese de que una instancia de base de datos configurada como réplica de varios orígenes cuente con recursos suficientes, como rendimiento, memoria, CPU e IOPS, para gestionar la carga de trabajo de varias instancias de origen.

  • Monitorice periódicamente el uso de los recursos en su réplica de varios orígenes y ajuste la configuración de la instancia o el almacenamiento para gestionar la carga de trabajo sin agotar los recursos.

  • Para configurar la replicación de varios subprocesos en una réplica de varios orígenes, configure la variable del sistema replica_parallel_workers en un valor superior a 0. En este caso, el número de subprocesos asignados a cada canal es el valor de esta variable, más un subproceso coordinador para administrar los subprocesos del aplicador.

  • Configure los filtros de replicación de la forma adecuada para evitar conflictos. Para replicar una base de datos completa en otra base de datos en una réplica, puede usar la opción --replicate-rewrite-db. Por ejemplo, puede replicar todas las tablas de la base de datos A en la base de datos B en una instancia de réplica. Este enfoque puede resultar útil cuando todas las instancias de origen utilizan la misma convención de nomenclatura de esquemas. Para obtener información sobre la opción --replicate-rewrite-db, consulte Replica Server Options and Variables en la documentación de MySQL.

  • Para evitar errores de replicación, evite escribir en la réplica. Se recomienda activar el parámetro read_only en réplicas de varios orígenes para bloquear las operaciones de escritura. Esto ayuda a eliminar los problemas de replicación causados por operaciones de escritura conflictivas.

  • Para aumentar el rendimiento de las operaciones de lectura, como las ordenaciones y las uniones de carga elevada que se ejecutan en la réplica de varios orígenes, considere la posibilidad de utilizar lecturas optimizadas para RDS. Esta característica puede ayudar con las consultas que dependen de tablas temporales o archivos de ordenación de gran tamaño. Para obtener más información, consulte Mejora del rendimiento de las consultas de RDS para MySQL con lecturas optimizadas de Amazon RDS.

  • Para minimizar el retardo en la replicación y mejorar el rendimiento de una réplica de varios orígenes, considere la posibilidad de habilitar escrituras optimizadas. Para obtener más información, consulte Mejora del rendimiento de escritura con escrituras optimizadas para RDS para MySQL.

  • Realice operaciones de administración (como cambiar la configuración) en un canal a la vez y evite realizar cambios en varios canales desde varias conexiones. Estas prácticas pueden provocar conflictos en las operaciones de replicación. Por ejemplo, la ejecución de los procedimientos rds_skip_repl_error_for_channel y rds_start_replication_for_channel de forma simultánea desde varias conexiones puede provocar la omisión de eventos en un canal diferente al previsto.

  • Puede habilitar las copias de seguridad en una instancia de replicación de varios orígenes y exportar los datos de esa instancia a un bucket de Amazon S3 para almacenarlos a largo plazo. Sin embargo, también es importante configurar las copias de seguridad con la retención adecuada en las instancias de origen individuales. Para obtener más información acerca de la exportación de datos de instantáneas a Amazon S3, consulte Exportación de datos de instantáneas de bases de datos a Amazon S3.

  • Para distribuir la carga de trabajo de lectura en una réplica de varios orígenes, puede crear réplicas de lectura a partir de una réplica de varios orígenes. Puede ubicar estas réplicas de lectura en diferentes Regiones de AWS según los requisitos de su aplicación. Para obtener más información acerca de las réplicas de lectura, consulte Uso de réplicas de lectura de MySQL.

Requisitos previos para la replicación de varios orígenes

Antes de configurar la replicación de varios orígenes, se deben completar los siguientes requisitos previos.

  • Asegúrese de que cada instancia de base de datos de RDS para MySQL de origen tenga habilitadas las copias de seguridad automáticas. Al habilitar las copias de seguridad automáticas, se habilita el registro binario. Para obtener información acerca de cómo habilitar las copias de seguridad automáticas, consulte Habilitar las copias de seguridad automatizadas.

  • Para evitar errores de replicación, se recomienda bloquear las operaciones de escritura en las instancias de base de datos de origen. Para ello, defina el parámetro read-only en ON en un grupo de parámetros personalizado asociado a la instancia de base de datos de origen de RDS para MySQL. Puede utilizar la AWS Management Console o la AWS CLI para crear un nuevo grupo de parámetros personalizado o modificar uno existente. Para obtener más información, consulte Creación de un grupo de parámetros de base de datos y Modificación de parámetros de un grupo de parámetros de base de datos.

  • Para cada instancia de base de datos de origen, agregue la dirección IP de la instancia al grupo de seguridad de la nube privada virtual (VPC) de Amazon para la instancia de base de datos de varios orígenes. Para identificar la dirección IP de una instancia de base de datos de origen, puede ejecutar el comando dig RDS Endpoint. Ejecute el comando desde una instancia de Amazon EC2 en la misma VPC que la instancia de base de datos de varios orígenes de destino.

  • Para cada instancia de base de datos de origen, utilice un cliente para conectarse a la instancia de base de datos y cree un usuario de base de datos con los privilegios necesarios para la replicación, como en el siguiente ejemplo.

    CREATE USER 'repl_user' IDENTIFIED BY 'password'; GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user';

Configuración de canales de replicación de varios orígenes en instancias de base de datos de RDS para MySQL

La configuración de los canales de replicación de varios orígenes es similar a la configuración de la replicación de un solo origen. Para la replicación de varios orígenes, primero habilite el registro binario en la instancia de origen. A continuación, importe los datos desde los orígenes a la réplica de varios orígenes. A continuación, se inicia la replicación desde cada origen utilizando las coordenadas del registro binario o el posicionamiento automático de GTID.

Para configurar una instancia de base de datos de RDS para MySQL como una réplica de varios orígenes de dos o más instancias de base de datos de RDS para MySQL, realice estos pasos.

Paso 1: importe datos de las instancias de base de datos de origen a la réplica de varios orígenes

Realice los siguientes pasos en cada instancia de base de datos de origen.

Antes de importar los datos de un origen a la réplica de varios orígenes, ejecute el comando SHOW MASTER STATUS para determinar el archivo de registro binario actual y su posición. Tome nota de estos datos para usarlos en el paso siguiente. En este ejemplo de salida, el archivo es mysql-bin-changelog.000031 y la posición es 107.

File Position ----------------------------------- mysql-bin-changelog.000031 107 -----------------------------------

Ahora copie la base de datos desde la instancia de base de datos de origen a la réplica de varios orígenes utilizando mysqldump, como en el ejemplo siguiente.

mysqldump --databases database_name \ --single-transaction \ --compress \ --order-by-primary \ -u RDS_user_name \ -p RDS_password \ --host=RDS Endpoint | mysql \ --host=RDS Endpoint \ --port=3306 \ -u RDS_user_name \ -p RDS_password

Tras copiar la base de datos, puede establecer el parámetro de solo lectura en OFF en la instancia de base de datos de origen.

Paso 2: inicie la replicación desde las instancias de base de datos de origen a la réplica de varios orígenes

Para cada instancia de base de datos de origen, use las credenciales de usuario maestro de para conectarse a la instancia y ejecute los siguientes dos procedimientos almacenados. Estos procedimientos almacenados configuran la replicación en un canal e inician la replicación. En este ejemplo, se utilizan el nombre y la posición del archivo binlog de la salida del ejemplo del paso anterior.

CALL mysql.rds_set_external_source_for_channel('mysourcehost.example.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.000031', 107, 0, 'channel_1'); CALL mysql.rds_start_replication_for_channel('channel_1');

Para obtener más información acerca del uso de estos procedimientos almacenados y otros para configurar y administrar los canales de replicación, consulte Administración de la replicación de varios orígenes.

Uso de filtros con la replicación de varios orígenes

Puede utilizar filtros de replicación para especificar qué bases de datos y tablas se replican con una réplica de varios orígenes. Los filtros de replicación pueden incluir bases de datos y tablas en la replicación o excluirlas de la replicación. Para obtener información sobre los filtros de replicación, consulte Configuración de filtros de replicación con MySQL.

Con la replicación de varios orígenes, puede configurar los filtros de replicación de forma global o en el nivel del canal. El filtrado en el nivel del canal solo está disponible con las instancias de base de datos compatibles que ejecutan la versión 8.0. Los siguientes ejemplos muestran cómo configurar filtros globalmente o en el nivel del canal.

Tenga en cuenta los siguientes requisitos y comportamiento con el filtrado en la replicación de varios orígenes:

  • Los nombres de los canales deben ir entre comillas inversas (``).

  • Si cambia los filtros de replicación en el grupo de parámetros, el sql_thread de la réplica de varios orígenes de todos los canales con actualizaciones se reinicia para aplicar los cambios de forma dinámica. Si una actualización incluye un filtro global, se reinician todos los canales de replicación en estado de ejecución.

  • Todos los filtros globales se aplican antes que cualquier filtro específico del canal.

  • Si un filtro se aplica globalmente y en el ámbito del canal, el filtro solo se aplica en el nivel del canal. Por ejemplo, si los filtros son replicate_ignore_db="db1,`channel_22`:db2", replicate_ignore_db configurado en db1 se aplica a todos los canales excepto a channel_22 y solo channel_22 omite los cambios efectuados desde db2.

Ejemplo 1: configuración de un filtro global

En el ejemplo siguiente, la base de datos temp_data se excluye de la replicación en todos los canales.

Para Linux, macOS o Unix:

aws rds modify-db-parameter-group \ --db-parameter-group-name myparametergroup \ --parameters "ParameterName=replicate-ignore-db,ParameterValue='temp_data',ApplyMethod=immediate"

Ejemplo 2: configuración de un filtro en el nivel del canal

En el siguiente ejemplo, los cambios efectuados desde la base de datos sample22 solo se incluyen en el canal channel_22. Del mismo modo, los cambios efectuados desde la base de datos sample99 solo se incluyen en el canal channel_99.

Para Linux, macOS o Unix:

aws rds modify-db-parameter-group \ --db-parameter-group-name myparametergroup \ --parameters "ParameterName=replicate-do-db,ParameterValue='\`channel_22\`:sample22,\`channel_99\`:sample99',ApplyMethod=immediate"

Monitorización de canales de replicación de varios orígenes

Puede monitorizar canales individuales en una réplica de varios orígenes mediante los siguientes métodos:

  • Para monitorizar el estado de todos los canales o de un canal específico, conéctese a la réplica de varios orígenes y ejecute el comando SHOW REPLICA STATUS o SHOW REPLICA STATUS FOR CHANNEL 'channel_name'. Para obtener más información, consulte Checking Replication Status en la documentación de MySQL.

  • Para recibir una notificación cuando se inicie, detenga o elimine un canal de replicación, utilice la notificación de eventos de RDS. Para obtener más información, consulte Uso de notificaciones de eventos de Amazon RDS.

  • Para monitorizar el retardo de un canal específico, compruebe la métrica ReplicationChannelLag correspondiente. Los puntos de datos de esta métrica tienen un periodo de 60 segundos (1 minuto) y están disponibles 15 días. Para localizar el retardo del canal de replicación de un canal, utilice el identificador de instancia y el nombre del canal de replicación. Para recibir una notificación cuando este retardo supere un umbral determinado, puede configurar una alarma de CloudWatch. Para obtener más información, consulte Supervisión de métricas de Amazon RDS con Amazon CloudWatch.

Limitaciones de la replicación de varios orígenes en RDS para MySQL

Las siguientes limitaciones se aplican a la replicación de varios orígenes en RDS para MySQL:

  • Actualmente, RDS para MySQL admite la configuración de un máximo de 15 canales para una réplica de varios orígenes.

  • Una instancia de réplica de lectura no se puede configurar como una réplica de varios orígenes.

  • Para configurar la replicación de varios orígenes en RDS para MySQL con el motor que ejecuta la versión 5.7, Performance Schema debe estar habilitado en la instancia de réplica. La habilitación de Performance Schema es opcional en la versión 8.0 del motor de ejecución de RDS para MySQL.

  • En el caso del motor que ejecuta la versión 5.7 de RDS para MySQL, los filtros de replicación se aplican a todos los canales de replicación. Para el motor que ejecuta la versión 8.0 de RDS para MySQL, puede configurar filtros que se apliquen a todos los canales de replicación o a canales individuales.

  • Al restaurar una instantánea de RDS o realizar una restauración a un momento dado (PITR), no se restauran las configuraciones de los canales de réplica de varios orígenes.

  • Cuando se crea una réplica de lectura de una réplica de varios orígenes, solo se replican los datos de la instancia de varios orígenes. No se restaura la configuración de ningún canal.

  • MySQL no admite la configuración de un número diferente de trabajadores paralelos para cada canal. Cada canal recibe el mismo número de trabajadores paralelos en función del valor de replica_parallel_workers.

Si su objetivo de replicación de varios orígenes es un clúster de base de datos multi-AZ, se aplican las siguientes limitaciones adicionales:

  • Se debe configurar un canal para una instancia de RDS para MySQL de origen antes de que se produzca cualquier escritura en esa instancia.

  • Cada instancia de RDS para MySQL de origen debe tener la replicación basada en GTID habilitada.

  • Un evento de conmutación por error en el clúster de base de datos elimina la configuración de replicación de varios orígenes. Para restaurar esa configuración, es necesario repetir los pasos de configuración.