Configuración de clústeres activo-activo para RDS para MySQL
Puede configurar un clúster activo-activo para RDS para MySQL mediante el complemento MySQL Group Replication. El complemento MySQL Group Replication es compatible con las instancias de base de datos de RDS para MySQL que ejecutan la versión 8.0.35 y versiones secundarias posteriores.
Para obtener información acerca de MySQL Group Replication, consulte Group Replication
nota
En aras de la brevedad, todas las menciones a clúster “activo-activo” que se realicen en este tema se refieren a clústeres activo-activo que utilizan el complemento Group Replication de MySQL.
Temas
- Casos de uso de clústeres activo-activo
- Consideraciones y prácticas recomendadas de los clústeres activo-activo
- Requisitos previos de un clúster activo-activo entre VPC
- Configuración de parámetros obligatorios para los clústeres activo-activo
- Conversión de una instancia de base de datos existente en un clúster activo-activo
- Configuración de un clúster activo-activo con nuevas instancias de base de datos
- Adición de una instancia de base de datos en un clúster activo-activo
- Monitorización de clústeres activo-activo
- Detención de Group Replication en una instancia de base de datos de un clúster activo-activo
- Cambio de nombre de una instancia de base de datos en un clúster activo-activo
- Eliminación de una instancia de base de datos de un clúster activo-activo
- Limitaciones de los clústeres activo-activo de RDS para MySQL
Casos de uso de clústeres activo-activo
Los siguientes casos son buenos candidatos para usar clústeres activo-activo:
-
Aplicaciones que necesitan todas las instancias de base de datos del clúster para admitir operaciones de escritura. El complemento Group Replication mantiene la coherencia de datos en cada instancia de base de datos del clúster activo-activo. Para obtener más información acerca de su funcionamiento, consulte Group Replication
en la documentación de MySQL. -
Aplicaciones que requieren una disponibilidad continua de la base de datos. Con un clúster activo-activo, los datos se conservan en todas las instancias de base de datos del clúster. Si se produce un error en una instancia de base de datos, la aplicación puede redirigir el tráfico a otra instancia de base de datos del clúster.
-
Aplicaciones que podrían necesitar dividir las operaciones de lectura y escritura entre distintas instancias de base de datos del clúster para equilibrar la carga. Con un clúster activo-activo, sus aplicaciones pueden enviar tráfico de lectura a instancias de base de datos específicas y tráfico de escritura a otras. También puede cambiar las instancias de base de datos a las que desea enviar lecturas o escrituras en cualquier momento.
Consideraciones y prácticas recomendadas de los clústeres activo-activo
Antes de utilizar clústeres activo-activo de RDS para MySQL, revise las siguientes consideraciones y prácticas recomendadas:
-
Los clústeres activo-activo no pueden tener más de nueve instancias de base de datos.
-
Con el complemento Group Replication, puede controlar las garantías de coherencia de las transacciones del clúster activo-activo. Para obtener más información, consulte Transaction Consistency Guarantees
en la documentación de MySQL. -
Es posible que surjan conflictos cuando distintas instancias de base de datos actualizan la misma fila de un clúster activo-activo. Para obtener información sobre conflictos y resolución de conflictos, consulte Group Replication
en la documentación de MySQL. -
Para garantizar la tolerancia a errores, incluya al menos tres instancias de base de datos en el clúster activo-activo. Es posible configurar un clúster activo-activo con solo una o dos instancias de base de datos, pero el clúster no tolerará errores. Para obtener información acerca de la tolerancia a errores, consulte Fault-tolerance
en la documentación de MySQL. -
Cuando una instancia de base de datos se une a un clúster activo-activo existente y ejecuta la misma versión del motor que la versión de motor más antigua del clúster, la instancia de base de datos se une en modo de lectura-escritura.
-
Cuando una instancia de base de datos se une a un clúster activo-activo existente y ejecuta una versión de motor posterior a la versión de motor más antigua del clúster, la instancia de base de datos debe permanecer en modo de solo lectura.
-
Si habilita Group Replication para una instancia de base de datos configurando su parámetro
rds.group_replication_enabled
en1
en el grupo de parámetros de base de datos, pero la replicación no se ha iniciado, la instancia de base de datos se coloca en modo de solo superlectura para evitar incoherencias en los datos. Para obtener información sobre el modo de solo superlectura, consulte la documentación de MySQL. -
Puede actualizar una instancia de base de datos de un clúster activo-activo, pero la instancia de base de datos será de solo lectura hasta que todas las demás instancias de base de datos del clúster activo-activo se actualicen a la misma versión del motor o a una versión del motor posterior. Al actualizar una instancia de base de datos, esta se une automáticamente al mismo clúster activo-activo cuando se completa la actualización. Para evitar que una instancia de base de datos cambie involuntariamente al modo de solo lectura, desactive las actualizaciones automáticas de las versiones secundarias en ella. Para obtener información acerca de la actualización de una instancia de base de datos MySQL, consulte Actualización del motor de base de datos MySQL.
-
Puede añadir una instancia de base de datos en una implementación de instancia de base de datos multi-AZ a un clúster activo-activo existente. También puede convertir una instancia de base de datos single-AZ de un clúster activo-activo en una implementación de instancia de base de datos multi-AZ. Si se produce un error en una instancia de base de datos principal de una implementación multi-AZ, esa instancia principal realiza una conmutación por error a la instancia en espera. La nueva instancia de base de datos principal se une automáticamente al mismo clúster una vez finalizada la conmutación por error. Para obtener más información acerca de las implementaciones de instancias de base de datos multi-AZ, consulte Implementaciones de instancias de base de datos Multi-AZ.
-
Recomendamos que las instancias de base de datos de un clúster activo-activo tengan intervalos de tiempo diferentes para sus períodos de mantenimiento. Esta práctica evita que varias instancias de base de datos del clúster se desconecten al mismo tiempo para realizar tareas de mantenimiento. Para obtener más información, consulte La ventana de mantenimiento de Amazon RDS.
-
Los clústeres activo-activo pueden usar SSL para las conexiones entre instancias de base de datos. Para configurar las conexiones SSL, defina los parámetros group_replication_recovery_use_ssl
y group_replication_ssl_mode . Los valores de estos parámetros deben ser iguales para todas las instancias de base de datos del clúster activo-activo. Actualmente, los clústeres activo-activo no admiten la verificación por parte de la autoridad de certificación (CA) para las conexiones entre Regiones de AWS. Por lo tanto, el parámetro group_replication_ssl_mode
debe estar establecido en DISABLED
(el valor predeterminado) oREQUIRED
para los clústeres entre regiones. -
Un clúster activo-activo de RDS para MySQL se ejecuta en modo multiprimario. El valor predeterminado de group_replication_enforce_update_everywhere_checks
es ON
y el parámetro es estático. Si este parámetro está establecido enON
, las aplicaciones no pueden insertarlo en una tabla que tenga restricciones de clave externa en cascada. -
Un clúster activo-activo de RDS para MySQL utiliza la pila de comunicación de MySQL para garantizar la seguridad de la conexión en lugar de XCOM. Para obtener más información, consulte Communication Stack for Connection Security Management
en la documentación de MySQL. -
Cuando un grupo de parámetros de base de datos está asociado a una instancia de base de datos de un clúster activo-activo, recomendamos asociar este grupo de parámetros de base de datos únicamente a otras instancias de base de datos que estén en el clúster.
-
Los clústeres activo-activo solo admiten instancias de base de datos de RDS para MySQL. Estas instancias de base de datos deben ejecutar versiones compatibles del motor de base de datos.
-
Cuando una instancia de base de datos de un clúster activo-activo sufre un error inesperado, RDS inicia la recuperación de la instancia de base de datos automáticamente. Si la instancia de base de datos no se recupera, le recomendamos que la sustituya por una nueva instancia de base de datos mediante una recuperación a un momento dado con una instancia de base de datos en buen estado del clúster. Para obtener más información, consulte Adición de una instancia de base de datos a un clúster activo-activo mediante la recuperación a un momento dado.
-
Puede eliminar una instancia de base de datos de un clúster activo-activo sin que ello afecte a las demás instancias de base de datos del clúster. Para obtener más información sobre la eliminación de instancias de base de datos, consulte Eliminación de una instancia de base de datos.
Requisitos previos de un clúster activo-activo entre VPC
Puede configurar un clúster activo-activo con instancias de base de datos en más de una VPC. Las VPC pueden estar en la misma Región de AWS o en diferentes Regiones de AWS.
nota
El envío de tráfico entre varias Regiones de AWS puede conllevar costos adicionales. Para obtener más información, consulte Overview of Data Transfer Costs for Common Architectures
Si va a configurar un clúster activo-activo en una sola VPC, puede omitir estos pasos y pasar a Configuración de un clúster activo-activo con nuevas instancias de base de datos.
Preparación para un clúster activo-activo con instancias de base de datos en más de una VPC
-
Asegúrese de que los rangos de direcciones IPv4 de los bloques CIDR cumplan los siguientes requisitos:
-
Los rangos de direcciones IPv4 de los bloques CIDR de las VPC no se pueden superponer.
-
Todos los rangos de direcciones IPv4 de los bloques CIDR deben ser inferiores a
128.0.0.0/
o superiores a 128.0.0.0/subnet_mask
subnet_mask
.
Los siguientes rangos ilustran estos requisitos:
-
Se admite
10.1.0.0/16
en una VPC y10.2.0.0/16
en la otra VPC. -
Se admite
172.1.0.0/16
en una VPC y172.2.0.0/16
en la otra VPC. -
No se admite
10.1.0.0/16
en una VPC y10.1.0.0/16
en la otra VPC porque los rangos se superponen. -
No se admite
10.1.0.0/16
en una VPC y172.1.0.0/16
en la otra VPC porque una está por debajo de128.0.0.0/
y la otra por encima desubnet_mask
128.0.0.0/
.subnet_mask
Para obtener información acerca de los bloques de CIDR, consulte Bloques de CIDR de VPC en la Guía del usuario de Amazon VPC.
-
-
En cada VPC, asegúrese de que tanto la resolución de DNS como los nombres de host DNS están habilitados.
Para obtener instrucciones, consulte Ver y actualizar los atributos de DNS de su VPC en la Guía del usuario de Amazon VPC.
-
Configure las VPC para poder enrutar el tráfico entre ellas de una de las siguientes maneras:
-
Cree una conexión de emparejamiento de VPC entre las VPC.
Para obtener instrucciones, consulte Create a VPC peering connection en la Guía de emparejamiento de Amazon VPC. En cada VPC, asegúrese de que haya reglas entrantes para los grupos de seguridad que hagan referencia a grupos de seguridad de la VPC emparejada. De este modo, garantizará el tráfico entrante y saliente de las instancias asociadas al grupo de seguridad al que se hace referencia en la VPC del mismo nivel. Para obtener instrucciones, consulte Update your security groups to reference peer security groups en la Guía de interconexión de Amazon VPC.
-
Cree una puerta de enlace de tránsito entre las VPC.
Para obtener instrucciones, consulte Getting started with transit gateways en Amazon VPC Transit Gateways. En cada VPC, asegúrese de que haya reglas de entrada para sus grupos de seguridad que permitan el tráfico desde la otra VPC, como reglas de entrada que especifiquen el CIDR de la otra VPC. De este modo, garantizará el tráfico entrante y saliente de las instancias asociadas al grupo de seguridad al que se hace referencia en el clúster activo-activo. Para obtener más información, consulte Controlar el tráfico hacia los recursos de AWS mediante grupos de seguridad en la Guía del usuario de Amazon VPC.
-
Configuración de parámetros obligatorios para los clústeres activo-activo
Se requieren los siguientes ajustes de parámetros al configurar un clúster activo-activo de RDS para MySQL.
Parámetro | Descripción | Configuración necesaria |
---|---|---|
|
Permite configurar el formato de registro binario. El valor predeterminado de RDS para MySQL es |
|
|
Aplica la coherencia de GTID en la ejecución de las instrucciones. El valor predeterminado de RDS para MySQL es |
|
|
Permite establecer el nombre de Group Replication en un UUID. El formato de UUID es |
Un UUID de MySQL |
|
Controla el registro basado en GTID. El valor predeterminado de RDS para MySQL es |
|
|
Especifica si se permite la resolución de DNS desde el servidor DNS de Amazon en la VPC. La resolución de DNS debe estar habilitada cuando Group Replication está habilitado con el parámetro |
|
|
Especifica si Group Replication está habilitado para una instancia de base de datos. Group Replication debe estar habilitado en una instancia de base de datos de un clúster activo-activo. |
|
|
Controla el orden en que se confirman las transacciones en una réplica. El valor predeterminado de RDS para MySQL es |
|
Conversión de una instancia de base de datos existente en un clúster activo-activo
La versión del motor de base de datos de la instancia de base de datos que desea migrar a un clúster activo-activo debe ser MySQL 8.0.35 o posterior. Si necesita actualizar la versión del motor, consulte Actualización del motor de base de datos MySQL.
Si va a configurar un clúster activo-activo con instancias de base de datos en más de una VPC, asegúrese de completar los requisitos previos que se indican en Requisitos previos de un clúster activo-activo entre VPC.
Realice los siguientes pasos para migrar una instancia de base de datos existente a un clúster activo-activo para RDS para MySQL.
Temas
- Paso 1: defina los parámetros del clúster activo-activo en uno o más grupos de parámetros personalizados
- Paso 2: asocie la instancia de base de datos a un grupo de parámetros de base de datos que tenga configurados los parámetros de Group Replication necesarios
- Paso 3: cree el clúster activo-activo
- Paso 4: cree instancias de base de datos de RDS para MySQL adicionales para el clúster activo-activo
- Paso 5: inicialice el grupo en la instancia de base de datos que va a convertir
- Paso 6: inicie la replicación en las demás instancias de base de datos del clúster activo-activo
- Paso 7: (recomendado) compruebe el estado del clúster activo-activo
Paso 1: defina los parámetros del clúster activo-activo en uno o más grupos de parámetros personalizados
Las instancias de base de datos de RDS para MySQL de un clúster activo-activo deben estar asociadas a un grupo de parámetros personalizado que tenga la configuración correcta para los parámetros necesarios. Para obtener más información sobre los parámetros y la configuración necesaria para cada uno, consulte Configuración de parámetros obligatorios para los clústeres activo-activo.
Puede configurar estos parámetros en grupos de parámetros nuevos o en grupos de parámetros existentes. Sin embargo, para evitar que afecte accidentalmente a las instancias de base de datos que no forman parte del clúster activo-activo, le recomendamos encarecidamente que cree un nuevo grupo de parámetros personalizado. Las instancias de base de datos de un clúster activo-activo se pueden asociar al mismo grupo de parámetros de base de datos o a diferentes grupos de parámetros de base de datos.
Puede utilizar la AWS Management Console o la AWS CLI para crear un nuevo grupo de parámetros personalizado. Para obtener más información, consulte Creación de un grupo de parámetros de base de datos. En el siguiente ejemplo, se ejecuta el comando de la AWS CLI create-db-parameter-group para crear un grupo de parámetros de base de datos personalizado denominado
:myactivepg
Para Linux, macOS o Unix:
aws rds create-db-parameter-group \ --db-parameter-group-name
myactivepg
\ --db-parameter-group-family mysql8.0 \ --description "Parameter group for active-active clusters
"
En Windows:
aws rds create-db-parameter-group ^ --db-parameter-group-name
myactivepg
^ --db-parameter-group-family mysql8.0 ^ --description "Parameter group for active-active clusters
"
También puede utilizar la AWS Management Console o la AWS CLI para establecer los parámetros del grupo de parámetros personalizado. Para obtener más información, consulte Modificación de parámetros de un grupo de parámetros de base de datos.
En el siguiente ejemplo, se ejecuta el comando de la AWS CLI modify-db-parameter-group para establecer los parámetros:
Para Linux, macOS o Unix:
aws rds modify-db-parameter-group \ --db-parameter-group-name
myactivepg
\ --parameters "ParameterName='rds.group_replication_enabled',ParameterValue='1',ApplyMethod=pending-reboot" \ "ParameterName='rds.custom_dns_resolution',ParameterValue='1',ApplyMethod=pending-reboot" \ "ParameterName='enforce_gtid_consistency',ParameterValue='ON',ApplyMethod=pending-reboot" \ "ParameterName='gtid-mode',ParameterValue='ON',ApplyMethod=pending-reboot" \ "ParameterName='binlog_format',ParameterValue='ROW',ApplyMethod=immediate" \ "ParameterName='slave_preserve_commit_order',ParameterValue='ON',ApplyMethod=immediate" \ "ParameterName='group_replication_group_name',ParameterValue='11111111-2222-3333-4444-555555555555
',ApplyMethod=pending-reboot"
En Windows:
aws rds modify-db-parameter-group ^ --db-parameter-group-name myactivepg ^ --parameters "ParameterName='rds.group_replication_enabled',ParameterValue='1',ApplyMethod=pending-reboot" ^ "ParameterName='rds.custom_dns_resolution',ParameterValue='1',ApplyMethod=pending-reboot" ^ "ParameterName='enforce_gtid_consistency',ParameterValue='ON',ApplyMethod=pending-reboot" ^ "ParameterName='gtid-mode',ParameterValue='ON',ApplyMethod=pending-reboot" ^ "ParameterName='binlog_format',ParameterValue='ROW',ApplyMethod=immediate" ^ "ParameterName='slave_preserve_commit_order',ParameterValue='ON',ApplyMethod=immediate" ^ "ParameterName='group_replication_group_name',ParameterValue='
11111111-2222-3333-4444-555555555555
',ApplyMethod=pending-reboot"
Paso 2: asocie la instancia de base de datos a un grupo de parámetros de base de datos que tenga configurados los parámetros de Group Replication necesarios
Asocie la instancia de base de datos a un grupo de parámetros que haya creado o modificado en el paso anterior. Para obtener más información, consulte Asociación de un grupo de parámetros de base de datos con una instancia de base de datos.
Reinicie la instancia de base de datos para que se aplique la nueva configuración de los parámetros. Para obtener más información, consulte Reinicio de una instancia de base de datos.
Paso 3: cree el clúster activo-activo
En el grupo de parámetros de base de datos asociado a la instancia de base de datos, defina el parámetro group_replication_group_seeds
en el punto de conexión de la instancia de base de datos que va a convertir.
Puede usar la AWS Management Console o la AWS CLI para establecer el parámetro. No es necesario reiniciar la instancia de base de datos después de configurar este parámetro. Para obtener más información acerca de cómo configurar los parámetros, consulte Modificación de parámetros de un grupo de parámetros de base de datos.
En el siguiente ejemplo, se ejecuta el comando de la AWS CLI modify-db-parameter-group para establecer los parámetros:
Para Linux, macOS o Unix:
aws rds modify-db-parameter-group \ --db-parameter-group-name
myactivepg
\ --parameters "ParameterName='group_replication_group_seeds',ParameterValue='myactivedb1.123456789012.us-east-1.rds.amazonaws.com:3306
',ApplyMethod=immediate"
En Windows:
aws rds modify-db-parameter-group ^ --db-parameter-group-name
myactivepg
^ --parameters "ParameterName='group_replication_group_seeds',ParameterValue='myactivedb1.123456789012.us-east-1.rds.amazonaws.com:3306
',ApplyMethod=immediate"
Paso 4: cree instancias de base de datos de RDS para MySQL adicionales para el clúster activo-activo
Para crear instancias de base de datos adicionales para el clúster activo-activo, realice una recuperación en un momento dado de la instancia de base de datos que va a convertir. Para obtener más información, consulte Adición de una instancia de base de datos a un clúster activo-activo mediante la recuperación a un momento dado.
Los clústeres activo-activo pueden tener hasta nueve instancias de base de datos. Realice una recuperación a un momento dado de la instancia de base de datos hasta que tenga el número de instancias de base de datos que desea para el clúster. Cuando realice una recuperación en un momento dado, asegúrese de asociar la instancia de base de datos que va a añadir a un grupo de parámetros de base de datos que tenga rds.group_replication_enabled
establecido en 1
. De lo contrario, Group Replication no se iniciará en la instancia de base de datos recién agregada.
Paso 5: inicialice el grupo en la instancia de base de datos que va a convertir
Inicialice el grupo e inicie la replicación:
-
Conéctese a la instancia de base de datos que va a convertir en un cliente SQL. Para obtener más información sobre la conexión a una instancia de base de datos de RDS para MySQL, consulte Conexión a una instancia de base de datos que ejecuta el motor de base de datos de MySQL.
-
En el cliente de SQL, ejecute los siguientes procedimientos almacenados y sustituya
group_replication_user_password
por la contraseña del usuariordsgrprepladmin
. El usuariordsgrprepladmin
está reservado para las conexiones de Group Replication de un clúster activo-activo. La contraseña de este usuario debe ser la misma en todas las instancias de base de datos de un clúster activo-activo.call mysql.rds_set_configuration('binlog retention hours',
168
); -- 7 days binlog call mysql.rds_group_replication_create_user('group_replication_user_password
'); call mysql.rds_group_replication_set_recovery_channel('group_replication_user_password
'); call mysql.rds_group_replication_start(1);En este ejemplo, se establece el valor de
binlog retention hours
en168
, lo que significa que los archivos de registro binarios se conservan durante siete días en la instancia de base de datos. Puede ajustar este valor de acuerdo con sus requisitos.En este ejemplo, se especifica
1
en el procedimiento almacenadomysql.rds_group_replication_start
para que se inicialice un grupo nuevo con la instancia de base de datos actual.Para obtener más información acerca de los procedimientos almacenados a los que se hace referencia en el ejemplo, consulte Administración de clústeres activo-activo.
Paso 6: inicie la replicación en las demás instancias de base de datos del clúster activo-activo
Para cada una de las instancias de base de datos del clúster activo-activo, utilice un cliente de SQL para conectarse a la instancia y ejecute los siguientes procedimientos almacenados. Sustituya group_replication_user_password
por la contraseña del usuario rdsgrprepladmin
.
call mysql.rds_set_configuration('binlog retention hours',
168
); -- 7 days binlog call mysql.rds_group_replication_create_user('group_replication_user_password
'); call mysql.rds_group_replication_set_recovery_channel('group_replication_user_password
'); call mysql.rds_group_replication_start(0);
En este ejemplo, se establece el valor de binlog retention hours
en 168
, lo que significa que los archivos de registro binarios se conservan durante siete días en cada instancia de base de datos. Puede ajustar este valor de acuerdo con sus requisitos.
En este ejemplo, se especifica 0
en el procedimiento almacenado mysql.rds_group_replication_start
para que se una la instancia de base de datos actual a un grupo existente.
sugerencia
Asegúrese de ejecutar estos procedimientos almacenados en todas las demás instancias de base de datos del clúster activo-activo.
Paso 7: (recomendado) compruebe el estado del clúster activo-activo
Para asegurarse de que cada miembro del clúster esté configurado correctamente, compruebe el estado del clúster conectándose a una instancia de base de datos del clúster activo-activo y ejecutando el siguiente comando SQL:
SELECT * FROM performance_schema.replication_group_members;
En el resultado se debería mostrar ONLINE
para el MEMBER_STATE
de cada instancia de base de datos, como en el siguiente ejemplo de salida:
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
| CHANNEL_NAME | MEMBER_ID | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION | MEMBER_COMMUNICATION_STACK |
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
| group_replication_applier | 9854d4a2-5d7f-11ee-b8ec-0ec88c43c251 | ip-10-15-3-137 | 3306 | ONLINE | PRIMARY | 8.0.35 | MySQL |
| group_replication_applier | 9e2e9c28-5d7f-11ee-8039-0e5d58f05fef | ip-10-15-3-225 | 3306 | ONLINE | PRIMARY | 8.0.35 | MySQL |
| group_replication_applier | a6ba332d-5d7f-11ee-a025-0a5c6971197d | ip-10-15-1-83 | 3306 | ONLINE | PRIMARY | 8.0.35 | MySQL |
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
3 rows in set (0.00 sec)
Para obtener información acerca de los valores posibles de MEMBER_STATE
, consulte Group Replication Server States
Configuración de un clúster activo-activo con nuevas instancias de base de datos
Realice los siguientes pasos para configurar un clúster activo-activo mediante las nuevas instancias de base de datos de RDS para MySQL.
Si va a configurar un clúster activo-activo con instancias de base de datos en más de una VPC, asegúrese de completar los requisitos previos que se indican en Requisitos previos de un clúster activo-activo entre VPC.
Temas
- Paso 1: defina los parámetros del clúster activo-activo en uno o más grupos de parámetros personalizados
- Paso 2: cree nuevas instancias de base de datos de RDS para MySQL para el clúster activo-activo
- Paso 4: especifique las instancias de base de datos del clúster activo-activo
- Paso 5: inicialice el grupo en una instancia de base de datos e inicie la replicación
- Paso 6: inicie la replicación en las demás instancias de base de datos del clúster activo-activo
- Paso 7: (recomendado) compruebe el estado del clúster activo-activo
- Paso 8: (opcional) importe los datos a una instancia de base de datos del clúster activo-activo
Paso 1: defina los parámetros del clúster activo-activo en uno o más grupos de parámetros personalizados
Las instancias de base de datos de RDS para MySQL de un clúster activo-activo deben estar asociadas a un grupo de parámetros personalizado que tenga la configuración correcta para los parámetros necesarios. Para obtener más información sobre los parámetros y la configuración necesaria para cada uno, consulte Configuración de parámetros obligatorios para los clústeres activo-activo.
Puede configurar estos parámetros en grupos de parámetros nuevos o en grupos de parámetros existentes. Sin embargo, para evitar que afecte accidentalmente a las instancias de base de datos que no forman parte del clúster activo-activo, le recomendamos encarecidamente que cree un nuevo grupo de parámetros personalizado. Las instancias de base de datos de un clúster activo-activo se pueden asociar al mismo grupo de parámetros de base de datos o a diferentes grupos de parámetros de base de datos.
Puede utilizar la AWS Management Console o la AWS CLI para crear un nuevo grupo de parámetros personalizado. Para obtener más información, consulte Creación de un grupo de parámetros de base de datos. En el siguiente ejemplo, se ejecuta el comando de la AWS CLI create-db-parameter-group para crear un grupo de parámetros de base de datos personalizado denominado
:myactivepg
Para Linux, macOS o Unix:
aws rds create-db-parameter-group \ --db-parameter-group-name
myactivepg
\ --db-parameter-group-family mysql8.0 \ --description "Parameter group for active-active clusters
"
En Windows:
aws rds create-db-parameter-group ^ --db-parameter-group-name
myactivepg
^ --db-parameter-group-family mysql8.0 ^ --description "Parameter group for active-active clusters
"
También puede utilizar la AWS Management Console o la AWS CLI para establecer los parámetros del grupo de parámetros personalizado. Para obtener más información, consulte Modificación de parámetros de un grupo de parámetros de base de datos.
En el siguiente ejemplo, se ejecuta el comando de la AWS CLI modify-db-parameter-group para establecer los parámetros:
Para Linux, macOS o Unix:
aws rds modify-db-parameter-group \ --db-parameter-group-name
myactivepg
\ --parameters "ParameterName='rds.group_replication_enabled',ParameterValue='1',ApplyMethod=pending-reboot" \ "ParameterName='rds.custom_dns_resolution',ParameterValue='1',ApplyMethod=pending-reboot" \ "ParameterName='enforce_gtid_consistency',ParameterValue='ON',ApplyMethod=pending-reboot" \ "ParameterName='gtid-mode',ParameterValue='ON',ApplyMethod=pending-reboot" \ "ParameterName='binlog_format',ParameterValue='ROW',ApplyMethod=immediate" \ "ParameterName='slave_preserve_commit_order',ParameterValue='ON',ApplyMethod=immediate" \ "ParameterName='group_replication_group_name',ParameterValue='11111111-2222-3333-4444-555555555555
',ApplyMethod=pending-reboot"
En Windows:
aws rds modify-db-parameter-group ^ --db-parameter-group-name myactivepg ^ --parameters "ParameterName='rds.group_replication_enabled',ParameterValue='1',ApplyMethod=pending-reboot" ^ "ParameterName='rds.custom_dns_resolution',ParameterValue='1',ApplyMethod=pending-reboot" ^ "ParameterName='enforce_gtid_consistency',ParameterValue='ON',ApplyMethod=pending-reboot" ^ "ParameterName='gtid-mode',ParameterValue='ON',ApplyMethod=pending-reboot" ^ "ParameterName='binlog_format',ParameterValue='ROW',ApplyMethod=immediate" ^ "ParameterName='slave_preserve_commit_order',ParameterValue='ON',ApplyMethod=immediate" ^ "ParameterName='group_replication_group_name',ParameterValue='
11111111-2222-3333-4444-555555555555
',ApplyMethod=pending-reboot"
Paso 2: cree nuevas instancias de base de datos de RDS para MySQL para el clúster activo-activo
Los clústeres activo-activo son compatibles con las instancias de base de datos de RDS para MySQL de la versión 8.0.35 y posteriores. Puede crear hasta nueve instancias de base de datos nuevas para el clúster.
Puede utilizar la AWS Management Console o la AWS CLI para crear las nuevas instancias de base de datos. Para obtener más información acerca de la creación de una instancia de base de datos, consulte Creación de una instancia de base de datos de Amazon RDS. Al crear la instancia de base de datos, asóciela a un grupo de parámetros de base de datos que haya creado o modificado en el paso anterior.
Paso 4: especifique las instancias de base de datos del clúster activo-activo
En el grupo de parámetros de base de datos asociado a cada instancia de base de datos, defina el parámetro group_replication_group_seeds
en los puntos de conexión de las instancias de base de datos que desee incluir en el clúster.
Puede usar la AWS Management Console o la AWS CLI para establecer el parámetro. No es necesario reiniciar la instancia de base de datos después de configurar este parámetro. Para obtener más información acerca de cómo configurar los parámetros, consulte Modificación de parámetros de un grupo de parámetros de base de datos.
En el siguiente ejemplo, se ejecuta el comando de la AWS CLI modify-db-parameter-group para establecer los parámetros:
Para Linux, macOS o Unix:
aws rds modify-db-parameter-group \ --db-parameter-group-name
myactivepg
\ --parameters "ParameterName='group_replication_group_seeds',ParameterValue='myactivedb1.123456789012.us-east-1.rds.amazonaws.com:3306,myactivedb2.123456789012.us-east-1.rds.amazonaws.com:3306,myactivedb3.123456789012.us-east-1.rds.amazonaws.com:3306
',ApplyMethod=immediate"
En Windows:
aws rds modify-db-parameter-group ^ --db-parameter-group-name
myactivepg
^ --parameters "ParameterName='group_replication_group_seeds',ParameterValue='myactivedb1.123456789012.us-east-1.rds.amazonaws.com:3306,myactivedb2.123456789012.us-east-1.rds.amazonaws.com:3306,myactivedb3.123456789012.us-east-1.rds.amazonaws.com:3306
',ApplyMethod=immediate"
sugerencia
Asegúrese de configurar el parámetro group_replication_group_seeds
en cada grupo de parámetros de base de datos que esté asociado a una instancia de base de datos del clúster activo-activo.
Paso 5: inicialice el grupo en una instancia de base de datos e inicie la replicación
Puede elegir cualquier base de datos nueva para inicializar el grupo e iniciar la replicación. Para ello, complete los siguientes pasos.
-
Elija una instancia de base de datos en el clúster activo-activo y conéctese a esa instancia de base de datos en un cliente de SQL. Para obtener más información sobre la conexión a una instancia de base de datos de RDS para MySQL, consulte Conexión a una instancia de base de datos que ejecuta el motor de base de datos de MySQL.
-
En el cliente de SQL, ejecute los siguientes procedimientos almacenados y sustituya
group_replication_user_password
por la contraseña del usuariordsgrprepladmin
. El usuariordsgrprepladmin
está reservado para las conexiones de Group Replication de un clúster activo-activo. La contraseña de este usuario debe ser la misma en todas las instancias de base de datos de un clúster activo-activo.call mysql.rds_set_configuration('binlog retention hours',
168
); -- 7 days binlog call mysql.rds_group_replication_create_user('group_replication_user_password
'); call mysql.rds_group_replication_set_recovery_channel('group_replication_user_password
'); call mysql.rds_group_replication_start(1);En este ejemplo, se establece el valor de
binlog retention hours
en168
, lo que significa que los archivos de registro binarios se conservan durante siete días en la instancia de base de datos. Puede ajustar este valor de acuerdo con sus requisitos.En este ejemplo, se especifica
1
en el procedimiento almacenadomysql.rds_group_replication_start
para que se inicialice un grupo nuevo con la instancia de base de datos actual.Para obtener más información acerca de los procedimientos almacenados a los que se hace referencia en el ejemplo, consulte Administración de clústeres activo-activo.
Paso 6: inicie la replicación en las demás instancias de base de datos del clúster activo-activo
Para cada una de las instancias de base de datos del clúster activo-activo, utilice un cliente de SQL para conectarse a la instancia y ejecute los siguientes procedimientos almacenados. Sustituya group_replication_user_password
por la contraseña del usuario rdsgrprepladmin
.
call mysql.rds_set_configuration('binlog retention hours',
168
); -- 7 days binlog call mysql.rds_group_replication_create_user('group_replication_user_password
'); call mysql.rds_group_replication_set_recovery_channel('group_replication_user_password
'); call mysql.rds_group_replication_start(0);
En este ejemplo, se establece el valor de binlog retention hours
en 168
, lo que significa que los archivos de registro binarios se conservan durante siete días en cada instancia de base de datos. Puede ajustar este valor de acuerdo con sus requisitos.
En este ejemplo, se especifica 0
en el procedimiento almacenado mysql.rds_group_replication_start
para que se una la instancia de base de datos actual a un grupo existente.
sugerencia
Asegúrese de ejecutar estos procedimientos almacenados en todas las demás instancias de base de datos del clúster activo-activo.
Paso 7: (recomendado) compruebe el estado del clúster activo-activo
Para asegurarse de que cada miembro del clúster esté configurado correctamente, compruebe el estado del clúster conectándose a una instancia de base de datos del clúster activo-activo y ejecutando el siguiente comando SQL:
SELECT * FROM performance_schema.replication_group_members;
En el resultado se debería mostrar ONLINE
para el MEMBER_STATE
de cada instancia de base de datos, como en el siguiente ejemplo de salida:
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
| CHANNEL_NAME | MEMBER_ID | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION | MEMBER_COMMUNICATION_STACK |
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
| group_replication_applier | 9854d4a2-5d7f-11ee-b8ec-0ec88c43c251 | ip-10-15-3-137 | 3306 | ONLINE | PRIMARY | 8.0.35 | MySQL |
| group_replication_applier | 9e2e9c28-5d7f-11ee-8039-0e5d58f05fef | ip-10-15-3-225 | 3306 | ONLINE | PRIMARY | 8.0.35 | MySQL |
| group_replication_applier | a6ba332d-5d7f-11ee-a025-0a5c6971197d | ip-10-15-1-83 | 3306 | ONLINE | PRIMARY | 8.0.35 | MySQL |
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
3 rows in set (0.00 sec)
Para obtener información acerca de los valores posibles de MEMBER_STATE
, consulte Group Replication Server States
Paso 8: (opcional) importe los datos a una instancia de base de datos del clúster activo-activo
Puede importar datos desde una base de datos MySQL a una instancia de base de datos del clúster activo-activo. Una vez importados los datos, Group Replication los replica en las demás instancias de base de datos del clúster.
Para obtener información acerca de cómo importar los datos, consulte Importación de datos a una base de datos de Amazon RDS MariaDB o MySQL con un tiempo de inactividad reducido.
Adición de una instancia de base de datos en un clúster activo-activo
Para añadir una instancia de base de datos a un clúster activo-activo, restaure una instantánea de base de datos o una instancia de base de datos a un momento dado. Un clúster activo-activo puede incluir hasta nueve instancias de base de datos.
Cuando recupera una instancia de base de datos a un momento dado, normalmente incluye transacciones más recientes que las de una instancia de base de datos que se haya restaurado a partir de una instantánea de base de datos. Cuando la instancia de base de datos tiene transacciones más recientes, es necesario aplicar menos transacciones al iniciar la replicación. Por lo tanto, suele ser más rápido utilizar la recuperación a un momento dado para agregar una instancia de base de datos a un clúster que realizar la restauración a partir de una instantánea de base de datos.
Temas
Adición de una instancia de base de datos a un clúster activo-activo mediante la recuperación a un momento dado
Para agregar una instancia de base de datos a un clúster activo-activo, realice una recuperación a un momento dado en una instancia de base de datos del clúster.
Para obtener información sobre la recuperación de una instancia de base de datos a un momento dado en una Región de AWS diferente, consulte Replicación de las copias de seguridad automatizadas en otra Región de AWS.
Adición de una instancia de base de datos a un clúster activo-activo mediante la recuperación a un momento dado
-
Cree una nueva instancia de base de datos realizando una recuperación a momento dado en una instancia de base de datos del clúster activo-activo.
Puede realizar una recuperación a un momento dado en cualquier instancia de base de datos del clúster para crear la nueva instancia de base de datos. Para obtener más información, consulte Restauración de una instancia de base de datos a un momento especificado.
importante
Durante la recuperación a un momento dado, asocie la nueva instancia de base de datos a un grupo de parámetros de base de datos que tenga establecidos los parámetros del clúster activo-activo. De lo contrario, Group Replication no se iniciará en la nueva instancia de base de datos. Para obtener más información sobre los parámetros y la configuración necesaria para cada uno, consulte Configuración de parámetros obligatorios para los clústeres activo-activo.
sugerencia
Si realiza una instantánea de la instancia de base de datos antes de iniciar la recuperación a un momento dado, es posible que pueda reducir el tiempo necesario para aplicar las transacciones en la nueva instancia de base de datos.
-
Agregue la instancia de base de datos al parámetro
group_replication_group_seeds
de cada grupo de parámetros de base de datos asociado a una instancia de base de datos en el clúster activo-activo, incluido el grupo de parámetros de base de datos que asoció a la nueva instancia de base de datos.Para obtener más información acerca de cómo configurar los parámetros, consulte Modificación de parámetros de un grupo de parámetros de base de datos.
-
En un cliente SQL, conéctese a la nueva instancia de base de datos y llame al procedimiento almacenado mysql.rds_group_replication_set_recovery_channel. Sustituya
group_replication_user_password
por la contraseña del usuariordsgrprepladmin
.call mysql.rds_group_replication_set_recovery_channel('
group_replication_user_password
'); -
Con el cliente SQL, llame al procedimiento almacenado mysql.rds_group_replication_start para iniciar la replicación:
call mysql.rds_group_replication_start(0);
Adición de una instancia de base de datos en un clúster activo-activo mediante una instantánea de base de datos
Para agregar una instancia de base de datos a un clúster activo-activo, cree una instantánea de base de datos de una instancia de base de datos del clúster y, a continuación, restaure la instantánea de base de datos.
Para obtener más información acerca de cómo copiar una instantánea en una Región de AWS diferente, consulte Copia de instantáneas entre regiones.
Adición de una instancia de base de datos en un clúster activo-activo mediante una instantánea de base de datos
-
Cree una instantánea de base de datos de una instancia de base de datos en el clúster activo-activo.
Puede crear una instantánea de base de datos de una instancia de base de datos en el clúster. Para obtener más información, consulte Creación de una instantánea de base de datos para una instancia de base de datos single-AZ.
-
Restaure una instancia de base de datos a partir de una instantánea de base de datos.
Durante la operación de restauración de la instantánea, asocie la nueva instancia de base de datos a un grupo de parámetros de base de datos que tenga establecidos los parámetros del clúster activo-activo. Para obtener más información sobre los parámetros y la configuración necesaria para cada uno, consulte Configuración de parámetros obligatorios para los clústeres activo-activo.
Para obtener información acerca de cómo restaurar una instancia de base de datos a partir una instantánea de base de datos, consulte Restauración desde una instantánea de un de base de datos.
-
Agregue la instancia de base de datos al parámetro
group_replication_group_seeds
de cada grupo de parámetros de base de datos asociado a una instancia de base de datos en el clúster activo-activo, incluido el grupo de parámetros de base de datos que asoció a la nueva instancia de base de datos.Para obtener más información acerca de cómo configurar los parámetros, consulte Modificación de parámetros de un grupo de parámetros de base de datos.
-
En un cliente SQL, conéctese a la nueva instancia de base de datos y llame al procedimiento almacenado mysql.rds_group_replication_set_recovery_channel. Sustituya
group_replication_user_password
por la contraseña del usuariordsgrprepladmin
.call mysql.rds_group_replication_set_recovery_channel('
group_replication_user_password
'); -
Con el cliente SQL, llame al procedimiento almacenado mysql.rds_group_replication_start para iniciar la replicación:
call mysql.rds_group_replication_start(0);
Monitorización de clústeres activo-activo
Puede monitorizar el clúster activo-activo conectándose a una instancia de base de datos del clúster y ejecutando el siguiente comando SQL:
SELECT * FROM performance_schema.replication_group_members;
En el resultado se debería mostrar ONLINE
para el MEMBER_STATE
de cada instancia de base de datos, como en el siguiente ejemplo de salida:
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
| CHANNEL_NAME | MEMBER_ID | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION | MEMBER_COMMUNICATION_STACK |
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
| group_replication_applier | 9854d4a2-5d7f-11ee-b8ec-0ec88c43c251 | ip-10-15-3-137 | 3306 | ONLINE | PRIMARY | 8.0.35 | MySQL |
| group_replication_applier | 9e2e9c28-5d7f-11ee-8039-0e5d58f05fef | ip-10-15-3-225 | 3306 | ONLINE | PRIMARY | 8.0.35 | MySQL |
| group_replication_applier | a6ba332d-5d7f-11ee-a025-0a5c6971197d | ip-10-15-1-83 | 3306 | ONLINE | PRIMARY | 8.0.35 | MySQL |
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
3 rows in set (0.00 sec)
Para obtener información acerca de los valores posibles de MEMBER_STATE
, consulte Group Replication Server States
Detención de Group Replication en una instancia de base de datos de un clúster activo-activo
Puede detener Group Replication en una instancia de base de datos de un clúster activo-activo. Al detener Group Replication, la instancia de base de datos pasa al modo de solo superlectura hasta que se reinicie la replicación o se elimine la instancia de base de datos del clúster activo-activo. Para obtener información sobre el modo de solo superlectura, consulte la documentación de MySQL
Detención temporal de Group Replication para un clúster activo-activo
-
Conéctese a una instancia de base de datos en el clúster activo-activo utilizando un cliente SQL.
Para obtener más información sobre la conexión a una instancia de base de datos de RDS para MySQL, consulte Conexión a una instancia de base de datos que ejecuta el motor de base de datos de MySQL.
-
En el cliente SQL, llame al procedimiento almacenado mysql.rds_group_replication_stop:
call mysql.rds_group_replication_stop();
Cambio de nombre de una instancia de base de datos en un clúster activo-activo
Puede cambiar el nombre de una instancia de base de datos en un clúster activo-activo. Para cambiar el nombre de más de una instancia de base de datos en un clúster activo-activo, debe hacerlo de una en una. Por lo tanto, cambie el nombre de una instancia de base de datos y vuelva a unirla al clúster antes de cambiar el nombre de la siguiente.
Cambio de nombre de una instancia de base de datos en un clúster activo-activo
-
Conéctese a la instancia de base de datos en un cliente SQL y llame al procedimiento almacenado mysql.rds_group_replication_stop.
call mysql.rds_group_replication_stop();
-
Para cambiar el nombre de la instancia de base de datos, siga las instrucciones que se indican en Cambio del nombre de una instancia de base de datos.
-
Modifique el parámetro
group_replication_group_seeds
en cada grupo de parámetros de base de datos asociado a una instancia de base de datos del clúster activo-activo.En la configuración de los parámetros, sustituya el punto de conexión de la instancia de base de datos anterior por el nuevo punto de conexión de la instancia de base de datos. Para obtener más información acerca de cómo configurar los parámetros, consulte Modificación de parámetros de un grupo de parámetros de base de datos.
-
Conéctese a la instancia de base de datos en un cliente SQL y llame al procedimiento almacenado mysql.rds_group_replication_start.
call mysql.rds_group_replication_start(0);
Eliminación de una instancia de base de datos de un clúster activo-activo
Al eliminar una instancia de base de datos de un clúster activo-activo, esta se convierte en una instancia de base de datos independiente.
Eliminación de una instancia de base de datos de un clúster activo-activo
-
Conéctese a la instancia de base de datos en un cliente SQL y llame al procedimiento almacenado mysql.rds_group_replication_stop.
call mysql.rds_group_replication_stop();
-
Modifique el parámetro
group_replication_group_seeds
de las instancias de base de datos que permanecerán en el clúster activo-activo.En el parámetro
group_replication_group_seeds
, elimine la instancia de base de datos que va a eliminar del clúster activo-activo. Para obtener más información acerca de cómo configurar los parámetros, consulte Modificación de parámetros de un grupo de parámetros de base de datos. -
Modifique los parámetros de la instancia de base de datos que va a eliminar del clúster activo-activo para que deje de formar parte del clúster.
Puede asociar la instancia de base de datos a un grupo de parámetros diferente o modificar los parámetros del grupo de parámetros de base de datos asociado a la instancia de base de datos. Los parámetros que se van a modificar incluyen
group_replication_group_name
,rds.group_replication_enabled
ygroup_replication_group_seeds
. Para obtener más información acerca de los parámetros de clúster activo-activo, consulte Configuración de parámetros obligatorios para los clústeres activo-activo.Si modifica los parámetros de un grupo de parámetros de base de datos, asegúrese de que el grupo de parámetros de base de datos no esté asociado a otras instancias de base de datos del clúster activo-activo.
-
Reinicie la instancia de base de datos que ha eliminado del clúster activo-activo para que se aplique la nueva configuración de parámetros.
Para obtener más información, consulte Reinicio de una instancia de base de datos.
Limitaciones de los clústeres activo-activo de RDS para MySQL
Las siguientes limitaciones se aplican a los clústeres activo-activo de RDS para MySQL:
-
El nombre de usuario maestro no puede ser
rdsgrprepladmin
para las instancias de base de datos de un clúster activo-activo. Este nombre de usuario está reservado para las conexiones de Group Replication. -
En el caso de las instancias de base de datos con réplicas de lectura en clústeres activo-activo, un estado de replicación prolongado que no sea
Replicating
puede provocar que los archivos de registro superen los límites de almacenamiento. Para obtener más información acerca del estado de las réplicas de lectura, consulte Monitoreo de la replicación de lectura. -
Las implementaciones azul/verde no son compatibles con instancias de base de datos en un clúster activo-activo. Para obtener más información, consulte Uso de las implementaciones azul/verde de Amazon RDS para actualizar las bases de datos.
-
La autenticación Kerberos no es compatible con las instancias de base de datos en un clúster activo-activo. Para obtener más información, consulte Uso de la autenticación Kerberos para MySQL.
-
Las instancias de base de datos de un clúster de base de datos multi-AZ no se pueden agregar a un clúster activo-activo.
Sin embargo, las instancias de base de datos en una implementación de instancias de base de datos multi-AZ se pueden agregar a un clúster activo-activo.
Para obtener más información, consulte Configuración y administración de una implementación multi-AZ.
-
Las tablas que no tienen una clave principal no se replican en un clúster activo-activo porque el complemento Group Replication rechaza las escrituras.
-
Las tablas que no son de InnoDB no se replican en un clúster activo-activo.
-
Los clústeres activo-activo no admiten instrucciones DML y DDL simultáneas en distintas instancias de base de datos del clúster.
-
No puede configurar un clúster activo-activo para que utilice el modo principal único para el modo de replicación del grupo. Para esta configuración, se recomienda utilizar en su lugar un clúster de base de datos multi-AZ. Para obtener más información, consulte Implementaciones de clústeres de base de datos Multi-AZ.
-
Las instancias de base de datos de un clúster activo-activo no admiten la replicación de varios orígenes.
-
Un clúster activo-activo entre regiones no puede aplicar la verificación de la autoridad de certificación (CA) en las conexiones de Group Replication.