Utilisation de la réplication basée sur des identifiants de transaction globaux (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.

Utilisation de la réplication basée sur des identifiants de transaction globaux (GTID)

Le contenu suivant explique comment utiliser les identifiants de transaction globaux (GTID) avec la réplication du journal binaire (binlog) . entre un cluster Aurora MySQL et une source externe.

Note

Pour Aurora, vous pouvez uniquement utiliser cette fonction avec des clusters Aurora MySQL qui utilisent la réplication des journaux binaires vers/à partir d'une base de données MySQL externe. L'autre base de données peut être une instance Amazon RDS MySQL, une base de données MySQL sur site, ou un cluster de base de données Aurora dans une autre Région AWS. Pour apprendre à configurer ce type de réplication, veuillez consulter Réplication entre Aurora et MySQL ou entre Aurora et un autre cluster de bases de données Aurora (réplication de journaux binaires).

Si vous utilisez la réplication binlog et que vous n'êtes pas familiarisé avec la réplication basée sur GTID avec MySQL, consultez la section Réplication avec des identifiants de transaction globaux dans la documentation MySQL.

La réplication GTID est prise en charge pour Aurora MySQL versions 2 et 3.

Présentation des identifiants de transaction globaux (GTID)

Les identifiants de transaction globaux (GTID) sont des identifiants uniques générés pour des transactions MySQL validées. Vous pouvez utiliser ces identifiants pour simplifier et faciliter la résolution des problèmes liés à la réplication des journaux binaires.

Note

Lorsqu'Aurora synchronise des données entre les instances de base de données d'un cluster, ce mécanisme de réplication n'implique pas le journal binaire (binlog). Pour Aurora MySQL, la réplication GTID s'applique uniquement lorsque vous utilisez également la réplication des journaux binaires pour répliquer à l'intérieur ou à l'extérieur d'un cluster de base de données Aurora MySQL à partir d'une base de données externe compatible avec MySQL.

MySQL utilise deux types différents de transactions pour la réplication des journaux binaires :

  • Transactions GTID – Transactions identifiées par un identifiant de transaction global (GTID).

  • Transactions anonymes – Transactions auxquelles aucun identifiant de transaction global (GTID) n'est associé.

Dans une configuration de réplication, les GTID sont uniques parmi toutes les instances de base de données. Les GTID simplifient la configuration de réplication dans la mesure où, lorsque vous les utilisez, vous n'avez pas à vous référer aux positions des fichiers journaux. Les GTID facilitent également le suivi des transactions répliquées et déterminent si l'instance source et les réplicas sont cohérents.

En règle générale, vous utilisez la réplication GTID avec Aurora lorsque vous effectuez une réplication à partir d'une base de données externe compatible avec MySQL dans un cluster Aurora. Vous pouvez procéder à la configuration de cette réplication dans le cadre d'une migration d'une base de données sur site ou Amazon RDS vers Aurora MySQL. Si la base de données externe utilise déjà des identifiants de transaction globaux (GTID), l'utilisation de la réplication GTID pour le cluster Aurora permet de simplifier le processus de réplication.

Vous configurez la réplication GTID pour un cluster Aurora MySQL en commençant par définir les paramètres de configuration appropriés dans un groupe de paramètres de cluster de bases de données. Vous associez ensuite ce groupe de paramètres au cluster.

Paramètres pour la réplication basée sur des identifiants de transaction globaux (GTID)

Utilisez les paramètres suivants pour configurer une réplication GTID.

Paramètre Valeurs valides Description

gtid_mode

OFF, OFF_PERMISSIVE, ON_PERMISSIVE, ON

OFF spécifie que les nouvelles transactions sont des transactions anonymes (et n'ont donc pas de GTID), et qu'une transaction doit être anonyme pour être répliquée.

OFF_PERMISSIVE spécifie que les nouvelles transactions sont des transactions anonymes, mais que toutes les transactions peuvent être répliquées.

ON_PERMISSIVE spécifie que les nouvelles transactions sont des transactions GTID, mais que toutes les transactions peuvent être répliquées.

ON spécifie que les nouvelles transactions sont des transactions GTID, et qu'une transaction doit être une transaction GTID pour être répliquée.

enforce_gtid_consistency

OFF, ON, WARN

OFF autorise les transactions à enfreindre la cohérence GTID.

ON interdit aux transactions d'enfreindre la cohérence GTID.

WARN autorise les transactions à enfreindre la cohérence GTID mais génère un avertissement lorsqu'une infraction se produit.

Note

Dans le AWS Management Console, le gtid_mode paramètre apparaît sous la formegtid-mode.

Pour la réplication GTID, utilisez ces paramètres pour le groupe de paramètres de votre cluster de bases de données Aurora MySQL :

  • ON et ON_PERMISSIVE s'appliquent uniquement à la réplication sortante d'un cluster Aurora MySQL. Ces deux valeurs forcent votre cluster de base de données Aurora à utiliser des identifiants de transaction globaux (GTID) pour les transactions répliquées sur une base de données externe. ON exige que la base de données externe utilise également la réplication GTID. ON_PERMISSIVE rend la réplication GTID facultative sur la base de données externe.

  • S'il est défini, OFF_PERMISSIVE indique que votre cluster de base de données Aurora peuvent accepter la réplication entrante à partir d'une base de données externe. que cette dernière utilise la réplication GTID ou non.

  • S'il est défini, OFF indique que votre cluster de base de données Aurora accepte uniquement la réplication entrante à partir de bases de données externes qui n'utilisent pas la réplication GTID.

Astuce

La réplication entrante est le scénario de réplication des journaux binaires le plus fréquent pour les clusters Aurora MySQL. Pour la réplication entrante, il est recommandé de définir le mode GTID sur OFF_PERMISSIVE. Cette valeur autorise la réplication entrante à partir de bases de données externes, quels que soient les paramètres GTID au niveau de la source de réplication.

Pour plus d'informations sur les groupes de paramètres, consultez Utilisation des groupes de paramètres.

Configuration de la réplication basée sur des identifiants de transaction globaux (GTID) pour un cluster Aurora MySQL.

Lorsque la réplication GTID est activée pour un cluster de base de données Aurora MySQL, les paramètres GTID s'appliquent à la réplication  des journaux binaires entrante et sortante.

Pour activer la réplication GTID pour un cluster Aurora MySQL
  1. Créez ou modifiez un groupe de paramètres de cluster de bases de données en définissant les valeurs suivantes :

    • gtid_modeON ou ON_PERMISSIVE

    • enforce_gtid_consistencyON

  2. Associez le groupe de paramètres de cluster de bases de données au cluster Aurora MySQL. Pour ce faire, suivez les procédures décrites dans Utilisation des groupes de paramètres.

  3. (Facultatif) Indiquez comment affecter des GTID à des transactions qui n'en incluent pas. Pour ce faire, appelez la procédure stockée dans mysql.rds_assign_gtids_to_anonymous_transactions (Aurora MySQL version 3).

Désactivation de la réplication GTID pour un cluster de bases de données Aurora MySQL

Vous pouvez désactiver la réplication GTID pour un cluster de base de données Aurora MySQL. Dans ce cas, le cluster Aurora ne peut pas effectuer de réplication des journaux binaires entrante ou sortante avec des bases de données externes qui utilisent la réplication GTID.

Note

Dans la procédure suivante, un réplica en lecture représente la cible de réplication dans une configuration Aurora avec une réplication des journaux binaires vers/à partir d'une base de données externe. Il ne représente pas les instances de base de données de réplica Aurora en lecture seule. Par exemple, lorsqu'un cluster Aurora accepte la réplication entrante à partir d'une source externe, l'instance principale d'Aurora sert de réplica en lecture pour la réplication des journaux binaires.

Pour plus de détails sur les procédures stockées mentionnées dans la présente section, veuillez consulter Procédures stockées Aurora MySQL.

Pour désactiver la réplication GTID pour un cluster de base de données Aurora MySQL
  1. Sur les répliques d'Aurora, exécutez la procédure suivante :

    Pour la version 3

    CALL mysql.rds_set_source_auto_position(0);

    Pour la version 2

    CALL mysql.rds_set_master_auto_position(0);
  2. Réinitialisez gtid_mode sur ON_PERMISSIVE.

    1. Assurez-vous que le groupe de paramètres de cluster de bases de données associé au cluster Aurora MySQL contient le paramètre gtid_mode défini sur ON_PERMISSIVE.

      Pour plus d'informations sur la définition des paramètres de configuration à l'aide de groupes de paramètres, veuillez consulter Utilisation des groupes de paramètres.

    2. Redémarrez le cluster de base de données Aurora MySQL.

  3. Réinitialisez gtid_mode sur OFF_PERMISSIVE.

    1. Assurez-vous que le groupe de paramètres de cluster de bases de données associé au cluster Aurora MySQL contient le paramètre gtid_mode défini sur OFF_PERMISSIVE.

    2. Redémarrez le cluster de base de données Aurora MySQL.

  4. Attendez que toutes les transactions GTID soient appliquées sur l'instance principale d'Aurora. Pour vérifier qu'elles sont appliquées, procédez comme suit :

    1. Sur l'instance Auroraprincipale, exécutez la commande SHOW MASTER STATUS.

      Votre sortie doit être similaire à la sortie suivante.

      File Position ------------------------------------ mysql-bin-changelog.000031 107 ------------------------------------

      Notez le fichier et la position dans votre sortie.

    2. Sur chaque réplique lue, utilisez le fichier et les informations de position de son instance source à l'étape précédente pour exécuter la requête suivante :

      Pour la version 3

      SELECT SOURCE_POS_WAIT('file', position);

      Pour la version 2

      SELECT MASTER_POS_WAIT('file', position);

      Par exemple, si le nom du fichier est mysql-bin-changelog.000031 et sa position l'est107, exécutez l'instruction suivante :

      Pour la version 3

      SELECT SOURCE_POS_WAIT('mysql-bin-changelog.000031', 107);

      Pour la version 2

      SELECT MASTER_POS_WAIT('mysql-bin-changelog.000031', 107);
  5. Réinitialisez les paramètres GTID pour désactiver la réplication basée sur le GTID.

    1. Assurez-vous que le groupe de paramètres de cluster de bases de données associé au cluster Aurora MySQL contient les valeurs suivantes :

      • gtid_modeOFF

      • enforce_gtid_consistencyOFF

    2. Redémarrez le cluster de base de données Aurora MySQL.