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 multisource pour Amazon Aurora MySQL
Avec la réplication multisource, vous pouvez configurer un cluster de bases de données Amazon Aurora MySQL en tant que réplique qui reçoit des événements de journal binaires provenant de plusieurs bases de données MySQL sources. Chaque source peut être une instance de base de données RDS pour MySQL, un autre cluster de bases de données Aurora MySQL ou une base de données MySQL exécutée en dehors d'Amazon RDS.
Multi-source la réplication est prise en charge pour les clusters de bases de données Aurora MySQL exécutant les versions de moteur suivantes :
-
Aurora MySQL 8.4.8 et versions ultérieures
Pour plus d'informations sur la réplication multisource MySQL, consultez la section Multi-Source Réplication MySQL
Note
Multi-source la réplication sur Aurora MySQL utilise l'instance d'écriture (principale) du cluster de base de données Aurora comme cible de réplication. Toutes les procédures stockées de réplication doivent être appelées lorsqu'elles sont connectées à l'instance d'écriture du cluster.
Cas d’utilisation de la réplication multisource
Envisagez d'utiliser la réplication multisource sur Aurora MySQL dans les cas suivants :
-
Consolidation des partitions : applications qui ont besoin de fusionner ou de combiner des données provenant de plusieurs partitions hébergées sur des instances de bases de données distinctes dans un seul cluster de bases de données Aurora MySQL.
-
Rapports consolidés : applications qui doivent générer des rapports à partir de données consolidées provenant de sources multiples, en tirant parti des capacités de dimensionnement de la lecture d'Aurora.
-
Long-term sauvegardes : exigences pour créer des sauvegardes consolidées à long terme des données distribuées entre plusieurs instances de MySQL-compatible bases de données.
-
Cross-engine migration : consolidation des données provenant de plusieurs instances RDS pour MySQL ou de serveurs MySQL externes dans un seul cluster Aurora MySQL pendant la migration.
-
Multi-tenant agrégation : consolidation de plusieurs bases de données à locataire unique dans un cluster Aurora mutualisé pour optimiser les coûts et simplifier la gestion.
Conditions préalables pour la réplication multisource
Avant de configurer la réplication multisource sur votre cluster de bases de données Aurora MySQL, remplissez les conditions requises standard pour la réplication des journaux binaires, comme décrit dans. Configuration de la réplication des journaux binaires pour Aurora MySQL Cela inclut l'activation de la journalisation binaire sur chaque source, la conservation des journaux binaires, la création d'un utilisateur de réplication et la création d'une copie ou d'un vidage de chaque source. Pour la réplication multisource, répétez ces étapes pour chaque instance de base de données source.
Outre les prérequis standard, assurez-vous de respecter les exigences suivantes spécifiques à la réplication multisource.
-
Vérifiez la version et la configuration du cluster cible Aurora MySQL
-
Le cluster de base de données Aurora MySQL doit exécuter une version de moteur prise en charge (Aurora MySQL 8.4.8 et versions ultérieures).
-
Activez la validation automatique sur l'instance Aurora MySQL Writer. Définissez le
autocommitparamètre1dans le groupe de paramètres de votre cluster de bases de données.
-
-
Configurer la connectivité réseau pour chaque source
Pour chaque instance de base de données source, assurez-vous que l'instance d'écriture Aurora MySQL peut se connecter à la source sur le port spécifié. Voici les options :
-
Si la source et la cible se trouvent dans le même VPC, configurez le groupe de sécurité sur l'instance de base de données source pour autoriser les connexions entrantes sur le port 3306 (ou votre port personnalisé) à partir du groupe de sécurité du cluster Aurora MySQL.
-
S'ils se trouvent dans des VPC différents, configurez le peering VPC ou utilisez une passerelle de transit. Pour de plus amples informations, veuillez consulter UNE BASE DE DONNÉES cluster dans un VPC auquel accède une instance EC2 dans un autre VPC.
-
Si la source est externe à AWS, assurez-vous que les itinéraires réseau sont disponibles (par exemple, via ou via une connexion VPN).
-
Note
La réplication multisource impliquant plusieurs sources, vous devez vérifier la connectivité à chaque source indépendamment. Assurez-vous que les groupes de sécurité et le routage prennent en charge tous les points de terminaison sources simultanément.
Configuration de canaux de réplication multisources sur des clusters de bases de données Aurora MySQL
La configuration de canaux de réplication multisources sur Aurora MySQL est similaire à la configuration de la réplication à source unique. Pour la réplication multi-sources, vous devez d'abord activer la journalisation binaire sur les instances sources, importer des données depuis les sources vers le cluster Aurora MySQL, puis démarrer la réplication depuis chaque source à l'aide des coordonnées du journal binaire ou du positionnement automatique GTID.
Important
Toutes les procédures stockées de réplication multi-sources doivent être appelées lorsqu'elles sont connectées à l'instance d'écriture du cluster de bases de données Aurora MySQL. En cas de basculement, vous devez vous reconnecter à la nouvelle instance d'écriture.
Étape 1 : importer des données depuis les instances de base de données source vers le cluster Aurora MySQL
Effectuez les étapes suivantes pour chaque instance de base de données source.
-
Déterminez le fichier journal binaire actuel et sa position sur l'instance de base de données source.
Pour MySQL 8.4
SHOW BINARY LOG STATUS;Pour MySQL 8.0 et versions antérieures
SHOW MASTER STATUS;Exemple de sortie :
+----------------------------+----------+ | File | Position | +----------------------------+----------+ | mysql-bin-changelog.000031 | 107 | +----------------------------+----------+Enregistrez les
PositionvaleursFileet. Vous en aurez besoin ultérieurement. -
Copiez la base de données de l'instance de base de données source vers le cluster Aurora MySQL à l'aide de
mysqldump.mysqldump --databasesdatabase_name\ --single-transaction \ --compress \ --order-by-primary \ -uRDS_user_name\ -p'RDS_password' \ --host=source-endpoint.region.rds.amazonaws.com| mysql \ --host=aurora-cluster-endpoint.cluster-xxxxxx.region.rds.amazonaws.com\ --port=3306 \ -uaurora_user_name\ -p'aurora_password'Astuce
Pour les bases de données volumineuses, envisagez d'utiliser AWS DMS ou de créer un instantané et de le restaurer afin de réduire le temps de transfert des données.
-
Une fois l'importation des données terminée, vous pouvez réactiver les écritures sur l'instance de base de données source si vous l'aviez précédemment configurée en lecture seule.
Étape 2 : démarrer la réplication depuis les instances de base de données source vers le cluster Aurora MySQL
Pour chaque instance de base de données source, connectez-vous à l'instance d'écriture du cluster de bases de données Aurora MySQL et exécutez les procédures stockées pour configurer et démarrer la réplication sur un canal.
Option A : Utilisation de la position du fichier journal binaire
CALL mysql.rds_set_external_source_for_channel( 'source-endpoint.region.rds.amazonaws.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.000031', 107, 0, 'channel_1' ); CALL mysql.rds_start_replication_for_channel('channel_1');
Option B : Utilisation du positionnement automatique du GTID
Si vos instances de bases de données source utilisent GTID-based la réplication, vous pouvez utiliser le positionnement automatique au lieu de spécifier les coordonnées binaires du journal :
CALL mysql.rds_set_external_source_with_auto_position_for_channel( 'source-endpoint.region.rds.amazonaws.com', 3306, 'repl_user', 'password', 0, 0, 'channel_1' ); CALL mysql.rds_start_replication_for_channel('channel_1');
Note
Lorsque vous utilisez le positionnement automatique GTID, assurez-vous que les enforce_gtid_consistency paramètres gtid_mode et sont configurés de manière cohérente sur toutes les instances sources et sur le cluster Aurora MySQL.
Répétez ces étapes pour chaque instance de base de données source, en spécifiant un nom de canal unique pour chacune (par exemplechannel_1,channel_2,channel_3).
Utiliser des filtres avec réplication multi-sources
Vous pouvez utiliser des filtres de réplication pour spécifier quelles bases de données et quelles tables sont répliquées sur la réplique multisource Aurora MySQL. Pour plus d'informations sur les filtres de réplication, consultezConfiguration des filtres de réplication avec Aurora MySQL. Ce qui suit décrit les fonctionnalités de filtrage supplémentaires au niveau des canaux disponibles avec la réplication multisource.
Avec la réplication multisource, vous pouvez configurer les filtres de réplication à deux niveaux :
-
Filtres globaux : s'appliquent à toutes les chaînes. Définissez à l'aide du groupe de paramètres du cluster de bases de données Aurora MySQL (par exemple
replicate-do-db,replicate-ignore-db). -
Channel-level filtres : s'applique uniquement à des chaînes spécifiques, en remplaçant les filtres généraux pour cette chaîne.
Comportement clé
-
Vous devez relancer la réplication après avoir modifié les filtres au niveau des canaux.
-
Si aucun filtre spécifique à un canal n'est configuré, Aurora MySQL applique les filtres globaux pour ce canal.
-
Si un filtre est appliqué à la fois globalement et au niveau du canal, seul le filtre au niveau du canal est appliqué pour ce canal.
Surveillez les canaux de réplication multisources
Vous pouvez surveiller des canaux individuels sur une réplique multisource Aurora MySQL à l'aide des méthodes suivantes.
Utilisez SHOW REPLICA STATUS
Connectez-vous à l'instance Writer du cluster de base de données Aurora MySQL et exécutez :
-- View status for all channels SHOW REPLICA STATUS\G -- View status for a specific channel SHOW REPLICA STATUS FOR CHANNEL 'channel_1'\G
Principaux domaines à surveiller :
| Champ | Description |
|---|---|
Replica_IO_Running |
Si le I/O fil de discussion de la chaîne est en cours d'exécution |
Replica_SQL_Running |
Si le thread SQL du canal est en cours d'exécution |
Seconds_Behind_Source |
Délai de réplication en secondes pour le canal |
Last_IO_Error |
Dernière I/O erreur rencontrée sur la chaîne |
Last_SQL_Error |
Dernière erreur SQL rencontrée sur le canal |
Source_Log_File |
Le fichier journal binaire en cours de lecture depuis la source |
Exec_Source_Log_Pos |
La position dans le journal binaire que le thread SQL a appliquée |
Utiliser des CloudWatch métriques
Surveillez la ReplicationChannelLag CloudWatch métrique pour chaque canal de réplication. Cette métrique fournit des données de latence de réplication par canal sur une période de 60 secondes et est disponible pendant 15 jours. Pour localiser le décalage du canal de réplication, utilisez l'identifiant d'instance de cluster de base de données Aurora et le nom du canal de réplication comme dimensions. Vous pouvez configurer CloudWatch des alarmes pour recevoir une notification lorsque le décalage dépasse un seuil spécifique. Pour de plus amples informations, veuillez consulter Surveillance des métriques d’un cluster de bases de données Amazon Aurora.
Gestion des procédures stockées de réplication multi-sources
Pour plus d'informations sur l'utilisation de procédures stockées pour configurer et gérer vos canaux de réplication multisources, consultezGestion de la réplication multisource.
Considérations et pratiques exemplaires
Pour des recommandations générales d'optimisation de la réplication, notamment le format de journal binaire, les outils de travail parallèles et le Binlog amélioré, consultezOptimisation de la réplication des journaux binaires pour Aurora MySQL. Les considérations suivantes sont spécifiques à la réplication multisource.
Planification des ressources
Lors de l'exécution de plusieurs canaux de réplication, le nombre total de fils de réplication alloués à la réplique est le suivant : (replica_parallel_workers+ 1 thread coordinateur) × nombre de canaux. Par exemple, avec la replica_parallel_workers valeur par défaut de 4 et 10 canaux, Aurora MySQL alloue 50 threads de réplication. Envisagez d'utiliser une classe d'instance de base de données plus importante (telle que db.r6g.2xlarge ou supérieure) en fonction de votre débit source total et du nombre de canaux. Chaque canal reçoit le même nombre de travailleurs parallèles. MySQL ne prend pas en charge la définition de différents nombres de travailleurs parallèles par canal.
Éviter les conflits
La réplication multi-sources MySQL ne permet pas de détecter ou de résoudre les conflits. Vous devez vous assurer que les modifications provenant de différentes sources ne sont pas contradictoires. Les stratégies courantes incluent :
-
Chaque source écrit dans une base de données ou un ensemble de tables différent.
-
Utilisez des filtres de réplication (
replicate-do-db) pour vous assurer que chaque canal ne réplique que les bases de données dont il est responsable. -
Utilisez
replicate-rewrite-dbcette option pour remapper un nom de schéma depuis la source vers un autre nom sur la réplique, si nécessaire.
Pour éviter les conflits d'écriture provenant d'applications se connectant directement à la réplique multisource, activez le mode lecture seule sur le cluster Aurora MySQL : CALL mysql.rds_set_read_only(1);
Meilleures pratiques opérationnelles
-
Un canal à la fois : effectuez les opérations de gestion (telles que les modifications de configuration, les erreurs de saut ou starting/stopping la réplication) sur un canal à la fois. Évitez de modifier simultanément plusieurs canaux à partir de différentes connexions.
-
Surveiller le décalage par canal : surveillez le décalage de réplication pour chaque canal à l'aide de la
ReplicationChannelLagCloudWatch métrique. -
Gestion du basculement à la source : si une instance de base de données source bascule (par exemple, un Multi-AZ basculement Amazon RDS), le canal de réplication peut s'arrêter avec une I/O erreur. Une fois que la source est à nouveau disponible :
-
Appelez
mysql.rds_start_replication_for_channelpour reprendre la réplication. -
Si l'erreur 1236 se produit (fichier journal introuvable), appelez
mysql.rds_next_source_log_for_channelpour passer au fichier journal binaire suivant.
-
-
Basculement de l'enregistreur Aurora : si l'instance de l'enregistreur Aurora MySQL bascule vers un lecteur, les configurations des canaux de réplication sont préservées sur le stockage partagé du cluster. Une fois le basculement terminé, les threads de réplication sont automatiquement redémarrés sur la nouvelle instance d'écriture.
Limitations
Les limites suivantes sont spécifiques à la réplication multisource Aurora MySQL. Pour les limites générales de la réplication multi-sources MySQL (telles que la configuration de travail parallèle par canal), consultez MySQL Multi-Source Replication
-
Multi-source la réplication n'est prise en charge que sur Aurora MySQL version 8.4.8 et supérieure.
-
Aurora MySQL prend en charge la configuration d'un maximum de 15 canaux pour une réplique multisource.
Résolution des problèmes
Pour obtenir des informations générales sur la résolution des problèmes de réplication, consultez Problèmes de réplication Amazon Aurora MySQL. Vous trouverez ci-dessous des notes de dépannage spécifiques à la réplication multisource.
La configuration des canaux n'est pas restaurée après la restauration du snapshot
Les instantanés de clusters de bases de données n'incluent pas les configurations de canaux multisources. Après avoir effectué une restauration à partir d'un instantané :
-
Reconfigurez chaque canal à l'aide de
mysql.rds_set_external_source_for_channeloumysql.rds_set_external_source_with_auto_position_for_channel. -
Si vous utilisez le positionnement automatique GTID, la réplique peut automatiquement reprendre là où elle s'était arrêtée.
-
Si vous utilisez des positions de fichiers journaux binaires, déterminez la position actuelle en comparant le journal binaire de la source à la dernière transaction appliquée sur le cluster restauré.
Le délai de réplication augmente sur un ou plusieurs canaux
-
Vérifiez le processeur et les I/O métriques de l'instance de rédaction. Si l'utilisation des ressources est élevée, augmentez la classe d'instance.
-
Envisagez
replica_parallel_workersd'augmenter pour améliorer le débit des threads SQL. -
Vérifiez qu'aucune transaction de longue durée ou opération DDL sur le canal n'est susceptible de bloquer le thread SQL.
-
Vérifiez l'absence de configurations de filtre conflictuelles susceptibles de provoquer le traitement de la réplication, puis ignorez un grand nombre d'événements.
Exemple : configuration multisource complète avec trois sources
L'exemple suivant montre la configuration d'un cluster de bases de données Aurora MySQL en tant que réplique multisource de trois instances sources RDS pour MySQL.
Étape 1 : enregistrer les positions du journal binaire sur chaque source
Connectez-vous à chaque source et enregistrez les coordonnées du log binaire :
-- On source 1 (orders-db.xxxxx.us-east-1.rds.amazonaws.com) SHOW BINARY LOG STATUS; -- Result: mysql-bin-changelog.000045, Position: 3892 -- On source 2 (inventory-db.xxxxx.us-east-1.rds.amazonaws.com) SHOW BINARY LOG STATUS; -- Result: mysql-bin-changelog.000012, Position: 1567 -- On source 3 (analytics-db.xxxxx.us-east-1.rds.amazonaws.com) SHOW BINARY LOG STATUS; -- Result: mysql-bin-changelog.000078, Position: 9421
Étape 2 : Importer des données depuis chaque source
# Import from source 1 mysqldump --databases orders_db --single-transaction --compress \ -u admin -p --host=orders-db.xxxxx.us-east-1.rds.amazonaws.com | \ mysql --host=my-aurora-cluster.cluster-xxxxx.us-east-1.rds.amazonaws.com -u admin -p # Import from source 2 mysqldump --databases inventory_db --single-transaction --compress \ -u admin -p --host=inventory-db.xxxxx.us-east-1.rds.amazonaws.com | \ mysql --host=my-aurora-cluster.cluster-xxxxx.us-east-1.rds.amazonaws.com -u admin -p # Import from source 3 mysqldump --databases analytics_db --single-transaction --compress \ -u admin -p --host=analytics-db.xxxxx.us-east-1.rds.amazonaws.com | \ mysql --host=my-aurora-cluster.cluster-xxxxx.us-east-1.rds.amazonaws.com -u admin -p
Étape 3 : Configuration et démarrage des canaux de réplication
Connectez-vous à l'instance Aurora MySQL Writer :
-- Configure channel for source 1 (orders) CALL mysql.rds_set_external_source_for_channel( 'orders-db.xxxxx.us-east-1.rds.amazonaws.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.000045', 3892, 0, 'orders_channel' ); -- Configure channel for source 2 (inventory) CALL mysql.rds_set_external_source_for_channel( 'inventory-db.xxxxx.us-east-1.rds.amazonaws.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.000012', 1567, 0, 'inventory_channel' ); -- Configure channel for source 3 (analytics) CALL mysql.rds_set_external_source_for_channel( 'analytics-db.xxxxx.us-east-1.rds.amazonaws.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.000078', 9421, 0, 'analytics_channel' ); -- Start all channels CALL mysql.rds_start_replication_for_channel('orders_channel'); CALL mysql.rds_start_replication_for_channel('inventory_channel'); CALL mysql.rds_start_replication_for_channel('analytics_channel');
Étape 4 : vérifier l'état de la réplication
SHOW REPLICA STATUS\G
Vérifiez que pour chaque canal :
-
Replica_IO_Running: Yes -
Replica_SQL_Running: Yes -
Seconds_Behind_Source: 0(ou une valeur faible)
Ressources connexes
-
Multi-Source Réplication MySQL
— Documentation MySQL -
Réplication entre Aurora et MySQL ou entre Aurora et un autre cluster de bases de données Aurora (réplication de journaux binaires)— Guide de l'utilisateur d'Aurora
-
Optimisation de la réplication des journaux binaires pour Aurora MySQL— Guide de l'utilisateur d'Aurora
-
Configuration des filtres de réplication avec Aurora MySQL— Guide de l'utilisateur d'Aurora
-
Utilisation de GTID-based la réplication— Guide de l'utilisateur d'Aurora