Configuration d'une réplication de position de fichier journal binaire avec une instance source externe - Amazon Relational Database Service

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.

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 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 les paramètres binlog_format. Nous vous recommandons d'utiliser le paramètre par défaut pour binlog_format, à savoir 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.

Pour plus d'informations sur la configuration du paramètre binlog_format, consultez la section Configuration de la journalisation binaire MySQL. Pour de plus amples informations sur les implications des différents types de réplication MySQL, veuillez consulter la section Advantages and Disadvantages of Statement-Based and Row-Based Replication de la documentation MySQL.

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 et restauration d'une instance de base de données Amazon RDS.

Pour configurer une réplication de position de fichier journal binaire avec une instance source externe

  1. Rendez l'instance MySQL ou MariaDB source accessible en lecture seule.

    mysql> FLUSH TABLES WITH READ LOCK; mysql> SET GLOBAL read_only = ON;
  2. Exécutez la commande SHOW MASTER STATUS sur 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 ------------------------------------
  3. 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 instance de base de données MariaDB ou MySQL Amazon RDS avec un temps d'arrêt réduit.

    Pour Linux, macOS ou Unix :

    mysqldump --databases database_name \ --single-transaction \ --compress \ --order-by-primary \ -u local_user \ -plocal_password | mysql \ --host=hostname \ --port=3306 \ -u RDS_user_name \ -pRDS_password

    Pour Windows :

    mysqldump --databases database_name ^ --single-transaction ^ --compress ^ --order-by-primary ^ -u local_user ^ -plocal_password | mysql ^ --host=hostname ^ --port=3306 ^ -u RDS_user_name ^ -pRDS_password
    Note

    Veillez bien à ce qu'il n'y ait pas d'espace entre l'option -p et 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), --port et -p dans la commande mysql. Le nom d'hôte est le nom DNS du point de terminaison de l'instance de base de données Amazon RDS : par exemple myinstance.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.

  4. 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.

  5. 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.

    host db_instance_endpoint

    Le nom d'hôte est le nom DNS du point de terminaison de l'instance de base de données Amazon RDS.

  6. 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';
  7. Pour l'instance externe, attribuez les privilèges REPLICATION CLIENT et REPLICATION SLAVE à votre utilisateur de réplication. Par exemple, pour accorder les privilèges REPLICATION CLIENT et REPLICATION SLAVE sur 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';
  8. 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_master. Utilisez le nom et la position du fichier journal maître que vous avez déterminés à l'étape 2. Voici un exemple.

    CALL mysql.rds_set_external_master ('mymasterserver.mydomain.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.000031', 107, 0);
    Note

    Sur RDS for MySQL, vous pouvez décider d'utiliser la réplication retardée en exécutant à la place la procédure stockée mysql.rds_set_external_master_with_delay. 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.

  9. 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;