Comment effectuer une réplication à l'aide des journaux binaires d'une instance active Amazon RDS for MySQL vers une instance en attente sur site ?

Date de la dernière mise à jour : 14/08/2020

Comment répliquer une instance Amazon Relational Database Service (Amazon RDS) for MySQL à l'aide des journaux binaires dans un environnement externe sur site ?

Brève description

Pour migrer des données depuis Amazon RDS for MySQL vers un serveur de base de données sur site, créez un réplica en lecture sur AWS, puis transférez la cible de réplication du réplica en lecture Amazon RDS MySQL vers le serveur sur site.

Si vous utilisez la réplication GTID, consultez la rubrique Configuration de la réplication GTID avec une instance maître externe.

Solution

1.    Vérifiez que les sauvegardes automatiques sont activées sur l’instance de base de données à répliquer. Dans cet exemple, l'instance de base de données est RDS-active.

Remarque : la période de conservation minimale des sauvegardes doit être d'une journée.

2.    Créez un réplica en lecture de l'instance de base de données en utilisant la même configuration. Dans cet exemple, le réplica s'appelle RDS-standby.

3.    Connectez-vous à l'instance de base de données RDS-standby et vérifiez que le réplica est mis à niveau avec RDS-active :

mysql> show slave status \G

Remarque : seconds_behind_master doit avoir la valeur 0, ce qui signifie qu’il n’existe pas de décalage de réplica.

4.    Arrêtez la réplication sur RDS-standby:

mysql> call mysql.rds_stop_replication;

5.    Enregistrez les données du réplica, puis notez les paramètres -log_file et -log_position :

mysql> show slave status \G

Remarque : -log_file correspond à la valeur de Relay_Master_Log_File, et -log_position à la valeur Exec_Master_Log_Pos.

6.    Quittez le terminal et utilisez mysqldump (ou un utilitaire similaire) pour créer une sauvegarde de RDS-standby qui sera répliquée sur le serveur cible. Dans cet exemple, le serveur sur site cible s'appelle MySQL-target.

$ mysqldump -h hostname -u username -p dbname > backup_file_name.sql

7.    Une fois la sauvegarde créée, transférez le fichier de sauvegarde vers le serveur sur site cible en vous connectant à MySQL-target.

8.    Créez une nouvelle base de données et restaurez-la à l'aide d'un dumpfile sur la nouvelle instance de base de données externe :

$ mysql -h hostname -u username -p dbname < backup_file_name.sql

9.    Connectez-vous à l'instance RDS-active, configurez un utilisateur de réplication et accordez les privilèges nécessaires à l'utilisateur :

mysql> create user repl_user@'%' identified by 'repl_user';
   mysql>grant replication slave, replication client on *.* to repl_user@'%';
   mysql>show grants for repl_user@'%';

Remarque : veillez à remplacer repl_user par votre nom d'utilisateur de réplication.

10.    Connectez-vous à l'instance cible et arrêtez le serveur MySQL.

11.    Modifiez les paramètres fichier mon.cnf pour pointer vers votre ID de serveur unique, tel que server_id=2, et le nom de la base de données à répliquer à partir de l'instance de base de données, tel que replicate-do-db=test.

12.    Enregistrez le fichier.

13.    Redémarrez le serveur MySQL sur MySQL-target.

14.    Établissez une connexion à l'instance de base de données RDS-active :

mysql> change master to master_host='rds-endpoint',master_user='repl_user', master_password='password', master_log_file='mysql-bin.000001', master_log_pos= 107;

15.    Vérifiez que MySQL-target peut se connecter à RDS-active.

Remarque : si vous utilisez Amazon Elastic Compute Cloud (Amazon EC2) en tant qu'instance MySQL externe, autorisez les connexions en provenance du groupe de sécurité ou de l'adresse IP dans le groupe de sécurité de l'instance RDS-active. Si vous utilisez un serveur MySQL externe, exécutez telnet pour tester la connectivité. Pour obtenir plus d'informations, consultez la section Comment résoudre les problèmes de connexion à mon instance de base de données Amazon RDS ?

RDS-Endpoint est le point de terminaison de l’instance de base de données RDS-active . Le nom d'utilisateur et le mot de passe sont identiques à ceux que vous avez créés à l'étape 9. MASTER_LOG_FILE et MASTER_LOG_POS correspondent aux valeurs notées à l'étape 5.

16.    Connectez-vous MySQL-target, et démarrez la réplication :

mysql> start slave;

17.    Vérifiez que la réplication est en cours de synchronisation entre RDS-active et MySQL-target :

mysql> Show slave status\G

18.    Si les secondes sur l’instance principale sont égales à zéro, vous pouvez supprimer l'instance RDS-standby.