Comment migrer mon instance de base de données Amazon RDS for MySQL en utilisant une heure de début personnalisée ?

Lecture de 7 minute(s)
0

Je souhaite migrer mon instance de base de données Amazon Relational Database Service (Amazon RDS) for MySQL vers une autre instance de base de données MySQL en utilisant une heure de début personnalisée. Comment procéder ?

Brève description

Pour migrer des données depuis Amazon RDS for MySQL vers une autre instance de base de données MySQL, vous pouvez utiliser l'une des méthodes suivantes :

  • Réplication basée sur les journaux binaires (binlogs)
    Remarque : si vous utilisez la version MySQL 8.0.17, il est possible que le moteur n'affiche pas la dernière position du fichier binlog et le nom de fichier lors d'une reprise après incident. Par conséquent, vous ne pourrez pas utiliser la méthode de la réplication des journaux binaires pour migrer vos données. Consultez le site web de MySQL pour en savoir plus ce problème connu.
  • AWS DMS

Résolution

Réplication des journaux binaires

Conditions préalables :

  • La réplication des journaux binaires utilise des fichiers binlog générés sur la source pour enregistrer les modifications en cours. Définissez le paramètre binlog_format sur le format de journalisation binaire de votre choix (ROW, STATEMENT ou MIXED).
  • Augmentez la valeur du paramètre des heures de rétention des journaux binaires. De cette façon, les journaux binaires qui n'ont pas encore été envoyés restent sur l'instance Amazon RDS for MySQL source.
  • Assurez-vous que l'instance Amazon RDS for MySQL est accessible depuis l'hôte cible.

Pour migrer des données depuis Amazon RDS for MySQL vers une autre instance de base de données MySQL à l'aide de la réplication des journaux binaires, effectuez les opérations suivantes :

1.    Effectuez unerestauration à un moment donné (PITR) de l'instance de base de données Amazon RDS source avec une heure de début personnalisée (ou une valeur d'un moment donné).

2.    Créez une sauvegarde de l'instance RDS de restauration à un moment donné.

Par exemple, vous pouvez utiliser mysqldump pour effectuer cette tâche :

mysqldump -h rdsendpoint -u username -p dbname > backupfile.sql

3.    Vérifiez le fichier journal des erreurs de l'instance RDS de restauration à un moment donné et enregistrez le message relatif au dernier fichier binlog appliqué et à la dernière position. 

Voici un exemple de message de fichier journal :

[Note] InnoDB: Last MySQL binlog file position 0 456, file name mysql-bin-changelog.152707

Remarque : vous devez accéder au fichier binlog des enregistrements et à tous les fichiers binlog suivants pour la réplication. La réplication de l'instance RDS source ne peut être effectuée qu'à l'aide de ces fichiers. La période maximale de rétention des journaux binaires dans RDS MySQL peut être définie sur sept jours seulement et la valeur par défaut est « NULL ». (Pour plus d'informations, consultez mysql.rds_set_configuration.) Par conséquent, retenez ces fichiers binlog sur l'instance source pour les terminer dans les étapes ultérieures.

4.    Configurez un utilisateur de la réplication et accordez les privilèges nécessaires à l'utilisateur sur l'instance Amazon RDS for MySQL source :

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@'%';

5.    Transférez le fichier de sauvegarde vers le serveur sur site cible en vous connectant à MySQL-target. 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 < backupfile.sql

6.    Arrêtez le moteur MySQL cible :

$ service mysqld stop
  1. Modifiez les paramètres du fichier my.cnf afin d'indiquer votre ID de serveur unique et la base de données que vous essayez de répliquer.

Par exemple :

server_id=2
replicate-do-db=testdb

Si vous répliquez plusieurs bases de données, vous pouvez utiliser l'option replicate-do-db plusieurs fois et spécifier ces bases de données sur des lignes distinctes, comme ceci :

replicate-do-db=<db_name_1>
replicate-do-db=<db_name_2>
replicate-do-db=<db_name_N>

Pour plus d'informations sur la création d'un filtre de réplication avec le nom de la base de données, consultez la rubrique replicate-do-db sur le site web de MySQL.

8.    Enregistrez le fichier et redémarrez le moteur de base de données MySQL sur l'instance de base de données MySQL cible.

Par exemple, si vous utilisez un système Linux, vous pouvez utiliser la syntaxe suivante :

service mysqld restart

9.    Établissez une connexion à l'instance de base de données RDS for MySQL source.

Par exemple :

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

master_host : point de terminaison de l'instance Amazon RDS for MySQL source.
master_user : nom de l'utilisateur de la réplication (créé à l'étape 4).
master_password : mot de passe de l'utilisateur de la réplication.
master_log_file : nom du fichier binlog enregistré à l'étape 3. (À l'étape 3, l'exemple de sortie indiquait « mysql-bin-changelog.152707 » comme nom de fichier binlog)
master_log_pos : position du journal binaire enregistrée à l'étape 3. (À l'étape 3, l'exemple de sortie indiquait « 456 » comme position du fichier binlog)

  1.     Connectez-vous à l'instance de base de données RDS for MySQL cible et commencez la réplication avec la commande suivante :
mysql> start slave;

11.  Vérifiez que la réplication est synchronisée entre l'instance de base de données RDS for MySQL source et l'instance de base de données MySQL cible :

mysql> show slave status\G

AWS DMS

Avant de configurer la réplication à l'aide d'AWS Database Migration Service (AWS DMS), consultez les ressources suivantes :

  • Pour effectuer une sauvegarde de l'instance restaurée à un moment donné, consultez les étapes 1 à 5 de la section Réplication du journal binaire. Il est recommandé de suivre ces étapes, car l'heure de début personnalisée peut être à n'importe quel moment ( dans le passé) de votre période de rétention des sauvegardes. Après avoir restauré la sauvegarde de l'instance de base de données cible, enregistrez le numéro de séquence du journal de point de contrôle (LSN) généré pendant le processus de restauration de la base de données. Vous devez référencer le LSN (log sequence number) pour définir l'heure de début de la capture des modifications de données (CDC, change data capture). Pour obtenir le LSN du point de contrôle, consultez le fichier journal des erreurs de l'instance RDS MySQL restaurée, immédiatement après la fin de l'opération de restauration à un moment donné. Par exemple :
[Note] InnoDB: Log scan progressed past the checkpoint lsn 44326835524

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 3 ans