Replicación de transacciones mediante GTID - Amazon Aurora

Replicación de transacciones mediante GTID

Los siguientes procedimientos almacenados controlan cómo se replican las transacciones mediante identificadores de transacciones globales (GTID) con Aurora MySQL. Para conocer cómo utilizar la replicación basada en GTID con Aurora MySQL, consulte Uso de la replicación basada en GTID.

mysql.rds_assign_gtids_to_anonymous_transactions (Aurora MySQL versión 3)

Configura la opción ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS de la instrucción CHANGE REPLICATION SOURCE TO. Hace que el canal de replicación asigne un GTID a las transacciones replicadas que no tienen uno. De esta forma, puede realizar la replicación de registros binarios desde un origen que no utiliza la replicación basada en GTID en una réplica que sí. Para obtener más información, consulte la instrucción CHANGE REPLICATION SOURCE TO y Replicación desde un origen sin GTID a una réplica con GTID en el Manual de referencia de MySQL.

Sintaxis

CALL mysql.rds_assign_gtids_to_anonymous_transactions(gtid_option);

Parámetros

gtid_option

Valor de cadena. Los valores permitidos son OFF, LOCAL o un UUID especificado.

Notas de uso

Este procedimiento tiene el mismo efecto que la emisión de la instrucción CHANGE REPLICATION SOURCE TO ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS = gtid_option en la comunidad MySQL.

El GTID debe dirigirse a ON para gtid_option que se configurará en LOCAL o un UUID específico.

El valor predeterminado es OFF, lo que significa que la característica no se utiliza.

LOCAL asigna un GTID que incluye el UUID de la réplica (la configuración server_uuid).

Al pasar un parámetro que es UUID se asigna un GTID que incluye el UUID especificado, como la configuración server_uuid para el servidor de origen de replicación.

Ejemplos

Para desactivar esta característica:

mysql> call mysql.rds_assign_gtids_to_anonymous_transactions('OFF'); +-------------------------------------------------------------+ | Message | +-------------------------------------------------------------+ | ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS has been set to: OFF | +-------------------------------------------------------------+ 1 row in set (0.07 sec)

Para utilizar el UUID de la réplica:

mysql> call mysql.rds_assign_gtids_to_anonymous_transactions('LOCAL'); +---------------------------------------------------------------+ | Message | +---------------------------------------------------------------+ | ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS has been set to: LOCAL | +---------------------------------------------------------------+ 1 row in set (0.07 sec)

Para utilizar un UUID especificado:

mysql> call mysql.rds_assign_gtids_to_anonymous_transactions('317a4760-f3dd-3b74-8e45-0615ed29de0e'); +----------------------------------------------------------------------------------------------+ | Message | +----------------------------------------------------------------------------------------------+ | ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS has been set to: 317a4760-f3dd-3b74-8e45-0615ed29de0e | +----------------------------------------------------------------------------------------------+ 1 row in set (0.07 sec)

mysql.rds_gtid_purged (versión 3 de Aurora MySQL)

Establece el valor global de la variable de sistema gtid_purged a un conjunto de identificadores de transacciones globales (GTID) determinado. La variable de sistema gtid_purged es un conjunto de GTID que consta de los GTID de todas las transacciones que se han confirmado en el servidor, pero que no existen en ningún archivo de registro binario del servidor.

Hay dos maneras de establecer el valor de gtid_purged para que sea compatible con MySQL 8.0:

  • Reemplace el valor de gtid_purged con el conjunto de GTID especificado.

  • Anexe el conjunto de GTID especificado al conjunto de GTID que ya contiene gtid_purged.

Sintaxis

Para reemplazar el valor de gtid_purged con el conjunto de GTID especificado:

CALL mysql.rds_gtid_purged (gtid_set);

Para anexar el valor de gtid_purged al conjunto de GTID especificado:

CALL mysql.rds_gtid_purged (+gtid_set);

Parámetros

gtid_set

El valor de gtid_set debe ser un superconjunto del valor actual de gtid_purged, y no puede cruzarse con gtid_subtract(gtid_executed,gtid_purged). Es decir, el nuevo conjunto de GTID debe incluir todos los GTID que ya estuvieron en gtid_purged, y no puede incluir ningún GTID en gtid_executed que aún no se haya purgado. El parámetro gtid_set tampoco puede incluir ningún GTID que esté en el conjunto gtid_owned global, los GTID de las transacciones que se están procesando actualmente en el servidor.

Notas de uso

El usuario maestro debe ejecutar el procedimiento mysql.rds_gtid_purged.

Este procedimiento es compatible con la versión 3.04 y versiones posteriores de Aurora MySQL.

Ejemplos

En el siguiente ejemplo, se asigna el GTID 3E11FA47-71CA-11E1-9E33-C80AA9429562:23 a la variable global gtid_purged.

CALL mysql.rds_gtid_purged('3E11FA47-71CA-11E1-9E33-C80AA9429562:23');

mysql.rds_skip_transaction_with_gtid (Aurora MySQL versión 2 y 3)

Omite la replicación de una transacción con el identificador de transacción global (GTID) especificado en una instancia principal de Aurora.

Puede utilizar este procedimiento para la recuperación de desastres cuando se sabe que una transacción de GTID específica causa un problema. Utilice este procedimiento almacenado para omitir la transacción problemática. Entre los ejemplos de transacciones problemáticas se incluyen transacciones que inhabilitan la replicación, eliminan datos importantes o provocan que la instancia de base de datos no esté disponible.

Sintaxis

CALL mysql.rds_skip_transaction_with_gtid ( gtid_to_skip );

Parámetros

gtid_to_skip

El GTID de la transacción de replicación que se debe omitir.

Notas de uso

El usuario maestro debe ejecutar el procedimiento mysql.rds_skip_transaction_with_gtid.

Este procedimiento se admite para Aurora MySQL versión 2 y 3.

Ejemplos

En el ejemplo siguiente se omite la replicación de la transacción con el GTID 3E11FA47-71CA-11E1-9E33-C80AA9429562:23.

CALL mysql.rds_skip_transaction_with_gtid('3E11FA47-71CA-11E1-9E33-C80AA9429562:23');

mysql.rds_start_replication_until_gtid (versión 3 de Aurora MySQL)

Inicia la replicación desde un clúster de base de datos de Aurora MySQL y detiene la replicación inmediatamente después del identificador de transacción global (GTID) especificado.

Sintaxis

CALL mysql.rds_start_replication_until_gtid(gtid);

Parámetros

gtid

El GTID después del cual debe detenerse la replicación.

Notas de uso

El usuario maestro debe ejecutar el procedimiento mysql.rds_start_replication_until_gtid.

Este procedimiento es compatible con la versión 3.04 y versiones posteriores de Aurora MySQL.

El procedimiento almacenado mysql.rds_start_replication_until_gtid no es compatible con la replicación administrada, que incluye lo siguiente:

Cuando el parámetro gtid especifica una transacción que ya ha ejecutado la réplica, la replicación se detiene de inmediato.

Ejemplos

En el ejemplo siguiente se inicia la replicación y se replican los cambios hasta que alcanza la ubicación de GTI 3E11FA47-71CA-11E1-9E33-C80AA9429562:23.

call mysql.rds_start_replication_until_gtid('3E11FA47-71CA-11E1-9E33-C80AA9429562:23');