Conversión de una instancia de base de datos existente en un clúster activo-activo - Amazon Relational Database Service

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 de Amazon RDS para MySQL que desea migrar a un clúster activo-activo debe ser MySQL 8.0.35 o una versión posterior. Si necesita actualizar la versión del motor, consulte Actualizaciones del motor 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 Preparación 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.

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 Amazon RDS. 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 los parámetros de un grupo de parámetros de base de datos en Amazon RDS.

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 instrucciones, consulte Asociación de un grupo de parámetros de base de datos con una instancia de base de datos en Amazon RDS.

Reinicie la instancia de base de datos para que se aplique la nueva configuración de los parámetros. Para obtener instrucciones, 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 los parámetros de un grupo de parámetros de base de datos en Amazon RDS.

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 instrucciones, 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:

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

  2. En el cliente de SQL, ejecute los siguientes procedimientos almacenados y sustituya group_replication_user_password por la contraseña del usuario rdsgrprepladmin. El usuario rdsgrprepladmin 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 en 168, 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 almacenado mysql.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 en la documentación de MySQL.