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.
Configuration de la réplication retardée avec MySQL
Vous pouvez utiliser la réplication retardée comme stratégie pour la reprise après sinistre. Avec la réplication retardée, vous spécifiez la durée minimale, en secondes, pour retarder la réplication de la source vers la réplique de lecture. En cas de sinistre, par exemple la suppression accidentelle d’une table, vous appliquez la procédure suivante pour reprendre rapidement après le sinistre :
-
Arrêtez la réplication vers le réplica en lecture avant que lui soit envoyée la modification qui a provoqué le sinistre.
Utilisez la procédure stockée mysql.rds_stop_replication pour arrêter la réplication.
-
Arrêtez la réplication et précisez qu'elle doit s'arrêter automatiquement à une position donnée dans un fichier journal.
Vous indiquez une position juste avant le sinistre grâce à la procédure stockée mysql.rds_start_replication_until.
-
Effectuez la promotion du réplica en lecture pour qu’il devienne la nouvelle instance de base de données source, en suivant les instructions figurant dans Promotion d'un réplica en lecture en instance de bases de données autonome.
Note
-
Sur RDS for MySQL 8.4, la réplication retardée est prise en charge pour MySQL 8.4.3 et versions ultérieures. Sur RDS for MySQL 8.0, la réplication retardée est prise en charge pour MySQL 8.0.28 et versions ultérieures. Sur RDS for MySQL 5.7, la réplication retardée est prise en charge pour MySQL 5.7.44 et versions ultérieures.
-
Utilisez des procédures stockées pour configurer la réplication retardée. Vous ne pouvez pas configurer une réplication retardée avec l’AWS Management Console, l’AWS CLI ou l’API Amazon RDS.
-
Vous pouvez utiliser la réplication basée sur les identifiants de transaction globaux (GTID) dans une réplication retardée pour les versions suivantes.
-
RDS for MySQL version 5.7.44 et versions 5.7 ultérieures
-
RDS for MySQL version 8.0.28 et versions 8.0 ultérieures
-
RDS for MySQL version 8.4.3 et versions 8.4 ultérieures
Si vous utilisez une réplication basée sur des identifiants de transaction globaux (GTID), utilisez la procédure stockée mysql.rds_start_replication_until_gtid au lieu de la procédure stockée mysql.rds_start_replication_until. Pour en savoir plus sur les réplications basées sur des identifiants de transaction globaux (GTID), consultez Utilisation de la réplication basée sur des identifiants de transaction globaux (GTID).
-
Rubriques
Configuration de la réplication retardée pendant la création du réplica en lecture
Pour configurer la réplication retardée pour tout réplica en lecture à venir créé à partir d’une instance de base de données, exécutez la procédure stockée mysql.rds_set_configuration avec le paramètre target delay.
Pour configurer la réplication retardée pendant la création du réplica en lecture
-
À l'aide d'un client MySQL, connectez-vous à l'instance de base de données MySQL qui constituera la source des réplicas en lecture en tant qu'utilisateur principal.
-
Exécutez la procédure stockée mysql.rds_set_configuration avec le paramètre
target delay.Par exemple, exécutez la procédure stockée suivante pour indiquer que la réplication est retardée d’au moins une heure (3 600 secondes) pour tout réplica en lecture créé à partir de l’instance de base de données actuelle.
call mysql.rds_set_configuration('target delay', 3600);Note
Une fois cette procédure stockée exécutée, tout réplica en lecture que vous créez en utilisant l’AWS CLI ou l’API Amazon RDS est configuré avec la réplication retardée du nombre de secondes spécifié.
Modification de la réplication retardée pour un réplica en lecture existant
Pour modifier la réplication retardée pour un réplica en lecture existant, exécutez la procédure stockée mysql.rds_set_source_delay.
Pour modifier la réplication retardée pour un réplica en lecture existant
-
En utilisant un client MySQL, connectez-vous au réplica en lecture en tant qu'utilisateur principal.
-
Utilisez la procédure stockée mysql.rds_stop_replication pour arrêter la réplication.
-
Exécutez la procédure stockée mysql.rds_set_source_delay.
Par exemple, exécutez la procédure stockée suivante pour indiquer que la réplication vers le réplica en lecture est retardée d’au moins une heure (3 600 secondes).
call mysql.rds_set_source_delay(3600); -
Utilisez la procédure stockée mysql.rds_start_replication pour lancer la réplication.
Définition d'une position où arrêter la réplication vers un réplica en lecture
Après avoir arrêté la réplication vers le réplica en lecture, vous pouvez démarrer la réplication, puis l'arrêter à la position spécifiée dans le fichier journal binaire en utilisant la procédure stockée mysql.rds_start_replication_until.
Pour démarrer la réplication vers un réplica en lecture et l'arrêter à une position donnée
-
En utilisant un client MySQL, connectez-vous à l'instance de base de données MySQL source en tant qu'utilisateur principal.
-
Exécutez la procédure stockée mysql.rds_start_replication_until.
L'exemple suivant lance la réplication et réplique les modifications jusqu'à ce qu'il atteigne la position
120dans le fichier journal binairemysql-bin-changelog.000777. Dans un scénario de reprise après sinistre, nous supposons que cette position120est juste avant le sinistre.call mysql.rds_start_replication_until( 'mysql-bin-changelog.000777', 120);
La réplication s'arrête automatiquement lorsque le point d'arrêt est atteint. L'événement RDS suivant est généré: Replication has been stopped since the replica reached the stop point specified by the
rds_start_replication_until stored procedure.
Promotion d’un réplica en lecture
Après l’arrêt de la réplication, dans un scénario de reprise après sinistre, vous pouvez promouvoir un réplica en lecture comme nouvelle instance de base de données source. Pour en savoir plus sur la promotion d’un réplica en lecture, consultez Promotion d'un réplica en lecture en instance de bases de données autonome.