

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 d’une réplication de position de fichier journal binaire avec une instance source externe
<a name="MySQL.Procedural.Importing.External.Repl"></a>

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.

**Topics**
+ [Avant de commencer](#MySQL.Procedural.Importing.External.Repl.BeforeYouBegin)
+ [Configuration d’une réplication de position de fichier journal binaire avec une instance source externe](#MySQL.Procedural.Importing.External.Repl.Procedure)

## Avant de commencer
<a name="MySQL.Procedural.Importing.External.Repl.BeforeYouBegin"></a>

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\$1set\$1external\$1master (RDS for MariaDB et RDS for MySQL, versions majeures 8.0 et antérieures)](mysql-stored-proc-replicating.md#mysql_rds_set_external_master) ou [mysql.rds\$1set\$1external\$1source (RDS for MySQL, versions majeures 8.4 et ultérieures)](mysql-stored-proc-replicating.md#mysql_rds_set_external_source), et [mysql.rds\$1start\$1replication](mysql-stored-proc-replicating.md#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 d' RDS pour la journalisation binaire MySQL pour les bases de données mono-AZ](USER_LogAccess.MySQL.BinaryFormat.md). 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](https://dev.mysql.com/doc/refman/8.0/en/replication-sbr-rbr.html) de la documentation MySQL.

## Configuration d’une réplication de position de fichier journal binaire avec une instance source externe
<a name="MySQL.Procedural.Importing.External.Repl.Procedure"></a>

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](USER_Events.md).
+ 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 les point-in-time restaurations, consultez[Sauvegarde, restauration et exportation de données](CHAP_CommonTasks.BackupRestore.md).

**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;
   ```

1. 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   
   ------------------------------------
   ```

1. 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](mysql-importing-data-reduced-downtime.md). 

   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.

1. 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](https://dev.mysql.com/doc/refman/8.0/en/replication-solutions-backups-read-only.html).

1. Dans le 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](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html) 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.

1. 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é.

1. 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';
   ```

1. 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\$1set\$1external\$1source (RDS for MySQL, versions majeures 8.4 et ultérieures)](mysql-stored-proc-replicating.md#mysql_rds_set_external_source) ou [mysql.rds\$1set\$1external\$1master (RDS for MariaDB et RDS for MySQL, versions majeures 8.0 et antérieures)](mysql-stored-proc-replicating.md#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. 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\$1set\$1external\$1source\$1with\$1delay (RDS for MySQL, versions majeures 8.4 et ultérieures)](mysql-stored-proc-replicating.md#mysql_rds_set_external_source_with_delay) ou [mysql.rds\$1set\$1external\$1master\$1with\$1delay (RDS for MariaDB et RDS for MySQL, versions majeures 8.0 et antérieures)](mysql-stored-proc-replicating.md#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-stored-proc-replicating.md#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`.

1. Sur l’instance de base de données Amazon RDS, émettez la commande [mysql.rds\$1start\$1replication](mysql-stored-proc-replicating.md#mysql_rds_start_replication) pour démarrer la réplication.

   ```
   CALL mysql.rds_start_replication;
   ```