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.
Temas
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
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 =
en la comunidad MySQL.gtid_option
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 degtid_purged
, y no puede cruzarse congtid_subtract(gtid_executed,gtid_purged)
. Es decir, el nuevo conjunto de GTID debe incluir todos los GTID que ya estuvieron engtid_purged
, y no puede incluir ningún GTID engtid_executed
que aún no se haya purgado. El parámetrogtid_set
tampoco puede incluir ningún GTID que esté en el conjuntogtid_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');