Réplication des transactions à l’aide des GTID - Amazon Aurora

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Réplication des transactions à l’aide des GTID

Les procédures stockées suivantes contrôlent la réplication des transactions à l’aide des identifiants de transaction globaux (GTID) avec Aurora MySQL. Pour apprendre à utiliser la réplication basée sur les GTID avec Aurora MySQL, consultez Utilisation de la réplication basée sur des identifiants de transaction globaux (GTID).

mysql.rds_assign_gtids_to_anonymous_transactions (Aurora MySQL version 3)

Configure l’option ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS de l’instruction CHANGE REPLICATION SOURCE TO. Elle force le canal de réplication à attribuer un GTID à des transactions répliquées qui n’en possèdent pas. Vous pouvez ainsi effectuer une réplication de journaux binaires à partir d’une source qui n’utilise pas la réplication GTID vers un réplica qui l’utilise. Pour plus d’informations, consultez Instruction CHANGE REPLICATION SOURCE TO et Réplication depuis une source sans GTID vers un réplica avec GTID dans le Manuel de référence MySQL.

Syntaxe

CALL mysql.rds_assign_gtids_to_anonymous_transactions(gtid_option);

Paramètres

gtid_option

Valeur de chaîne. Les valeurs autorisées sont : OFF, LOCAL ou un UUID spécifié.

Notes d’utilisation

Cette procédure a le même effet que l’émission de l’instruction CHANGE REPLICATION SOURCE TO ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS = gtid_option dans Community MySQL.

Le GTID doit être orienté vers ON pour gtid_option pour être défini sur LOCAL ou un UUID spécifique.

La valeur par défaut est OFF, ce qui signifie que la fonctionnalité n’est pas utilisée.

LOCAL attribue un GTID incluant le propre UUID du réplica (paramètre server_uuid).

La transmission d’un paramètre correspondant à un UUID attribue un GTID qui inclut l’UUID spécifié, tel que le paramètre server_uuid pour le serveur source de réplication.

Exemples

Pour désactiver cette fonction :

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)

Pour utiliser l’UUID du 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)

Pour utiliser un UUID spécifié :

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 (Aurora MySQL version 3)

Définit la valeur globale de la variable système gtid_purged sur un ensemble d’identifiants de transaction globaux (GTID) donné. La variable système gtid_purged est un ensemble d’identifiants GTID composé des GTID de toutes les transactions qui ont été validées sur le serveur, mais qui n’existent dans aucun fichier journal binaire du serveur.

Pour permettre la compatibilité avec MySQL 8.0, il existe deux manières de définir la valeur de gtid_purged :

  • Remplacez la valeur de gtid_purged par l’ensemble d’identifiants GTID que vous avez spécifié.

  • Ajoutez l’ensemble GTID que vous avez spécifié à l’ensemble d’identifiants GTID que gtid_purged contient déjà.

Syntaxe

Pour remplacer la valeur de gtid_purged par l’ensemble d’identifiants GTID que vous avez spécifié :

CALL mysql.rds_gtid_purged (gtid_set);

Pour ajouter la valeur de gtid_purged à votre ensemble d’identifiants GTID que vous avez spécifié :

CALL mysql.rds_gtid_purged (+gtid_set);

Paramètres

gtid_set

La valeur de gtid_set doit être un sur-ensemble de la valeur actuelle de gtid_purged, et ne doit pas se croiser avecgtid_subtract(gtid_executed,gtid_purged). C’est-à-dire que le nouvel ensemble d’identifiants GTID doit inclure tous les GTID qui étaient déjà présents dans gtid_purged, et ne peut inclure aucun des GTID figurant dans gtid_executed, qui n’ont pas encore été purgés. Le paramètre gtid_set ne peut pas non plus inclure les GTID qui se trouvent dans l’ensemble gtid_owned global, les GTID pour les transactions en cours de traitement sur le serveur.

Notes d’utilisation

L’utilisateur principal doit exécuter la procédure mysql.rds_gtid_purged.

Cette procédure est prise en charge pour Aurora MySQL versions 3.04 et ultérieures.

Exemples

L’exemple suivant attribue le GTID 3E11FA47-71CA-11E1-9E33-C80AA9429562:23 à la variable globale gtid_purged.

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

mysql.rds_skip_transaction_with_gtid (Aurora MySQL versions 2 et 3)

Ignore la réplication d’une transaction avec l’identifiant de transaction global (GTID) spécifié sur une instance principale Aurora.

Vous pouvez utiliser cette procédure pour la reprise après sinistre lorsqu’il est avéré qu’une transaction GTID entraîne des problèmes. Utilisez cette procédure stockée pour ignorer la transaction problématique. Les transactions problématiques sont par exemple celles qui désactivent la réplication, suppriment des données importantes ou entraînent l’indisponibilité de l’instance de base de données.

Syntaxe

CALL mysql.rds_skip_transaction_with_gtid ( gtid_to_skip );

Paramètres

gtid_to_skip

GTID de la transaction de réplication à ignorer.

Notes d’utilisation

L’utilisateur principal doit exécuter la procédure mysql.rds_skip_transaction_with_gtid.

Cette procédure est prise en charge pour Aurora MySQL versions 2 et 3.

Exemples

L’exemple suivant ignore la réplication de la transaction avec le 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 (Aurora MySQL version 3)

Lance la réplication à partir d’un cluster de bases de données Aurora MySQL et arrête la réplication immédiatement après l’identifiant de transaction global (GTID) spécifié.

Syntaxe

CALL mysql.rds_start_replication_until_gtid(gtid);

Paramètres

gtid

Identifiant de transaction global (GTID) après lequel la réplication s’arrête.

Notes d’utilisation

L’utilisateur principal doit exécuter la procédure mysql.rds_start_replication_until_gtid.

Cette procédure est prise en charge pour Aurora MySQL versions 3.04 et ultérieures.

La procédure mysql.rds_start_replication_until_gtid stockée n’est pas prise en charge pour la réplication gérée, qui inclut les éléments suivants :

Lorsque le paramètre gtid spécifie une transaction ayant déjà été exécutée par le réplica, la réplication est immédiatement arrêtée.

Exemples

L’exemple suivant lance la réplication et réplique les modifications jusqu’à ce que le GTID soit atteint 3E11FA47-71CA-11E1-9E33-C80AA9429562:23.

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