Activación de la replicación basada en GTID de las réplicas de lectura existentes para RDS para MySQL
Para una instancia de base de datos de MySQL existente con réplicas de lectura que no utilice la reproducción basada en GTID, puede configurar la reproducción basada en GTID entre la instancia de base de datos y las réplicas de lectura.
Para habilitar la replicación basada en GTID para las réplicas de lectura existentes
-
Si la instancia de base de datos o cualquier réplica de lectura utiliza RDS for MySQL 8.0 o versiones anteriores a 8.0.26, actualice la instancia de base de datos o la réplica de lectura a la versión 8.0.26 o a versiones posteriores a 8.0 de MySQL. Todas las versiones de RDS para MySQL 5.7 admiten la replicación basada en GTID.
Para obtener más información, consulte Actualizaciones del motor de base de datos de RDS para MySQL.
-
De manera opcional, restablezca los parámetros de GTID y pruebe el comportamiento de la instancia de base de datos y las réplicas de lectura:
-
Asegúrese de que el grupo de parámetros asociado a la instancia de base de datos y cada réplica de lectura tiene el parámetro
enforce_gtid_consistency
establecido enWARN
.Para obtener más información sobre el establecimiento de parámetros de configuración con grupos de consultas, consulte Grupos de parámetros para Amazon RDS.
-
Si ha cambiado el grupo de parámetros de la instancia de base de datos, reinicie la instancia de base de datos. Si ha cambiado el grupo de parámetros de una réplica de lectura, reinicie la réplica de lectura.
Para obtener más información, consulte Reinicio de una instancia de base de datos.
-
Ejecute la instancia de base de datos y las réplicas de lectura con su carga de trabajo normal y monitoree los archivos de registro.
Si ve advertencias sobre las transacciones incompatibles con GTID, ajuste su aplicación de forma que solo use características compatibles con GTID. Asegúrese de que la instancia de base de datos no está generando ningún aviso sobre transacciones incompatibles con GTID antes de continuar al paso siguiente.
-
-
Restablezca los parámetros de GTID para la replicación basada en GTID que permite las transacciones anónimas hasta que las réplicas de lectura las hayan procesado todas.
-
Asegúrese de que el grupo de parámetros asociado a la instancia de base de datos y cada réplica de lectura tienen la siguiente configuración de parámetros:
-
gtid_mode
–ON_PERMISSIVE
-
enforce_gtid_consistency
–ON
-
-
Si ha cambiado el grupo de parámetros de la instancia de base de datos, reinicie la instancia de base de datos. Si ha cambiado el grupo de parámetros de una réplica de lectura, reinicie la réplica de lectura.
-
-
Espere a que todas las transacciones anónimas se hayan replicado. Para comprobar que se han replicado, haga lo siguiente:
-
Ejecute la siguiente instrucción en su instancia de base de datos de origen:
SHOW MASTER STATUS;
Anote los valores de las columnas
File
yPosition
. -
En cada réplica de lectura, use la información de archivo y posición de su instancia de origen en el paso anterior para ejecutar la siguiente consulta.
SELECT MASTER_POS_WAIT('
file
',position
);Por ejemplo, si el nombre del archivo es
mysql-bin-changelog.000031
y la posición es107
, ejecute la siguiente instrucción.SELECT MASTER_POS_WAIT('mysql-bin-changelog.000031', 107);
Si la réplica de lectura está después de la posición especificada, la consulta devuelve resultados inmediatamente. De no hacerlo, la función espera. Continúe al siguiente paso cuando la consulta haya devuelto resultados para todas las réplicas de lectura.
-
-
Restablezca los parámetros de GTID solo para la replicación basada en GTID.
-
Asegúrese de que el grupo de parámetros asociado a la instancia de base de datos y cada réplica de lectura tienen la siguiente configuración de parámetros:
-
gtid_mode
–ON
-
enforce_gtid_consistency
–ON
-
-
Reinicie la instancia de base de datos y cada réplica de lectura.
-
-
En cada réplica de lectura, ejecute el siguiente procedimiento.
CALL mysql.rds_set_master_auto_position(1);