Configuration d’une réplication de position de fichier journal binaire avec une instance source externe
Vous pouvez configurer la réplication entre une instance de base de données RDS for MySQL ou MariaDB et une instance MySQL ou MariaDB externe à Amazon RDS en utilisant la réplication de fichiers journaux binaires.
Rubriques
Avant de commencer
Vous pouvez configurer la réplication en utilisant la position du fichier journal binaire des transactions répliquées.
Les autorisations requises pour démarrer la réplication sur une instance de base de données Amazon RDS sont restreintes et ne sont pas disponibles pour votre utilisateur principal Amazon RDS. Pour cette raison, assurez-vous d’utiliser les commandes Amazon RDS mysql.rds_set_external_master (RDS for MariaDB et RDS for MySQL, versions majeures 8.0 et antérieures) ou mysql.rds_set_external_source (RDS for MySQL, versions majeures 8.4 et ultérieures), et mysql.rds_start_replication pour configurer la réplication entre votre base de données active et votre base de données Amazon RDS.
Pour définir le format de journalisation binaire pour une base de données MySQL ou MariaDB, mettez à jour le paramètre binlog_format. Si votre instance de base de données utilise le groupe de paramètres d’instance de base de données par défaut, créez un nouveau groupe de paramètres de base de données pour modifier le paramètre binlog_format. Dans MariaDB, MySQL 8.0 et versions antérieures, la valeur par défaut de binlog_format est MIXED. Cependant, vous pouvez également définir binlog_format sur ROW ou STATEMENT si vous avez besoin d’un format de journaux binaires (binlog) spécifique. Redémarrez votre instance de base de données pour que les modifications prennent effet. Dans MySQL 8.4 et versions ultérieures, la valeur par défaut de binlog_format est ROW.
Pour plus d’informations sur la configuration du paramètre binlog_format, consultez Configuration de RDS for MySQL pour la journalisation des bases de données mono-AZ. Pour plus d’informations sur les implications des différents types de réplication MySQL, consultez Advantages and Disadvantages of Statement-Based and Row-Based Replication
Configuration d’une réplication de position de fichier journal binaire avec une instance source externe
Suivez ces instructions lorsque vous configurez une instance source externe et un réplica sur Amazon RDS :
Surveillez les événements de basculement de l'instance de base de données Amazon RDS qui constitue votre réplica. En cas de basculement, l'instance de base de données qui est votre réplica peut alors être recréée sur un nouvel hôte avec une autre adresse réseau. Pour plus d'informations sur la surveillance des événements de basculement, consultez Utiliser la notification d'événements d'Amazon RDS.
Tenez à jour les journaux binaires sur votre instance source jusqu’à ce que vous ayez vérifié qu’ils ont été appliqués au réplica. Cette maintenance garantit que vous pouvez restaurer votre instance source en cas de défaillance.
Activez les sauvegardes automatiques sur votre instance de base de données Amazon RDS. L'activation des sauvegardes automatiques garantit que vous pouvez restaurer votre réplica sur un instant donné si vous devez resynchroniser votre instance source et votre réplica. Pour plus d'informations sur les sauvegardes et la restauration à un instant dans le passé, consultez Sauvegarde, restauration et exportation de données.
Pour configurer une réplication de position de fichier journal binaire avec une instance source externe
-
Rendez l'instance MySQL ou MariaDB source accessible en lecture seule.
mysql> FLUSH TABLES WITH READ LOCK; mysql> SET GLOBAL read_only = ON; -
Exécutez la commande
SHOW MASTER STATUSsur l'instance source MySQL ou MariaDB pour déterminer l'emplacement du journal binaire.Vous obtenez une sortie similaire à ce qui suit.
File Position ------------------------------------ mysql-bin-changelog.000031 107 ------------------------------------ -
Copiez la base de données de l'instance externe vers l'instance de base de données Amazon RDS à l'aide de
mysqldump. Pour les bases de données très volumineuses, il se peut que vous vouliez utiliser la procédure décrite dans Importation de données vers une base de données Amazon RDS for MySQL avec une durée d’indisponibilité réduite.Pour Linux, macOS ou Unix :
mysqldump --databasesdatabase_name\ --single-transaction \ --compress \ --order-by-primary \ -ulocal_user\ -plocal_password| mysql \ --host=hostname \ --port=3306 \ -uRDS_user_name\ -pRDS_passwordPour Windows :
mysqldump --databasesdatabase_name^ --single-transaction ^ --compress ^ --order-by-primary ^ -ulocal_user^ -plocal_password| mysql ^ --host=hostname ^ --port=3306 ^ -uRDS_user_name^ -pRDS_passwordNote
Veillez bien à ce qu’il n’y ait pas d’espace entre l’option
-pet le mot de passe saisi.Pour spécifier le nom d’hôte, le nom d’utilisateur, le port et le mot de passe afin de vous connecter à votre instance de base de données Amazon RDS, utilisez les options
--host,--user (-u),--portet-pdans la commandemysql. Le nom d'hôte est le nom DNS du point de terminaison de l'instance de base de données Amazon RDS : par exemplemyinstance.123456789012.us-east-1.rds.amazonaws.com. Vous pouvez trouver la valeur du point de terminaison dans la AWS Management Console au niveau des détails de l’instance. -
Rendez l'instance source MySQL ou MariaDB à nouveau accessible en écriture.
mysql> SET GLOBAL read_only = OFF; mysql> UNLOCK TABLES;Pour plus d’informations sur la création de sauvegardes en vue de les utiliser avec la réplication, consultez la documentation MySQL
. -
Dans la AWS Management Console, ajoutez l'adresse IP du serveur qui héberge la base de données externe au groupe de sécurité du cloud privé virtuel (VPC) pour l'instance de base de données Amazon RDS. Pour plus d’informations sur la modification d’un groupe de sécurité de VPC, consultez Groupes de sécurité pour votre VPC dans le Guide de l’utilisateur Amazon Virtual Private Cloud.
L'adresse IP peut changer lorsque les conditions suivantes sont réunies :
-
Vous utilisez une adresse IP publique pour la communication entre l'instance source externe et l'instance de base de données.
-
L'instance source externe a été arrêtée et redémarrée.
Si ces conditions sont réunies, vérifiez l'adresse IP avant de l'ajouter.
Vous devrez peut-être aussi configurer votre réseau local pour autoriser les connexions à partir de l'adresse IP de votre instance de base de données Amazon RDS. Cela permet la communication entre votre réseau local et votre instance MySQL ou MariaDB externe. Pour obtenir l'adresse IP de l'instance de base de données Amazon RDS, utilisez la commande
host.hostdb_instance_endpointLe nom d'hôte est le nom DNS du point de terminaison de l'instance de base de données Amazon RDS.
-
-
En utilisant le client de votre choix, connectez-vous à l’instance externe et créez un utilisateur à utiliser pour la réplication. Utilisez ce compte exclusivement pour la réplication et limitez-le à votre domaine pour améliorer la sécurité. Voici un exemple.
CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'password';Note
Spécifiez un mot de passe autre que celui indiqué ici, en tant que bonne pratique de sécurité.
-
Pour l’instance externe, attribuez les privilèges
REPLICATION CLIENTetREPLICATION SLAVEà votre utilisateur de réplication. Par exemple, pour accorder les privilègesREPLICATION CLIENTetREPLICATION SLAVEsur toutes les bases de données à l'utilisateur «repl_user» de votre domaine, émettez la commande suivante.GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com'; -
Transformez l'instance de base de données Amazon RDS en réplica. Pour cela, connectez-vous d’abord à l’instance de base de données Amazon RDS en tant qu’utilisateur principal. Identifiez ensuite la base de données MySQL ou MariaDB externe comme instance source à l’aide de la commande mysql.rds_set_external_source (RDS for MySQL, versions majeures 8.4 et ultérieures) ou mysql.rds_set_external_master (RDS for MariaDB et RDS for MySQL, versions majeures 8.0 et antérieures). Utilisez le nom et la position du fichier journal maître que vous avez déterminés à l’étape 2. Les commandes suivantes sont des exemples.
MySQL 8.4
CALL mysql.rds_set_external_source ('mysourceserver.mydomain.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.000031',107,1);MariaDB et MySQL 8.0 et 5.7
CALL mysql.rds_set_external_master ('mymasterserver.mydomain.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.000031',107,1);Note
Sur RDS for MySQL, vous pouvez décider d’utiliser la réplication différée en exécutant à la place la procédure stockée mysql.rds_set_external_source_with_delay (RDS for MySQL, versions majeures 8.4 et ultérieures) ou mysql.rds_set_external_master_with_delay (RDS for MariaDB et RDS for MySQL, versions majeures 8.0 et antérieures). Sur RDS for MySQL, une des raisons d’utiliser la réplication différée est d’activer la reprise après sinistre avec la procédure stockée mysql.rds_start_replication_until. Actuellement, RDS for MariaDB prend en charge la réplication différée, mais ne prend pas en charge la procédure
mysql.rds_start_replication_until. -
Sur l’instance de base de données Amazon RDS, émettez la commande mysql.rds_start_replication pour démarrer la réplication.
CALL mysql.rds_start_replication;