Conversion d’une instance de base de données existante en cluster actif-actif - Amazon Relational Database Service

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.

Conversion d’une instance de base de données existante en cluster actif-actif

La version du moteur de base de données de l’instance de base de données que vous souhaitez migrer vers un cluster actif-actif doit être l’une des versions suivantes :

  • Toutes les versions 8.4 de MySQL

  • MySQL 8.0.35 et versions mineures ultérieures

Si vous devez mettre à niveau la version du moteur, consultez Mises à niveau du moteur de base de données RDS for MySQL.

Si vous configurez un cluster actif-actif avec des instances de base de données dans plusieurs VPC, assurez-vous de remplir les conditions requises dans Préparation à un cluster actif-actif inter-VPC.

Procédez comme suit pour migrer une instance de base de données existante vers un cluster actif-actif pour RDS for MySQL.

Étape 1 : Définir les paramètres du cluster actif-actif dans un ou plusieurs groupes de paramètres personnalisés

Les instances de base de données RDS for MySQL d’un cluster actif-actif doivent être associées à un groupe de paramètres personnalisé dont les paramètres requis sont correctement définis. Pour en savoir plus sur les paramètres et le réglage requis pour chacun, consultez Réglages de paramètres requis pour les clusters actifs-actifs.

Vous pouvez définir ces paramètres dans de nouveaux groupes de paramètres ou dans des groupes de paramètres existants. Toutefois, pour éviter d’affecter accidentellement les instances de base de données qui ne font pas partie du cluster actif-actif, nous vous recommandons vivement de créer un nouveau groupe de paramètres personnalisé. Les instances de base de données d’un cluster actif-actif peuvent être associées au même groupe de paramètres de base de données ou à différents groupes.

Vous pouvez utiliser la AWS Management Console ou l’AWS CLI pour créer un nouveau groupe de paramètres personnalisés. Pour plus d’informations, consultez Création d’un groupe de paramètres de base de données dans Amazon RDS. L’exemple suivant exécute la commande AWS CLI create-db-parameter-group pour créer un groupe de paramètres de base de données personnalisé nommé myactivepg pour RDS for MySQL 8.0 :

Pour Linux, macOS ou Unix :

aws rds create-db-parameter-group \ --db-parameter-group-name myactivepg \ --db-parameter-group-family mysql8.0 \ --description "Parameter group for active-active clusters"

Pour Windows :

aws rds create-db-parameter-group ^ --db-parameter-group-name myactivepg ^ --db-parameter-group-family mysql8.0 ^ --description "Parameter group for active-active clusters"

Vous pouvez également utiliser la AWS Management Console ou l’AWS CLI pour définir les paramètres du groupe de paramètres personnalisés. Pour plus d’informations, consultez Modification de paramètres dans un groupe de paramètres de base de données dans Amazon RDS.

L’exemple suivant exécute la commande AWS CLI modify-db-parameter-group pour définir les paramètres de RDS for MySQL 8.0. Pour utiliser cet exemple avec RDS for MySQL 8.4, remplacez slave_preserve_commit_order par replica_preserve_commit_order.

Pour Linux, macOS ou Unix :

aws rds modify-db-parameter-group \ --db-parameter-group-name myactivepg \ --parameters "ParameterName='rds.group_replication_enabled',ParameterValue='1',ApplyMethod=pending-reboot" \ "ParameterName='rds.custom_dns_resolution',ParameterValue='1',ApplyMethod=pending-reboot" \ "ParameterName='enforce_gtid_consistency',ParameterValue='ON',ApplyMethod=pending-reboot" \ "ParameterName='gtid-mode',ParameterValue='ON',ApplyMethod=pending-reboot" \ "ParameterName='binlog_format',ParameterValue='ROW',ApplyMethod=immediate" \ "ParameterName='slave_preserve_commit_order',ParameterValue='ON',ApplyMethod=immediate" \ "ParameterName='group_replication_group_name',ParameterValue='11111111-2222-3333-4444-555555555555',ApplyMethod=pending-reboot"

Pour Windows :

aws rds modify-db-parameter-group ^ --db-parameter-group-name myactivepg ^ --parameters "ParameterName='rds.group_replication_enabled',ParameterValue='1',ApplyMethod=pending-reboot" ^ "ParameterName='rds.custom_dns_resolution',ParameterValue='1',ApplyMethod=pending-reboot" ^ "ParameterName='enforce_gtid_consistency',ParameterValue='ON',ApplyMethod=pending-reboot" ^ "ParameterName='gtid-mode',ParameterValue='ON',ApplyMethod=pending-reboot" ^ "ParameterName='binlog_format',ParameterValue='ROW',ApplyMethod=immediate" ^ "ParameterName='slave_preserve_commit_order',ParameterValue='ON',ApplyMethod=immediate" ^ "ParameterName='group_replication_group_name',ParameterValue='11111111-2222-3333-4444-555555555555',ApplyMethod=pending-reboot"

Étape 2 : Associer l’instance de base de données à un groupe de paramètres de base de données dont les paramètres de réplication de groupe requis sont définis

Associez l’instance de base de données à un groupe de paramètres que vous avez créé ou modifié à l’étape précédente. Pour obtenir des instructions, consultez Association d’un groupe de paramètres de base de données à une instance de base de données dans Amazon RDS.

Redémarrez l’instance de base de données pour que les nouveaux paramètres prennent effet. Pour obtenir des instructions, consultez Redémarrage d'une instance de base de données.

Étape 3 : Créer le cluster actif-actif

Dans le groupe de paramètres de base de données associé à l’instance de base de données, définissez le paramètre group_replication_group_seeds sur le point de terminaison de l’instance de base de données que vous convertissez.

Vous pouvez utiliser la AWS Management Console ou l’AWS CLI pour définir le paramètre. Vous n’avez pas besoin de redémarrer l’instance de base de données après avoir défini ce paramètre. Pour plus d’informations sur la définition des paramètres, consultez Modification de paramètres dans un groupe de paramètres de base de données dans Amazon RDS.

L’exemple suivant exécute la commande AWS CLI modify-db-parameter-group pour définir les paramètres :

Pour Linux, macOS ou Unix :

aws rds modify-db-parameter-group \ --db-parameter-group-name myactivepg \ --parameters "ParameterName='group_replication_group_seeds',ParameterValue='myactivedb1.123456789012.us-east-1.rds.amazonaws.com:3306',ApplyMethod=immediate"

Pour Windows :

aws rds modify-db-parameter-group ^ --db-parameter-group-name myactivepg ^ --parameters "ParameterName='group_replication_group_seeds',ParameterValue='myactivedb1.123456789012.us-east-1.rds.amazonaws.com:3306',ApplyMethod=immediate"

Étape 4 : Créer des instances de base de données RDS for MySQL supplémentaires pour le cluster actif-actif

Pour créer des instances de base de données supplémentaires pour le cluster actif-actif, effectuez une reprise ponctuelle sur l’instance de base de données que vous convertissez. Pour obtenir des instructions, consultez Ajout d’une instance de base de données à un cluster actif-actif à l’aide de la reprise ponctuelle.

Un cluster actif-actif peut inclure jusqu’à neuf instances de base de données. Effectuez une reprise ponctuelle sur l’instance de base de données jusqu’à ce que vous disposiez du nombre d’instances de base de données que vous souhaitez pour le cluster. Lorsque vous effectuez une reprise ponctuelle, assurez-vous d’associer l’instance de base de données que vous ajoutez à un groupe de paramètres de base de données pour lequel rds.group_replication_enabled est défini sur 1. Sinon, la réplication de groupe ne démarrera pas sur l’instance de base de données ajoutée récemment.

Étape 5 : Initialiser le groupe sur l’instance de base de données que vous convertissez

Initialisez le groupe et lancez la réplication :

  1. Connectez-vous à l’instance de base de données que vous êtes en train de convertir dans un client SQL. Pour plus d’informations sur la connexion à une instance de base de données RDS for MySQL, consultez Connexion à votre instance de base de données MySQL.

  2. Dans le client SQL, exécutez les procédures stockées suivantes et remplacez group_replication_user_password par le mot de passe de l’utilisateur rdsgrprepladmin. L’utilisateur rdsgrprepladmin est réservé aux connexions de réplication de groupe dans un cluster actif-actif. Le mot de passe de cet utilisateur doit être le même sur toutes les instances de base de données d’un cluster actif-actif.

    call mysql.rds_set_configuration('binlog retention hours', 168); -- 7 days binlog call mysql.rds_group_replication_create_user('group_replication_user_password'); call mysql.rds_group_replication_set_recovery_channel('group_replication_user_password'); call mysql.rds_group_replication_start(1);

    Cet exemple définit la valeur binlog retention hours sur 168, ce qui signifie que les fichiers journaux binaires sont retenus pendant sept jours sur l’instance de base de données. Vous pouvez ajuster cette valeur en fonction des exigences.

    Cet exemple indique 1 dans la procédure stockée mysql.rds_group_replication_start d’initialiser un nouveau groupe avec l’instance de base de données actuelle.

    Pour plus d’informations sur les procédures stockées appelées dans l’exemple, consultez Gestion des clusters actifs-actifs.

Étape 6 : Démarrer la réplication sur les autres instances de base de données du cluster actif-actif

Pour chacune des instances de base de données du cluster actif-actif, utilisez un client SQL pour vous connecter à l’instance et exécutez les procédures stockées suivantes. Remplacez group_replication_user_password par le mot de passe de l’utilisateur rdsgrprepladmin.

call mysql.rds_set_configuration('binlog retention hours', 168); -- 7 days binlog call mysql.rds_group_replication_create_user('group_replication_user_password'); call mysql.rds_group_replication_set_recovery_channel('group_replication_user_password'); call mysql.rds_group_replication_start(0);

Cet exemple définit la valeur binlog retention hours sur 168, ce qui signifie que les fichiers journaux binaires sont retenus pendant sept jours sur chaque instance de base de données. Vous pouvez ajuster cette valeur en fonction des exigences.

Cet exemple indique 0 dans la procédure stockée mysql.rds_group_replication_start pour associer l’instance de base de données actuelle à un groupe existant.

Astuce

Assurez-vous d’exécuter ces procédures stockées sur toutes les autres instances de base de données du cluster actif-actif.

Étape 7 : (Recommandé) Vérifiez l’état du cluster actif-actif

Pour vous assurer que chaque membre du cluster est correctement configuré, vérifiez l’état du cluster en vous connectant à une instance de base de données du cluster actif-actif et en exécutant la commande SQL suivante :

SELECT * FROM performance_schema.replication_group_members;

Votre sortie doit afficher ONLINE pour le MEMBER_STATE de chaque instance de base de données, comme dans l’exemple de sortie suivant :

+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+ | CHANNEL_NAME | MEMBER_ID | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION | MEMBER_COMMUNICATION_STACK | +---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+ | group_replication_applier | 9854d4a2-5d7f-11ee-b8ec-0ec88c43c251 | ip-10-15-3-137 | 3306 | ONLINE | PRIMARY | 8.0.35 | MySQL | | group_replication_applier | 9e2e9c28-5d7f-11ee-8039-0e5d58f05fef | ip-10-15-3-225 | 3306 | ONLINE | PRIMARY | 8.0.35 | MySQL | | group_replication_applier | a6ba332d-5d7f-11ee-a025-0a5c6971197d | ip-10-15-1-83 | 3306 | ONLINE | PRIMARY | 8.0.35 | MySQL | +---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+ 3 rows in set (0.00 sec)

Pour plus d’informations sur les valeurs possibles de MEMBER_STATE, consultez États de serveur de réplication de groupe dans la documentation MySQL.