Configuration, démarrage et arrêt de la réplication des journaux binaires (binlog) - Amazon Relational Database Service

Configuration, démarrage et arrêt de la réplication des journaux binaires (binlog)

Les procédures stockées suivantes contrôlent la façon dont les transactions sont répliquées à partir d'une base de données externe dans RDS pour MySQL, ou à partir de RDS pour MySQL vers une base de données externe.

Lorsque vous utilisez ces procédures stockées pour gérer la réplication avec un utilisateur de réplication configuré avec caching_sha2_password, vous devez configurer le protocole TLS en spécifiant SOURCE_SSL=1. caching_sha2_password est le plugin d’authentification par défaut pour RDS for MySQL 8.4. Pour plus d’informations, consultez Chiffrement avec SSL/TLS.

Pour en savoir plus sur la configuration, l’utilisation et la gestion de réplicas en lecture, consultez Utilisation de réplicas en lecture MySQL.

mysql.rds_next_master_log (RDS for MariaDB et RDS for MySQL, versions majeures 8.0 et antérieures)

Modifie la position du journal de l'instance de base de données source au début du journal binaire suivant sur l'instance de base de données source. N'utilisez cette procédure que si vous recevez une erreur 1236 d'I/O de réplication sur un réplica en lecture.

Syntaxe

CALL mysql.rds_next_master_log( curr_master_log );

Paramètres

curr_master_log

Index du fichier journal maître actif. Par exemple, si le fichier en cours se nomme mysql-bin-changelog.012345, l'index est 12345. Pour déterminer le nom du fichier journal maître actif, exécutez la commande SHOW REPLICA STATUS et affichez le champ Master_Log_File.

Notes d’utilisation

L'utilisateur principal doit exécuter la procédure mysql.rds_next_master_log.

Avertissement

Appelez mysql.rds_next_master_log uniquement si la réplication échoue après le basculement d’une instance de base de données multi-AZ qui est la source de la réplication, et que le champ Last_IO_Errno de SHOW REPLICA STATUS signale une erreur d’I/O 1236.

L’appel de mysql.rds_next_master_log peut se traduire par une perte de données dans le réplica en lecture si les transactions de l’instance source n’ont pas été écrites dans le journal binaire sur disque avant que l’événement de basculement se produise. Vous pouvez réduire la probabilité que cela se produise en définissant les paramètres d’instance source sync_binlog et innodb_support_xa sur 1, même si cela peut compromettre les performances. Pour plus d’informations, consultez Résolution d'un problème de réplica en lecture MySQL.

Exemples

Supposons que la réplication échoue sur un réplica en lecture RDS pour MySQL. L’exécution de SHOW REPLICA STATUS\G sur le réplica en lecture renvoie le résultat suivant :

*************************** 1. row *************************** Replica_IO_State: Source_Host: myhost.XXXXXXXXXXXXXXX.rr-rrrr-1.rds.amazonaws.com Source_User: MasterUser Source_Port: 3306 Connect_Retry: 10 Source_Log_File: mysql-bin-changelog.012345 Read_Source_Log_Pos: 1219393 Relay_Log_File: relaylog.012340 Relay_Log_Pos: 30223388 Relay_Source_Log_File: mysql-bin-changelog.012345 Replica_IO_Running: No Replica_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Source_Log_Pos: 30223232 Relay_Log_Space: 5248928866 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Source_SSL_Allowed: No Source_SSL_CA_File: Source_SSL_CA_Path: Source_SSL_Cert: Source_SSL_Cipher: Source_SSL_Key: Seconds_Behind_Master: NULL Source_SSL_Verify_Server_Cert: No Last_IO_Errno: 1236 Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Client requested master to start replication from impossible position; the first event 'mysql-bin-changelog.013406' at 1219393, the last event read from '/rdsdbdata/log/binlog/mysql-bin-changelog.012345' at 4, the last byte read from '/rdsdbdata/log/binlog/mysql-bin-changelog.012345' at 4.' Last_SQL_Errno: 0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Source_Server_Id: 67285976

Le champ Last_IO_Errno montre que l'instance reçoit une erreur 1236 d'I/O. Le champ Master_Log_File montre que le nom du fichier est mysql-bin-changelog.012345, ce qui signifie que l'index du fichier journal est 12345. Pour résoudre l’erreur, vous pouvez appeler mysql.rds_next_master_log avec le paramètre suivant :

CALL mysql.rds_next_master_log(12345);

mysql.rds_next_source_log (RDS for MySQL, versions majeures 8.4 et ultérieures)

Modifie la position du journal de l'instance de base de données source au début du journal binaire suivant sur l'instance de base de données source. N'utilisez cette procédure que si vous recevez une erreur 1236 d'I/O de réplication sur un réplica en lecture.

Syntaxe

CALL mysql.rds_next_source_log( curr_source_log );

Paramètres

curr_source_log

Index du fichier journal source actuel. Par exemple, si le fichier en cours se nomme mysql-bin-changelog.012345, l’index est 12345. Pour déterminer le nom du fichier journal actuel, exécutez la commande SHOW REPLICA STATUS et affichez le champ Source_Log_File.

Notes d’utilisation

L’utilisateur administratif doit exécuter la procédure mysql.rds_next_source_log.

Avertissement

Appelez mysql.rds_next_source_log uniquement si la réplication échoue après le basculement d’une instance de base de données multi-AZ qui est la source de la réplication, et que le champ Last_IO_Errno de SHOW REPLICA STATUS signale une erreur d’I/O 1236.

L’appel de mysql.rds_next_source_log peut se traduire par une perte de données dans le réplica en lecture si les transactions de l’instance source n’ont pas été écrites dans le journal binaire sur disque avant que l’événement de basculement se produise. Vous pouvez réduire la probabilité que cela se produise en définissant les paramètres d’instance source sync_binlog et innodb_support_xa sur 1, même si cela peut compromettre les performances. Pour plus d’informations, consultez Résolution d'un problème de réplica en lecture MySQL.

Exemples

Supposons que la réplication échoue sur un réplica en lecture RDS pour MySQL. L’exécution de SHOW REPLICA STATUS\G sur le réplica en lecture renvoie le résultat suivant :

*************************** 1. row *************************** Replica_IO_State: Source_Host: myhost.XXXXXXXXXXXXXXX.rr-rrrr-1.rds.amazonaws.com Source_User: MasterUser Source_Port: 3306 Connect_Retry: 10 Source_Log_File: mysql-bin-changelog.012345 Read_Source_Log_Pos: 1219393 Relay_Log_File: relaylog.012340 Relay_Log_Pos: 30223388 Relay_Source_Log_File: mysql-bin-changelog.012345 Replica_IO_Running: No Replica_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Source_Log_Pos: 30223232 Relay_Log_Space: 5248928866 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Source_SSL_Allowed: No Source_SSL_CA_File: Source_SSL_CA_Path: Source_SSL_Cert: Source_SSL_Cipher: Source_SSL_Key: Seconds_Behind_Source: NULL Source_SSL_Verify_Server_Cert: No Last_IO_Errno: 1236 Last_IO_Error: Got fatal error 1236 from source when reading data from binary log: 'Client requested source to start replication from impossible position; the first event 'mysql-bin-changelog.013406' at 1219393, the last event read from '/rdsdbdata/log/binlog/mysql-bin-changelog.012345' at 4, the last byte read from '/rdsdbdata/log/binlog/mysql-bin-changelog.012345' at 4.' Last_SQL_Errno: 0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Source_Server_Id: 67285976

Le champ Last_IO_Errno montre que l'instance reçoit une erreur 1236 d'I/O. Le champ Source_Log_File montre que le nom du fichier est mysql-bin-changelog.012345, ce qui signifie que l'index du fichier journal est 12345. Pour résoudre l’erreur, vous pouvez appeler mysql.rds_next_source_log avec le paramètre suivant :

CALL mysql.rds_next_source_log(12345);

mysql.rds_reset_external_master (RDS for MariaDB et RDS for MySQL, versions majeures 8.0 et antérieures)

Reconfigure une instance de base de données RDS pour MySQL comme n'étant plus un réplica en lecture d'une instance de MySQL s'exécutant à l'extérieur d'Amazon RDS.

Important

Pour exécuter cette procédure, autocommit doit être activé. Pour l'activer, définissez le paramètre autocommit sur 1. Pour plus d’informations sur la modification des paramètres d’instance, consultez Modification de paramètres dans un groupe de paramètres de base de données dans Amazon RDS.

Syntaxe

CALL mysql.rds_reset_external_master;

Notes d’utilisation

L'utilisateur principal doit exécuter la procédure mysql.rds_reset_external_master. Cette procédure doit être exécutée sur l'instance de base de données MySQL à supprimer comme réplica en lecture d'une instance MySQL s'exécutant en dehors d'Amazon RDS.

Note

Nous vous conseillons d'utiliser des réplicas en lecture pour gérer la réplication entre deux instances de base de données Amazon RDS dès que possible. Dans ce cas, nous vous conseillons d'utiliser seulement cette procédure et d'autres procédures stockées liées à la réplication. Ces pratiques permettent d'obtenir des topologies de réplication plus complexes entre des instances de base de données Amazon RDS. Nous proposons ces procédures stockées avant tout pour permettre la réplication avec les instances MySQL s'exécutant en dehors d'Amazon RDS. Pour plus d’informations sur la gestion de la réplication entre les instances de base de données Amazon RDS, consultez Utilisation des réplicas en lecture d’instance de base de données.

Pour plus d’informations sur l’utilisation de la réplication pour importer des données à partir d’une instance de MySQL s’exécutant à l’extérieur de Amazon RDS, consultez Configuration d’une réplication de position de fichier journal binaire avec une instance source externe.

mysql.rds_reset_external_source (RDS for MySQL, versions majeures 8.4 et ultérieures)

Reconfigure une instance de base de données RDS pour MySQL comme n'étant plus un réplica en lecture d'une instance de MySQL s'exécutant à l'extérieur d'Amazon RDS.

Important

Pour exécuter cette procédure, autocommit doit être activé. Pour l'activer, définissez le paramètre autocommit sur 1. Pour plus d’informations sur la modification des paramètres d’instance, consultez Modification de paramètres dans un groupe de paramètres de base de données dans Amazon RDS.

Syntaxe

CALL mysql.rds_reset_external_source;

Notes d’utilisation

L’utilisateur administratif doit exécuter la procédure mysql.rds_reset_external_source. Cette procédure doit être exécutée sur l’instance de base de données MySQL à supprimer comme réplica en lecture d’une instance MySQL s’exécutant en dehors d’Amazon RDS.

Note

Nous vous conseillons d’utiliser des réplicas en lecture pour gérer la réplication entre deux instances de base de données Amazon RDS dès que possible. Dans ce cas, nous vous conseillons d'utiliser seulement cette procédure et d'autres procédures stockées liées à la réplication. Ces pratiques permettent d'obtenir des topologies de réplication plus complexes entre des instances de base de données Amazon RDS. Nous proposons ces procédures stockées avant tout pour permettre la réplication avec les instances MySQL s'exécutant en dehors d'Amazon RDS.

Pour plus d'informations sur la gestion de la réplication entre les instances de base de données Amazon RDS, consultez Utilisation des réplicas en lecture d’instance de base de données. Pour plus d’informations sur l’utilisation de la réplication pour importer des données à partir d’une instance de MySQL s’exécutant à l’extérieur de Amazon RDS, consultez Configuration d’une réplication de position de fichier journal binaire avec une instance source externe.

mysql.rds_set_external_master (RDS for MariaDB et RDS for MySQL, versions majeures 8.0 et antérieures)

Configure une instance de base de données RDS pour MySQL comme réplica en lecture d'une instance de MySQL s'exécutant à l'extérieur d'Amazon RDS.

Important

Pour exécuter cette procédure, autocommit doit être activé. Pour l'activer, définissez le paramètre autocommit sur 1. Pour plus d’informations sur la modification des paramètres d’instance, consultez Modification de paramètres dans un groupe de paramètres de base de données dans Amazon RDS.

Note

Vous pouvez utiliser la procédure stockée mysql.rds_set_external_master_with_delay (RDS for MariaDB et RDS for MySQL, versions majeures 8.0 et antérieures) pour configurer une instance de base de données source externe et une réplication différée.

Syntaxe

CALL mysql.rds_set_external_master ( host_name , host_port , replication_user_name , replication_user_password , mysql_binary_log_file_name , mysql_binary_log_file_location , ssl_encryption );

Paramètres

host_name

Nom d'hôte ou adresse IP de l'instance MySQL s'exécutant à l'extérieur d'Amazon RDS pour devenir l'instance de base de données source.

host_port

Port utilisé par l'instance MySQL s'exécutant à l'extérieur d'Amazon RDS et à configurer comme instance de base de données source. Si votre configuration réseau inclut une réplication de port Secure Shell (SSH) qui convertit le numéro de port, spécifiez le numéro de port qui est exposé par SSH.

replication_user_name

ID d'un utilisateur disposant des autorisations REPLICATION CLIENT et REPLICATION SLAVE sur l'instance MySQL s'exécutant à l'extérieur d'Amazon RDS. Nous vous recommandons de fournir un compte qui soit utilisé uniquement pour la réplication avec l'instance externe.

replication_user_password

Mot de passe de l'ID utilisateur spécifié dans replication_user_name.

mysql_binary_log_file_name

Nom du journal binaire sur l'instance de base de données source qui contient les informations de réplication.

mysql_binary_log_file_location

Emplacement dans le journal binaire mysql_binary_log_file_name à partir duquel la réplication commence à lire les informations de réplication.

Vous pouvez déterminer le nom et l'emplacement du fichier journal binaire en exécutant SHOW MASTER STATUS sur l'instance de base de données source.

ssl_encryption

Valeur indiquant si le chiffrement Secure Socket Layer (SSL) est utilisé sur la connexion de réplication. La valeur 1 spécifie d'utiliser le chiffrement SSL, et la valeur 0 de ne pas l'utiliser. La valeur par défaut est 0.

Note

L'option MASTER_SSL_VERIFY_SERVER_CERT n'est pas prise en charge. Cette option est définie sur 0, ce qui signifie que la connexion est chiffrée, mais que les certificats ne sont pas vérifiés.

Notes d’utilisation

L'utilisateur principal doit exécuter la procédure mysql.rds_set_external_master. Cette procédure doit être exécutée sur l'instance de base de données MySQL qui doit être configurée comme réplica en lecture d'une instance MySQL s'exécutant en dehors d'Amazon RDS.

Avant d'exécuter mysql.rds_set_external_master, vous devez configurer l'instance de MySQL s'exécutant en dehors de Amazon RDS comme instance de base de données source. Pour vous connecter à l'instance MySQL en cours d'exécution en dehors de Amazon RDS, vous devez spécifier des valeurs replication_user_name et replication_user_password qui indiquent un utilisateur de réplication possédant des autorisations REPLICATION CLIENT et REPLICATION SLAVE sur l'instance externe de MySQL.

Pour configurer une instance externe de MySQL en tant qu'instance de base de données source
  1. A l'aide du client MySQL de votre choix, connectez-vous à l'instance externe de MySQL et créez un compte d'utilisateur à utiliser pour la réplication. Voici un exemple.

    MySQL 5.7

    CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'password';

    MySQL 8.0

    CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED WITH mysql_native_password BY 'password';
    Note

    Spécifiez un mot de passe autre que celui indiqué ici, en tant que bonne pratique de sécurité.

  2. Sur l’instance externe de MySQL, accordez les privilèges REPLICATION CLIENT et REPLICATION SLAVE à votre utilisateur de réplication. L’exemple suivant accorde les privilèges REPLICATION CLIENT et REPLICATION SLAVE sur toutes les bases de données pour l’utilisateur « repl_user » de votre domaine.

    MySQL 5.7

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com' IDENTIFIED BY 'password';

    MySQL 8.0

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com';

Pour utiliser la réplication chiffrée, configurez l'instance de base de données source de façon à utiliser les connexions SSL.

Note

Nous vous conseillons d'utiliser des réplicas en lecture pour gérer la réplication entre deux instances de base de données Amazon RDS dès que possible. Dans ce cas, nous vous conseillons d'utiliser seulement cette procédure et d'autres procédures stockées liées à la réplication. Ces pratiques permettent d'obtenir des topologies de réplication plus complexes entre des instances de base de données Amazon RDS. Nous proposons ces procédures stockées avant tout pour permettre la réplication avec les instances MySQL s'exécutant en dehors d'Amazon RDS. Pour plus d’informations sur la gestion de la réplication entre les instances de base de données Amazon RDS, consultez Utilisation des réplicas en lecture d’instance de base de données.

Après avoir appelé mysql.rds_set_external_master pour configurer une instance de base de données Amazon RDS comme réplica en lecture, vous pouvez appeler mysql.rds_start_replication sur le réplica en lecture pour démarrer le processus de réplication. Vous pouvez appeler mysql.rds_reset_external_master (RDS for MariaDB et RDS for MySQL, versions majeures 8.0 et antérieures) pour supprimer la configuration du réplica en lecture.

Quand la procédure mysql.rds_set_external_master est appelée, Amazon RDS enregistre l'heure, l'utilisateur et une action de set master dans les tables mysql.rds_history et mysql.rds_replication_status.

Exemples

Lors d’une exécution sur une instance de base de données MySQL, l’exemple suivant configure l’instance de base de données comme réplica en lecture d’une instance de MySQL s’exécutant à l’extérieur d’Amazon RDS.

call mysql.rds_set_external_master( 'Externaldb.some.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.0777', 120, 1);

mysql.rds_set_external_source (RDS for MySQL, versions majeures 8.4 et ultérieures)

Configure une instance de base de données RDS for MySQL comme réplica en lecture d’une instance de MySQL s’exécutant à l’extérieur d’Amazon RDS.

Important

Pour exécuter cette procédure, autocommit doit être activé. Pour l'activer, définissez le paramètre autocommit sur 1. Pour plus d’informations sur la modification des paramètres d’instance, consultez Modification de paramètres dans un groupe de paramètres de base de données dans Amazon RDS.

Syntaxe

CALL mysql.rds_set_external_source ( host_name , host_port , replication_user_name , replication_user_password , mysql_binary_log_file_name , mysql_binary_log_file_location , ssl_encryption );

Paramètres

host_name

Nom d'hôte ou adresse IP de l'instance MySQL s'exécutant à l'extérieur d'Amazon RDS pour devenir l'instance de base de données source.

host_port

Port utilisé par l'instance MySQL s'exécutant à l'extérieur d'Amazon RDS et à configurer comme instance de base de données source. Si votre configuration réseau inclut une réplication de port Secure Shell (SSH) qui convertit le numéro de port, spécifiez le numéro de port qui est exposé par SSH.

replication_user_name

ID d'un utilisateur disposant des autorisations REPLICATION CLIENT et REPLICATION SLAVE sur l'instance MySQL s'exécutant à l'extérieur d'Amazon RDS. Nous vous recommandons de fournir un compte qui soit utilisé uniquement pour la réplication avec l'instance externe.

replication_user_password

Mot de passe de l'ID utilisateur spécifié dans replication_user_name.

mysql_binary_log_file_name

Nom du journal binaire sur l'instance de base de données source qui contient les informations de réplication.

mysql_binary_log_file_location

Emplacement dans le journal binaire mysql_binary_log_file_name à partir duquel la réplication commence à lire les informations de réplication.

Vous pouvez déterminer le nom et l'emplacement du fichier journal binaire en exécutant SHOW MASTER STATUS sur l'instance de base de données source.

ssl_encryption

Valeur indiquant si le chiffrement Secure Socket Layer (SSL) est utilisé sur la connexion de réplication. La valeur 1 spécifie d'utiliser le chiffrement SSL, et la valeur 0 de ne pas l'utiliser. La valeur par défaut est 0.

Note

L’option SOURCE_SSL_VERIFY_SERVER_CERT n’est pas prise en charge. Cette option est définie sur 0, ce qui signifie que la connexion est chiffrée, mais que les certificats ne sont pas vérifiés.

Notes d’utilisation

L’utilisateur administratif doit exécuter la procédure mysql.rds_set_external_source. Cette procédure doit être exécutée sur l’instance de base de données RDS for MySQL qui doit être configurée comme réplica en lecture d’une instance MySQL s’exécutant en dehors d’Amazon RDS.

Avant d’exécuter mysql.rds_set_external_source, vous devez configurer l’instance de MySQL s’exécutant en dehors de Amazon RDS comme instance de base de données source. Pour vous connecter à l'instance MySQL en cours d'exécution en dehors de Amazon RDS, vous devez spécifier des valeurs replication_user_name et replication_user_password qui indiquent un utilisateur de réplication possédant des autorisations REPLICATION CLIENT et REPLICATION SLAVE sur l'instance externe de MySQL.

Pour configurer une instance externe de MySQL en tant qu'instance de base de données source
  1. A l'aide du client MySQL de votre choix, connectez-vous à l'instance externe de MySQL et créez un compte d'utilisateur à utiliser pour la réplication. 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é.

  2. Sur l’instance externe de MySQL, accordez les privilèges REPLICATION CLIENT et REPLICATION SLAVE à votre utilisateur de réplication. L’exemple suivant accorde les privilèges REPLICATION CLIENT et REPLICATION SLAVE sur toutes les bases de données pour l’utilisateur « repl_user » de votre domaine.

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com';

Pour utiliser la réplication chiffrée, configurez l'instance de base de données source de façon à utiliser les connexions SSL. De plus, importez le certificat de l'autorité de certification, le certificat du client et la clé du client dans l'instance de base de données ou le cluster de bases de données à l'aide de la procédure mysql.rds_import_binlog_ssl_material.

Note

Nous vous conseillons d’utiliser des réplicas en lecture pour gérer la réplication entre deux instances de base de données Amazon RDS dès que possible. Dans ce cas, nous vous conseillons d'utiliser seulement cette procédure et d'autres procédures stockées liées à la réplication. Ces pratiques permettent d'obtenir des topologies de réplication plus complexes entre des instances de base de données Amazon RDS. Nous proposons ces procédures stockées avant tout pour permettre la réplication avec les instances MySQL s'exécutant en dehors d'Amazon RDS. Pour plus d’informations sur la gestion de la réplication entre les instances de base de données Amazon RDS, consultez Utilisation des réplicas en lecture d’instance de base de données.

Après avoir appelé mysql.rds_set_external_source pour configurer une instance de base de données RDS for MySQL comme réplica en lecture, vous pouvez appeler mysql.rds_start_replication sur le réplica en lecture pour démarrer le processus de réplication. Vous pouvez appeler mysql.rds_reset_external_source (RDS for MySQL, versions majeures 8.4 et ultérieures) pour supprimer la configuration du réplica en lecture.

Quand la procédure mysql.rds_set_external_source est appelée, Amazon RDS enregistre l'heure, l'utilisateur et une action de set master dans les tables mysql.rds_history et mysql.rds_replication_status.

Exemples

Lors d’une exécution sur une instance de base de données RDS for MySQL, l’exemple suivant configure l’instance de base de données comme réplica en lecture d’une instance de MySQL s’exécutant à l’extérieur d’Amazon RDS.

call mysql.rds_set_external_source( 'Externaldb.some.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.0777', 120, 1);

mysql.rds_set_external_master_with_auto_position (RDS for MySQL, versions majeures 8.0 et antérieures)

Configure une instance de bases de données RDS for MySQL comme réplica en lecture d'une instance de MySQL s'exécutant à l'extérieur de Amazon RDS. Cette procédure configure également la réplication retardée et la réplication basée sur des identifiants de transaction globaux.

Important

Pour exécuter cette procédure, autocommit doit être activé. Pour l'activer, définissez le paramètre autocommit sur 1. Pour plus d’informations sur la modification des paramètres d’instance, consultez Modification de paramètres dans un groupe de paramètres de base de données dans Amazon RDS.

Syntaxe

CALL mysql.rds_set_external_master_with_auto_position ( host_name , host_port , replication_user_name , replication_user_password , ssl_encryption , delay );

Paramètres

host_name

Nom d'hôte ou adresse IP de l'instance MySQL s'exécutant à l'extérieur d'Amazon RDS pour devenir l'instance de base de données source.

host_port

Port utilisé par l'instance MySQL s'exécutant à l'extérieur d'Amazon RDS et à configurer comme instance de base de données source. Si votre configuration réseau inclut une réplication de port Secure Shell (SSH) qui convertit le numéro de port, spécifiez le numéro de port qui est exposé par SSH.

replication_user_name

ID d'un utilisateur disposant des autorisations REPLICATION CLIENT et REPLICATION SLAVE sur l'instance MySQL s'exécutant à l'extérieur d'Amazon RDS. Nous vous recommandons de fournir un compte qui soit utilisé uniquement pour la réplication avec l'instance externe.

replication_user_password

Mot de passe de l'ID utilisateur spécifié dans replication_user_name.

ssl_encryption

Valeur indiquant si le chiffrement Secure Socket Layer (SSL) est utilisé sur la connexion de réplication. La valeur 1 spécifie d'utiliser le chiffrement SSL, et la valeur 0 de ne pas l'utiliser. La valeur par défaut est 0.

Note

L'option MASTER_SSL_VERIFY_SERVER_CERT n'est pas prise en charge. Cette option est définie sur 0, ce qui signifie que la connexion est chiffrée, mais que les certificats ne sont pas vérifiés.

delay

Nombre minimum de secondes pour retarder la réplication à partir de l'instance de base de données source.

La limite de ce paramètre est une journée (soit 86 400 secondes).

Notes d’utilisation

L'utilisateur principal doit exécuter la procédure mysql.rds_set_external_master_with_auto_position. Cette procédure doit être exécutée sur l’instance de base de données MySQL qui doit être configurée comme réplica en lecture d’une instance MySQL s’exécutant en dehors d’Amazon RDS.

Cette procédure est prise en charge pour toutes les versions de RDS for MySQL 5.7, et RDS for MySQL 8.0.26 et les versions 8.0 ultérieures.

Avant d’exécuter mysql.rds_set_external_master_with_auto_position, vous devez configurer l’instance de MySQL s’exécutant en dehors de Amazon RDS comme instance de base de données source. Pour vous connecter à l'instance MySQL s'exécutant en dehors d'Amazon RDS, vous devez spécifier des valeurs pour replication_user_name et replication_user_password. Ces valeurs doivent indiquer un utilisateur de réplication disposant des autorisations REPLICATION CLIENT et REPLICATION SLAVE sur l'instance externe de MySQL.

Pour configurer une instance externe de MySQL en tant qu'instance de base de données source
  1. A l'aide du client MySQL de votre choix, connectez-vous à l'instance externe de MySQL et créez un compte d'utilisateur à utiliser pour la réplication. Voici un exemple de.

    CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'SomePassW0rd'
  2. Sur l'instance externe de MySQL, accordez les privilèges REPLICATION CLIENT et REPLICATION SLAVE à votre utilisateur de réplication. L'exemple suivant accorde les privilèges REPLICATION CLIENT et REPLICATION SLAVE sur toutes les bases de données pour l'utilisateur 'repl_user' de votre domaine.

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com' IDENTIFIED BY 'SomePassW0rd'

Pour plus d'informations, consultez Configuration d’une réplication de position de fichier journal binaire avec une instance source externe.

Note

Nous vous conseillons d'utiliser des réplicas en lecture pour gérer la réplication entre deux instances de base de données Amazon RDS dès que possible. Dans ce cas, nous vous conseillons d'utiliser seulement cette procédure et d'autres procédures stockées liées à la réplication. Ces pratiques permettent d'obtenir des topologies de réplication plus complexes entre des instances de base de données Amazon RDS. Nous proposons ces procédures stockées avant tout pour permettre la réplication avec les instances MySQL s'exécutant en dehors d'Amazon RDS. Pour plus d’informations sur la gestion de la réplication entre les instances de base de données Amazon RDS, consultez Utilisation des réplicas en lecture d’instance de base de données.

Avant d’appeler mysql.rds_set_external_master_with_auto_position, assurez-vous d’appeler mysql.rds_set_external_source_gtid_purged pour définir la variable système gtid_purged avec une plage GTID spécifiée à partir d’une source externe.

Après avoir appelé mysql.rds_set_external_master_with_auto_position pour configurer une instance de base de données Amazon RDS comme réplica en lecture, vous pouvez appeler mysql.rds_start_replication sur le réplica en lecture pour démarrer le processus de réplication. Vous pouvez appeler mysql.rds_reset_external_master (RDS for MariaDB et RDS for MySQL, versions majeures 8.0 et antérieures) pour supprimer la configuration du réplica en lecture.

Lorsque vous appelez mysql.rds_set_external_master_with_auto_position, Amazon RDS enregistre l'heure, l'utilisateur et une action de set master dans les tables mysql.rds_history et mysql.rds_replication_status.

Pour la reprise après sinistre, vous pouvez utiliser cette procédure avec la procédure stockée mysql.rds_start_replication_until ou mysql.rds_start_replication_until_gtid. Pour restaurer par progression les modifications dans un réplica en lecture retardé au moment précédant un sinistre, vous pouvez exécuter la procédure mysql.rds_set_external_master_with_auto_position. Une fois que la procédure mysql.rds_start_replication_until_gtid a arrêté la réplication, vous pouvez promouvoir le réplica en lecture pour qu'il devienne la nouvelle instance de base de données principale, en utilisant les instructions figurant dans Promotion d'un réplica en lecture en instance de bases de données autonome.

Pour utiliser la procédure mysql.rds_rds_start_replication_until_gtid, la réplication basée sur des identifiants de transaction globaux (GTID) doit être activée. Pour ignorer une transaction basée sur des identifiants de transaction globaux spécifique qui est réputée pour entraîner des défaillances, vous pouvez utiliser la procédure stockée mysql.rds_skip_transaction_with_gtid. Pour plus d'informations sur la gestion d'une réplication basée sur des identifiants de transaction globaux, consultez Utilisation de la réplication basée sur des identifiants de transaction globaux (GTID).

Exemples

Lors d'une exécution sur une instance de base de données MySQL, l'exemple suivant configure l'instance de base de données comme réplica en lecture d'une instance de MySQL s'exécutant à l'extérieur d'Amazon RDS. Il définit le délai de réplication minimal à une heure (soit 3 600 secondes) sur l’instance de base de données MySQL. Une modification provenant de l’instance de base de données source MySQL exécutée à l’extérieur d’Amazon RDS n’est pas appliquée dans le réplica en lecture de l’instance de base de données MySQL pendant au moins une heure.

call mysql.rds_set_external_master_with_auto_position( 'Externaldb.some.com', 3306, 'repl_user', 'SomePassW0rd', 1, 3600);

mysql.rds_set_external_source_with_auto_position (RDS for MySQL, versions majeures 8.4 et ultérieures)

Configure une instance de bases de données RDS for MySQL comme réplica en lecture d'une instance de MySQL s'exécutant à l'extérieur de Amazon RDS. Cette procédure configure également la réplication retardée et la réplication basée sur des identifiants de transaction globaux.

Important

Pour exécuter cette procédure, autocommit doit être activé. Pour l'activer, définissez le paramètre autocommit sur 1. Pour plus d’informations sur la modification des paramètres d’instance, consultez Modification de paramètres dans un groupe de paramètres de base de données dans Amazon RDS.

Syntaxe

CALL mysql.rds_set_external_source_with_auto_position ( host_name , host_port , replication_user_name , replication_user_password , ssl_encryption , delay );

Paramètres

host_name

Nom d'hôte ou adresse IP de l'instance MySQL s'exécutant à l'extérieur d'Amazon RDS pour devenir l'instance de base de données source.

host_port

Port utilisé par l'instance MySQL s'exécutant à l'extérieur d'Amazon RDS et à configurer comme instance de base de données source. Si votre configuration réseau inclut une réplication de port Secure Shell (SSH) qui convertit le numéro de port, spécifiez le numéro de port qui est exposé par SSH.

replication_user_name

ID d'un utilisateur disposant des autorisations REPLICATION CLIENT et REPLICATION SLAVE sur l'instance MySQL s'exécutant à l'extérieur d'Amazon RDS. Nous vous recommandons de fournir un compte qui soit utilisé uniquement pour la réplication avec l'instance externe.

replication_user_password

Mot de passe de l'ID utilisateur spécifié dans replication_user_name.

ssl_encryption

Valeur indiquant si le chiffrement Secure Socket Layer (SSL) est utilisé sur la connexion de réplication. La valeur 1 spécifie d'utiliser le chiffrement SSL, et la valeur 0 de ne pas l'utiliser. La valeur par défaut est 0.

Note

L'option SOURCE_SSL_VERIFY_SERVER_CERT n'est pas prise en charge. Cette option est définie sur 0, ce qui signifie que la connexion est chiffrée, mais que les certificats ne sont pas vérifiés.

delay

Nombre minimum de secondes pour retarder la réplication à partir de l'instance de base de données source.

La limite de ce paramètre est une journée (soit 86 400 secondes).

Notes d’utilisation

L’utilisateur administratif doit exécuter la procédure mysql.rds_set_external_source_with_auto_position. Cette procédure doit être exécutée sur l’instance de base de données MySQL qui doit être configurée comme réplica en lecture d’une instance MySQL s’exécutant en dehors d’Amazon RDS.

Avant d'exécuter mysql.rds_set_external_source_with_auto_position, vous devez configurer l'instance de MySQL s'exécutant en dehors de Amazon RDS comme instance de base de données source. Pour vous connecter à l'instance MySQL s'exécutant en dehors d'Amazon RDS, vous devez spécifier des valeurs pour replication_user_name et replication_user_password. Ces valeurs doivent indiquer un utilisateur de réplication disposant des autorisations REPLICATION CLIENT et REPLICATION SLAVE sur l'instance externe de MySQL.

Pour configurer une instance externe de MySQL en tant qu'instance de base de données source
  1. A l'aide du client MySQL de votre choix, connectez-vous à l'instance externe de MySQL et créez un compte d'utilisateur à utiliser pour la réplication. Voici un exemple de.

    CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'SomePassW0rd'
  2. Sur l'instance externe de MySQL, accordez les privilèges REPLICATION CLIENT et REPLICATION SLAVE à votre utilisateur de réplication. L'exemple suivant accorde les privilèges REPLICATION CLIENT et REPLICATION SLAVE sur toutes les bases de données pour l'utilisateur 'repl_user' de votre domaine.

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com' IDENTIFIED BY 'SomePassW0rd'

Pour plus d'informations, consultez Configuration d’une réplication de position de fichier journal binaire avec une instance source externe.

Note

Nous vous conseillons d'utiliser des réplicas en lecture pour gérer la réplication entre deux instances de base de données Amazon RDS dès que possible. Dans ce cas, nous vous conseillons d'utiliser seulement cette procédure et d'autres procédures stockées liées à la réplication. Ces pratiques permettent d'obtenir des topologies de réplication plus complexes entre des instances de base de données Amazon RDS. Nous proposons ces procédures stockées avant tout pour permettre la réplication avec les instances MySQL s'exécutant en dehors d'Amazon RDS. Pour plus d’informations sur la gestion de la réplication entre les instances de base de données Amazon RDS, consultez Utilisation des réplicas en lecture d’instance de base de données.

Avant d’appeler mysql.rds_set_external_source_with_auto_position, assurez-vous d’appeler mysql.rds_set_external_source_gtid_purged pour définir la variable système gtid_purged avec une plage GTID spécifiée à partir d’une source externe.

Après avoir appelé mysql.rds_set_external_source_with_auto_position pour configurer une instance de base de données Amazon RDS comme réplica en lecture, vous pouvez appeler mysql.rds_start_replication sur le réplica en lecture pour démarrer le processus de réplication. Vous pouvez appeler mysql.rds_reset_external_source (RDS for MySQL, versions majeures 8.4 et ultérieures) pour supprimer la configuration du réplica en lecture.

Lorsque vous appelez mysql.rds_set_external_source_with_auto_position, Amazon RDS enregistre l'heure, l'utilisateur et une action de set master dans les tables mysql.rds_history et mysql.rds_replication_status.

Pour la reprise après sinistre, vous pouvez utiliser cette procédure avec la procédure stockée mysql.rds_start_replication_until ou mysql.rds_start_replication_until_gtid. Pour restaurer par progression les modifications dans un réplica en lecture retardé au moment précédant un sinistre, vous pouvez exécuter la procédure mysql.rds_set_external_source_with_auto_position. Une fois que la procédure mysql.rds_start_replication_until_gtid a arrêté la réplication, vous pouvez promouvoir le réplica en lecture pour qu'il devienne la nouvelle instance de base de données principale, en utilisant les instructions figurant dans Promotion d'un réplica en lecture en instance de bases de données autonome.

Pour utiliser la procédure mysql.rds_rds_start_replication_until_gtid, la réplication basée sur des identifiants de transaction globaux (GTID) doit être activée. Pour ignorer une transaction basée sur des identifiants de transaction globaux spécifique qui est réputée pour entraîner des défaillances, vous pouvez utiliser la procédure stockée mysql.rds_skip_transaction_with_gtid. Pour plus d'informations sur la gestion d'une réplication basée sur des identifiants de transaction globaux, consultez Utilisation de la réplication basée sur des identifiants de transaction globaux (GTID).

Exemples

Lors d'une exécution sur une instance de base de données MySQL, l'exemple suivant configure l'instance de base de données comme réplica en lecture d'une instance de MySQL s'exécutant à l'extérieur d'Amazon RDS. Il définit le délai de réplication minimal à une heure (soit 3 600 secondes) sur l’instance de base de données MySQL. Une modification provenant de l’instance de base de données source MySQL exécutée à l’extérieur d’Amazon RDS n’est pas appliquée dans le réplica en lecture de l’instance de base de données MySQL pendant au moins une heure.

call mysql.rds_set_external_source_with_auto_position( 'Externaldb.some.com', 3306, 'repl_user', 'SomePassW0rd', 1, 3600);

mysql.rds_set_external_master_with_delay (RDS for MariaDB et RDS for MySQL, versions majeures 8.0 et antérieures)

Configure une instance de bases de données RDS for MySQL comme réplica en lecture d'une instance de MySQL s'exécutant à l'extérieur de Amazon RDS et configure une réplication retardée.

Important

Pour exécuter cette procédure, autocommit doit être activé. Pour l'activer, définissez le paramètre autocommit sur 1. Pour plus d’informations sur la modification des paramètres d’instance, consultez Modification de paramètres dans un groupe de paramètres de base de données dans Amazon RDS.

Syntaxe

CALL mysql.rds_set_external_master_with_delay( host_name , host_port , replication_user_name , replication_user_password , mysql_binary_log_file_name , mysql_binary_log_file_location , ssl_encryption , delay );

Paramètres

host_name

Nom d'hôte ou adresse IP de l'instance MySQL s'exécutant à l'extérieur d'Amazon RDS et qui deviendra l'instance de base de données source.

host_port

Port utilisé par l'instance MySQL s'exécutant à l'extérieur d'Amazon RDS et à configurer comme instance de base de données source. Si votre configuration réseau inclut une réplication de port SSH qui convertit le numéro de port, spécifiez le numéro de port qui est exposé par SSH.

replication_user_name

ID d'un utilisateur disposant des autorisations REPLICATION CLIENT et REPLICATION SLAVE sur l'instance MySQL s'exécutant à l'extérieur d'Amazon RDS. Nous vous recommandons de fournir un compte qui soit utilisé uniquement pour la réplication avec l'instance externe.

replication_user_password

Mot de passe de l'ID utilisateur spécifié dans replication_user_name.

mysql_binary_log_file_name

Le nom du journal binaire sur l'instance de base de données source contient les informations de réplication.

mysql_binary_log_file_location

Emplacement dans le journal binaire mysql_binary_log_file_name à partir duquel la réplication commence à lire les informations de réplication.

Vous pouvez déterminer le nom et l'emplacement du fichier journal binaire en exécutant SHOW MASTER STATUS sur l'instance de base de données source.

ssl_encryption

Valeur indiquant si le chiffrement Secure Socket Layer (SSL) est utilisé sur la connexion de réplication. La valeur 1 spécifie d'utiliser le chiffrement SSL, et la valeur 0 de ne pas l'utiliser. La valeur par défaut est 0.

Note

L'option MASTER_SSL_VERIFY_SERVER_CERT n'est pas prise en charge. Cette option est définie sur 0, ce qui signifie que la connexion est chiffrée, mais que les certificats ne sont pas vérifiés.

delay

Nombre minimum de secondes pour retarder la réplication à partir de l'instance de base de données source.

La limite de ce paramètre est une journée (soit 86 400 secondes).

Notes d’utilisation

L'utilisateur principal doit exécuter la procédure mysql.rds_set_external_master_with_delay. Cette procédure doit être exécutée sur l'instance de base de données MySQL qui doit être configurée comme réplica en lecture d'une instance MySQL s'exécutant en dehors d'Amazon RDS.

Avant d'exécuter mysql.rds_set_external_master_with_delay, vous devez configurer l'instance de MySQL s'exécutant en dehors de Amazon RDS comme instance de base de données source. Pour vous connecter à l'instance MySQL s'exécutant en dehors d'Amazon RDS, vous devez spécifier des valeurs pour replication_user_name et replication_user_password. Ces valeurs doivent indiquer un utilisateur de réplication disposant des autorisations REPLICATION CLIENT et REPLICATION SLAVE sur l'instance externe de MySQL.

Pour configurer une instance externe de MySQL en tant qu'instance de base de données source
  1. A l'aide du client MySQL de votre choix, connectez-vous à l'instance externe de MySQL et créez un compte d'utilisateur à utiliser pour la réplication. Voici un exemple de.

    CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'SomePassW0rd'
  2. Sur l'instance externe de MySQL, accordez les privilèges REPLICATION CLIENT et REPLICATION SLAVE à votre utilisateur de réplication. L'exemple suivant accorde les privilèges REPLICATION CLIENT et REPLICATION SLAVE sur toutes les bases de données pour l'utilisateur 'repl_user' de votre domaine.

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com' IDENTIFIED BY 'SomePassW0rd'

Pour plus d'informations, consultez Configuration d’une réplication de position de fichier journal binaire avec une instance source externe.

Note

Nous vous conseillons d'utiliser des réplicas en lecture pour gérer la réplication entre deux instances de base de données Amazon RDS dès que possible. Dans ce cas, nous vous conseillons d'utiliser seulement cette procédure et d'autres procédures stockées liées à la réplication. Ces pratiques permettent d'obtenir des topologies de réplication plus complexes entre des instances de base de données Amazon RDS. Nous proposons ces procédures stockées avant tout pour permettre la réplication avec les instances MySQL s'exécutant en dehors d'Amazon RDS. Pour plus d'informations sur la gestion de la réplication entre les instances de base de données Amazon RDS, consultez Utilisation des réplicas en lecture d’instance de base de données.

Après avoir appelé mysql.rds_set_external_master_with_delay pour configurer une instance de base de données Amazon RDS comme réplica en lecture, vous pouvez appeler mysql.rds_start_replication sur le réplica en lecture pour démarrer le processus de réplication. Vous pouvez appeler mysql.rds_reset_external_master (RDS for MariaDB et RDS for MySQL, versions majeures 8.0 et antérieures) pour supprimer la configuration du réplica en lecture.

Lorsque vous appelez mysql.rds_set_external_master_with_delay, Amazon RDS enregistre l'heure, l'utilisateur et une action de set master dans les tables mysql.rds_history et mysql.rds_replication_status.

Pour la reprise après sinistre, vous pouvez utiliser cette procédure avec la procédure stockée mysql.rds_start_replication_until ou mysql.rds_start_replication_until_gtid. Pour restaurer par progression les modifications dans un réplica en lecture retardé au moment précédant un sinistre, vous pouvez exécuter la procédure mysql.rds_set_external_master_with_delay. Une fois que la procédure mysql.rds_start_replication_until a arrêté la réplication, vous pouvez promouvoir le réplica en lecture pour qu'il devienne la nouvelle instance de base de données principale, en utilisant les instructions figurant dans Promotion d'un réplica en lecture en instance de bases de données autonome.

Pour utiliser la procédure mysql.rds_rds_start_replication_until_gtid, la réplication basée sur des identifiants de transaction globaux (GTID) doit être activée. Pour ignorer une transaction basée sur des identifiants de transaction globaux spécifique qui est réputée pour entraîner des défaillances, vous pouvez utiliser la procédure stockée mysql.rds_skip_transaction_with_gtid. Pour plus d'informations sur la gestion d'une réplication basée sur des identifiants de transaction globaux, consultez Utilisation de la réplication basée sur des identifiants de transaction globaux (GTID).

La procédure mysql.rds_set_external_master_with_delay est disponible dans les versions de RDS for MySQL suivantes :

  • MySQL 8.0.26 et versions 8.0 ultérieures

  • Toutes les versions 5.7

Exemples

Lors d'une exécution sur une instance de base de données MySQL, l'exemple suivant configure l'instance de base de données comme réplica en lecture d'une instance de MySQL s'exécutant à l'extérieur d'Amazon RDS. Il définit le délai de réplication minimal à une heure (soit 3 600 secondes) sur l’instance de base de données MySQL. Une modification provenant de l’instance de base de données source MySQL exécutée à l’extérieur d’Amazon RDS n’est pas appliquée dans le réplica en lecture de l’instance de base de données MySQL pendant au moins une heure.

call mysql.rds_set_external_master_with_delay( 'Externaldb.some.com', 3306, 'repl_user', 'SomePassW0rd', 'mysql-bin-changelog.000777', 120, 1, 3600);

mysql.rds_set_external_source_with_delay (RDS for MySQL, versions majeures 8.4 et ultérieures)

Configure une instance de bases de données RDS for MySQL comme réplica en lecture d'une instance de MySQL s'exécutant à l'extérieur de Amazon RDS et configure une réplication retardée.

Important

Pour exécuter cette procédure, autocommit doit être activé. Pour l'activer, définissez le paramètre autocommit sur 1. Pour plus d’informations sur la modification des paramètres d’instance, consultez Modification de paramètres dans un groupe de paramètres de base de données dans Amazon RDS.

Syntaxe

CALL mysql.rds_set_external_source_with_delay ( host_name , host_port , replication_user_name , replication_user_password , mysql_binary_log_file_name , mysql_binary_log_file_location , ssl_encryption , delay );

Paramètres

host_name

Nom d'hôte ou adresse IP de l'instance MySQL s'exécutant à l'extérieur d'Amazon RDS et qui deviendra l'instance de base de données source.

host_port

Port utilisé par l'instance MySQL s'exécutant à l'extérieur d'Amazon RDS et à configurer comme instance de base de données source. Si votre configuration réseau inclut une réplication de port SSH qui convertit le numéro de port, spécifiez le numéro de port qui est exposé par SSH.

replication_user_name

ID d'un utilisateur disposant des autorisations REPLICATION CLIENT et REPLICATION SLAVE sur l'instance MySQL s'exécutant à l'extérieur d'Amazon RDS. Nous vous recommandons de fournir un compte qui soit utilisé uniquement pour la réplication avec l'instance externe.

replication_user_password

Mot de passe de l'ID utilisateur spécifié dans replication_user_name.

mysql_binary_log_file_name

Le nom du journal binaire sur l'instance de base de données source contient les informations de réplication.

mysql_binary_log_file_location

Emplacement dans le journal binaire mysql_binary_log_file_name à partir duquel la réplication commence à lire les informations de réplication.

Vous pouvez déterminer le nom et l'emplacement du fichier journal binaire en exécutant SHOW MASTER STATUS sur l'instance de base de données source.

ssl_encryption

Valeur indiquant si le chiffrement Secure Socket Layer (SSL) est utilisé sur la connexion de réplication. La valeur 1 spécifie d'utiliser le chiffrement SSL, et la valeur 0 de ne pas l'utiliser. La valeur par défaut est 0.

Note

L'option SOURCE_SSL_VERIFY_SERVER_CERT n'est pas prise en charge. Cette option est définie sur 0, ce qui signifie que la connexion est chiffrée, mais que les certificats ne sont pas vérifiés.

delay

Nombre minimum de secondes pour retarder la réplication à partir de l'instance de base de données source.

La limite de ce paramètre est une journée (soit 86 400 secondes).

Notes d’utilisation

L’utilisateur administratif doit exécuter la procédure mysql.rds_set_external_source_with_delay. Cette procédure doit être exécutée sur l’instance de base de données MySQL qui doit être configurée comme réplica en lecture d’une instance MySQL s’exécutant en dehors d’Amazon RDS.

Avant d'exécuter mysql.rds_set_external_source_with_delay, vous devez configurer l'instance de MySQL s'exécutant en dehors de Amazon RDS comme instance de base de données source. Pour vous connecter à l'instance MySQL s'exécutant en dehors d'Amazon RDS, vous devez spécifier des valeurs pour replication_user_name et replication_user_password. Ces valeurs doivent indiquer un utilisateur de réplication disposant des autorisations REPLICATION CLIENT et REPLICATION SLAVE sur l'instance externe de MySQL.

Pour configurer une instance externe de MySQL en tant qu'instance de base de données source
  1. A l'aide du client MySQL de votre choix, connectez-vous à l'instance externe de MySQL et créez un compte d'utilisateur à utiliser pour la réplication. Voici un exemple de.

    CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'SomePassW0rd'
  2. Sur l'instance externe de MySQL, accordez les privilèges REPLICATION CLIENT et REPLICATION SLAVE à votre utilisateur de réplication. L'exemple suivant accorde les privilèges REPLICATION CLIENT et REPLICATION SLAVE sur toutes les bases de données pour l'utilisateur 'repl_user' de votre domaine.

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com' IDENTIFIED BY 'SomePassW0rd'

Pour plus d'informations, consultez Configuration d’une réplication de position de fichier journal binaire avec une instance source externe.

Note

Nous vous conseillons d'utiliser des réplicas en lecture pour gérer la réplication entre deux instances de base de données Amazon RDS dès que possible. Dans ce cas, nous vous conseillons d'utiliser seulement cette procédure et d'autres procédures stockées liées à la réplication. Ces pratiques permettent d'obtenir des topologies de réplication plus complexes entre des instances de base de données Amazon RDS. Nous proposons ces procédures stockées avant tout pour permettre la réplication avec les instances MySQL s'exécutant en dehors d'Amazon RDS. Pour plus d'informations sur la gestion de la réplication entre les instances de base de données Amazon RDS, consultez Utilisation des réplicas en lecture d’instance de base de données.

Après avoir appelé mysql.rds_set_external_source_with_delay pour configurer une instance de base de données Amazon RDS comme réplica en lecture, vous pouvez appeler mysql.rds_start_replication sur le réplica en lecture pour démarrer le processus de réplication. Vous pouvez appeler mysql.rds_reset_external_source (RDS for MySQL, versions majeures 8.4 et ultérieures) pour supprimer la configuration du réplica en lecture.

Lorsque vous appelez mysql.rds_set_external_source_with_delay, Amazon RDS enregistre l'heure, l'utilisateur et une action de set master dans les tables mysql.rds_history et mysql.rds_replication_status.

Pour la reprise après sinistre, vous pouvez utiliser cette procédure avec la procédure stockée mysql.rds_start_replication_until ou mysql.rds_start_replication_until_gtid. Pour restaurer par progression les modifications dans un réplica en lecture retardé au moment précédant un sinistre, vous pouvez exécuter la procédure mysql.rds_set_external_source_with_delay. Une fois que la procédure mysql.rds_start_replication_until a arrêté la réplication, vous pouvez promouvoir le réplica en lecture pour qu'il devienne la nouvelle instance de base de données principale, en utilisant les instructions figurant dans Promotion d'un réplica en lecture en instance de bases de données autonome.

Pour utiliser la procédure mysql.rds_rds_start_replication_until_gtid, la réplication basée sur des identifiants de transaction globaux (GTID) doit être activée. Pour ignorer une transaction basée sur des identifiants de transaction globaux spécifique qui est réputée pour entraîner des défaillances, vous pouvez utiliser la procédure stockée mysql.rds_skip_transaction_with_gtid. Pour plus d'informations sur la gestion d'une réplication basée sur des identifiants de transaction globaux, consultez Utilisation de la réplication basée sur des identifiants de transaction globaux (GTID).

Exemples

Lors d'une exécution sur une instance de base de données MySQL, l'exemple suivant configure l'instance de base de données comme réplica en lecture d'une instance de MySQL s'exécutant à l'extérieur d'Amazon RDS. Il définit le délai de réplication minimal à une heure (soit 3 600 secondes) sur l’instance de base de données MySQL. Une modification provenant de l’instance de base de données source MySQL exécutée à l’extérieur d’Amazon RDS n’est pas appliquée dans le réplica en lecture de l’instance de base de données MySQL pendant au moins une heure.

call mysql.rds_set_external_source_with_delay( 'Externaldb.some.com', 3306, 'repl_user', 'SomePassW0rd', 'mysql-bin-changelog.000777', 120, 1, 3600);

mysql.rds_set_external_source_gtid_purged

Définit la variable système gtid_purged avec une plage GTID spécifiée à partir d’une source externe. La valeur gtid_purged est requise pour configurer la réplication GTID afin de reprendre la réplication à l’aide du positionnement automatique.

Important

Pour exécuter cette procédure, autocommit doit être activé. Pour l'activer, définissez le paramètre autocommit sur 1. Pour plus d’informations sur la modification des paramètres d’instance, consultez Modification de paramètres dans un groupe de paramètres de base de données dans Amazon RDS.

Syntaxe

CALL mysql.rds_set_external_source_gtid_purged( server_uuid , start_pos , end_pos );

Paramètres

serveur_uuid

L’identifiant universel unique (UUID) du serveur externe à partir duquel la plage GTID est importée.

start_pos

La position de départ de la plage GTID à définir.

end_pos

La position de fin de la plage GTID à définir.

Notes d’utilisation

La procédure mysql.rds_set_external_source_gtid_purged est uniquement disponible avec MySQL 8.0.37 et les versions 8.0 ultérieures.

Appelez mysql.rds_set_external_source_gtid_purged avant d’appeler mysql.rds_set_external_master_with_auto_position (RDS for MySQL, versions majeures 8.0 et antérieures), mysql.rds_set_external_source_with_auto_position (RDS for MySQL, versions majeures 8.4 et ultérieures) ou mysql.rds_set_external_source_with_auto_position_for_channel.

Avant d’appeler mysql.rds_set_external_source_gtid_purged, assurez-vous d’arrêter tous les canaux de réplication actifs pour la base de données. Pour vérifier l’état d’un canal, utilisez l’instruction MySQL SHOW REPLICA STATUS. Pour arrêter la réplication sur un canal, appelez mysql.rds_stop_replication_for_channel.

La plage GTID que vous spécifiez doit être un sur-ensemble de la valeur existante GTID_PURGED. Cette procédure stockée vérifie les valeurs suivantes avant de définir la valeur GTID_PURGED :

  • Le server_uuid est valide.

  • La valeur start_pos est supérieure à 0 et inférieure à la valeur end_pos.

  • La valeur end_pos est supérieure ou égale à la valeur start_pos.

Si le GTID défini sur votre serveur externe contient plusieurs plages de valeurs, il est recommandé d’appeler la procédure plusieurs fois, avec différentes valeurs de GTID.

Lorsque vous appelez mysql.rds_set_external_source_gtid_purged, Amazon RDS enregistre l’heure, l’utilisateur et une action set gtid_purged dans la table mysql.rds_history.

Si vous ne définissez pas la valeur gtid_purged appropriée pour la sauvegarde que vous utilisez pour la réplication, certaines transactions peuvent être manquantes ou dupliquées au cours du processus de réplication. Effectuez les étapes suivantes pour définir la valeur gtid_purged appropriée.

Pour définir la valeur gtid_purged sur le réplica
  1. Identifiez le moment précis ou le fichier de sauvegarde à utiliser comme point de départ de la réplication. Il peut s’agir d’une sauvegarde logique (un fichier mysqldump) ou physique (un instantané Amazon RDS).

  2. Déterminez la valeur gtid_executed. Cette valeur représente l’ensemble de tous les GTID validés sur le serveur. Pour obtenir cette valeur, effectuez l’une des actions suivantes sur l’instance source :

    • Exécutez l’instruction SQL SELECT @@GLOBAL.GTID_EXECUTED; au moment de la sauvegarde.

    • Si des options associées sont incluses dans l’utilitaire de sauvegarde correspondant, extrayez la valeur du fichier de sauvegarde. Pour plus d’informations, consultez l’option set-gtid-purged dans la documentation MySQL.

  3. Déterminez la valeur gtid_purged à utiliser pour l’appel à mysql.rds_set_external_source_gtid_purged. La valeur gtid_purged doit inclure tous les GTID qui ont été exécutés sur l’instance source et qui sont devenus inutiles pour la réplication. Cette valeur gtid_purged doit donc être un sous-ensemble de la valeur gtid_executed récupérée à l’étape précédente.

    Pour déterminer la valeur gtid_purged, identifiez les GTID qui ne sont pas inclus dans la sauvegarde et qui sont devenus inutiles pour la réplication. Vous pouvez le faire en analysant les journaux binaires ou en utilisant un outil tel que mysqlbinlog pour trouver les GTID qui ont été purgés des journaux binaires.

    Sinon, si vous disposez d’une sauvegarde cohérente qui inclut tous les journaux binaires jusqu’au point de sauvegarde, vous pouvez attribuer à la valeur gtid_purged la même valeur que la valeur gtid_executed à ce moment-là.

  4. Après avoir déterminé la valeur gtid_purged appropriée cohérente avec votre sauvegarde, appelez la procédure mysql.rds_set_external_source_gtid_purged stockée sur votre instance de base de données RDS for MySQL pour définir la valeur.

Exemples

Lorsqu’il est exécuté sur une instance de base de données MySQL, l’exemple suivant définit la plage GTID d’un serveur MySQL externe avec l’UUID 12345678-abcd-1234-efgh-123456789abc, une position de départ de 1 et une position de fin de 100. La valeur GTID résultante est définie sur +12345678-abcd-1234-efgh-123456789abc:1-100.

CALL mysql.rds_set_external_source_gtid_purged('12345678-abcd-1234-efgh-123456789abc', 1, 100);

mysql.rds_set_master_auto_position (RDS for MySQL, versions majeures 8.0 et antérieures)

Définit le mode de réplication mode de manière à ce qu'il soit basé sur des positions de fichier journal binaire ou sur des identifiants de transaction globaux (GTID).

Syntaxe

CALL mysql.rds_set_master_auto_position ( auto_position_mode );

Paramètres

auto_position_mode

Valeur qui indique si la réplication à utiliser est la réplication basée sur la position de fichier ou la réplication basée sur les identifiants de transaction globaux :

  • 0 – Utiliser la méthode de réplication basée sur la position du fichier journal binaire. La valeur par défaut est 0.

  • 1 – Utiliser la méthode de réplication basée sur les identifiants de transaction globaux.

Notes d’utilisation

L’utilisateur principal doit exécuter la procédure mysql.rds_set_master_auto_position.

Cette procédure est prise en charge pour toutes les versions de RDS for MySQL 5.7, et RDS for MySQL 8.0.26 et les versions 8.0 ultérieures.

mysql.rds_set_source_auto_position (RDS for MySQL, versions majeures 8.4 et ultérieures)

Définit le mode de réplication mode de manière à ce qu’il soit basé sur des positions de fichier journal binaire ou sur des identifiants de transaction globaux (GTID).

Syntaxe

CALL mysql.rds_set_source_auto_position (auto_position_mode);

Paramètres

auto_position_mode

Valeur qui indique si la réplication à utiliser est la réplication basée sur la position de fichier ou la réplication basée sur les identifiants de transaction globaux :

  • 0 – Utiliser la méthode de réplication basée sur la position du fichier journal binaire. La valeur par défaut est 0.

  • 1 – Utiliser la méthode de réplication basée sur les identifiants de transaction globaux.

Notes d'utilisation

L’utilisateur administratif doit exécuter la procédure mysql.rds_set_source_auto_position.

mysql.rds_set_source_delay

Définit le nombre minimum de secondes pour retarder la réplication de l'instance de base de données source vers le réplica en lecture actuel. Utilisez cette procédure lorsque vous êtes connecté à un réplica en lecture afin de retarder la réplication à partir de l'instance de base de données source.

Syntaxe

CALL mysql.rds_set_source_delay( delay );

Paramètres

delay

Nombre minimum de secondes pour retarder la réplication à partir de l'instance de base de données source.

La limite de ce paramètre est une journée (soit 86 400 secondes).

Notes d’utilisation

L'utilisateur principal doit exécuter la procédure mysql.rds_set_source_delay.

Pour la reprise après sinistre, vous pouvez utiliser cette procédure avec la procédure stockée mysql.rds_start_replication_until ou mysql.rds_start_replication_until_gtid. Pour restaurer par progression les modifications dans un réplica en lecture retardé au moment précédant un sinistre, vous pouvez exécuter la procédure mysql.rds_set_source_delay. Une fois que la procédure mysql.rds_start_replication_until ou mysql.rds_start_replication_until_gtid a arrêté la réplication, vous pouvez promouvoir le réplica en lecture pour qu'il devienne la nouvelle instance de base de données principale, en utilisant les instructions figurant dans Promotion d'un réplica en lecture en instance de bases de données autonome.

Pour utiliser la procédure mysql.rds_rds_start_replication_until_gtid, la réplication basée sur des identifiants de transaction globaux (GTID) doit être activée. Pour ignorer une transaction basée sur des identifiants de transaction globaux spécifique qui est réputée pour entraîner des défaillances, vous pouvez utiliser la procédure stockée mysql.rds_skip_transaction_with_gtid. Pour plus d'informations sur la réplication basée sur des identifiants de transaction globaux, consultez Utilisation de la réplication basée sur des identifiants de transaction globaux (GTID).

La procédure mysql.rds_set_source_delay est disponible dans les versions de RDS for MySQL suivantes :

  • Toutes les versions RDS for MySQL 8.4

  • MySQL 8.0.26 et versions 8.0 ultérieures

  • Toutes les versions 5.7

Exemples

Pour retarder la réplication à partir de l'instance de base de données source vers le réplica en lecture actuel pendant au moins un heure (3 600 secondes), vous pouvez appeler mysql.rds_set_source_delay avec le paramètre suivant :

CALL mysql.rds_set_source_delay(3600);

mysql.rds_skip_repl_error

Ignore et supprime une erreur de réplication sur un réplica en lecture d'une base de données MySQL.

Syntaxe

CALL mysql.rds_skip_repl_error;

Notes d’utilisation

L’utilisateur principal doit exécuter la procédure mysql.rds_skip_repl_error sur un réplica en lecture. Pour plus d'informations sur cette procédure, consultez Appel de la procédure mysql.rds_skip_repl_error.

Pour déterminer s’il y a des erreurs, exécutez la commande MySQL SHOW REPLICA STATUS\G. Si une erreur de réplication n'est pas critique, vous pouvez exécuter mysql.rds_skip_repl_error pour ignorer l'erreur. S'il y a plusieurs erreurs, mysql.rds_skip_repl_error supprime la première erreur, puis avertit qu'il y a d'autres erreurs. Vous pouvez alors utiliser SHOW REPLICA STATUS\G pour déterminer l’action appropriée pour l’erreur suivante. Pour obtenir des informations sur les valeurs renvoyées, consultez Instruction SHOW REPLICA STATUS dans la documentation sur MySQL.

Pour plus d'informations sur le traitement des erreurs de réplication avec Amazon RDS, consultez Résolution d'un problème de réplica en lecture MySQL.

Erreur d’arrêt de réplication

Lorsque vous appelez la procédure mysql.rds_skip_repl_error, un message d'erreur peut s'afficher pour indiquer que le réplica a rencontré une erreur ou est désactivé.

Ce message d'erreur s'affiche si vous exécutez la procédure sur l'instance principale plutôt que sur le réplica en lecture. Vous devez exécuter cette procédure sur le réplica en lecture pour que la procédure fonctionne.

Ce message d'erreur peut également s'afficher si vous exécutez la procédure sur le réplica en lecture, mais que la réplication ne peut pas être redémarrée correctement.

Si vous avez besoin d'ignorer un grand nombre d'erreurs, le retard de réplication peut augmenter et dépasser la période de rétention par défaut pour les fichiers journaux binaires (binlog). Dans ce cas, vous pouvez rencontrer une erreur irrécupérable due à des fichiers journaux binaires purgés avant d’avoir été réutilisés sur le réplica en lecture. Cette purge entraîne l’arrêt de la réplication et vous ne pouvez plus appeler la commande mysql.rds_skip_repl_error pour ignorer les erreurs de réplication.

Vous pouvez atténuer ce problème en augmentant le nombre d'heures pendant lequel les fichiers journaux binaires sont conservés sur votre instance de base de données source. Une fois que vous avez augmenté le temps de rétention de journaux binaires, vous pouvez redémarrer la réplication et appeler la commande mysql.rds_skip_repl_error en fonction des besoins.

Pour définir la période de rétention des journaux binaires, utilisez la procédure mysql.rds_set_configuration et spécifiez un paramètre de configuration 'binlog retention hours', ainsi que le nombre d'heures pendant lequel conserver les fichiers journaux binaires sur le cluster de bases de données. L’exemple suivant définit la période de rétention des fichiers journaux binaires à 48 heures.

CALL mysql.rds_set_configuration('binlog retention hours', 48);

mysql.rds_start_replication

Lance la réplication à partir d'une instance de base de données RDS pour MySQL.

Note

Vous pouvez utiliser la procédure stockée mysql.rds_start_replication_until ou mysql.rds_start_replication_until_gtid pour lancer la réplication à partir d'une instance de base de données RDS pour MySQL et arrêter la réplication à la position spécifiée dans le fichier journal binaire.

Syntaxe

CALL mysql.rds_start_replication;

Notes d’utilisation

L’utilisateur principal doit exécuter la procédure mysql.rds_start_replication.

Pour importer des données à partir d’une instance de MySQL externe à Amazon RDS, appelez mysql.rds_start_replication sur le réplica en lecture pour démarrer le processus de réplication après avoir appelé 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) pour créer la configuration de réplication. Pour plus d’informations, consultez Restauration d’une sauvegarde dans une instance de base de données Amazon RDS for MySQL.

Pour exporter des données vers une instance de MySQL extérieure à Amazon RDS, appelez mysql.rds_start_replication et mysql.rds_stop_replication sur le réplica en lecture pour contrôler certaines actions de réplication, telles que la purge des journaux binaires. Pour plus d’informations, consultez Exportation de données à partir d'une instance DB MySQL grâce à la réplication.

Vous pouvez aussi appeler mysql.rds_start_replication sur le réplica en lecture pour redémarrer un processus de réplication que vous avez précédemment arrêté en appelant mysql.rds_stop_replication. Pour plus d’informations, consultez Utilisation des réplicas en lecture d’instance de base de données.

mysql.rds_start_replication_until

Lance la réplication à partir d'une instance de base de données RDS pour MySQL et arrête la réplication à la position spécifiée dans le fichier journal binaire.

Syntaxe

CALL mysql.rds_start_replication_until ( replication_log_file , replication_stop_point );

Paramètres

replication_log_file

Nom du journal binaire sur l’instance de base de données source qui contient les informations de réplication.

replication_stop_point

Position dans le journal binaire replication_log_file à laquelle la réplication s’arrêtera.

Notes d’utilisation

L'utilisateur principal doit exécuter la procédure mysql.rds_start_replication_until.

La procédure mysql.rds_start_replication_until est disponible dans les versions de RDS for MySQL suivantes :

  • Toutes les versions RDS for MySQL 8.4

  • MySQL 8.0.26 et versions 8.0 ultérieures

  • Toutes les versions 5.7

Vous pouvez utiliser cette procédure avec la réplication retardée pour la reprise après sinistre. Si vous avez configuré la réplication retardée, vous pouvez utiliser cette procédure pour restaurer par progression les modifications dans un réplica en lecture retardé au moment précédant un sinistre. Une fois que cette procédure a arrêté la réplication, vous pouvez promouvoir le réplica en lecture pour qu'il devienne la nouvelle instance de base de données principale, en utilisant les instructions figurant dans Promotion d'un réplica en lecture en instance de bases de données autonome.

Vous pouvez configurer la réplication retardée en utilisant les procédures stockées suivantes :

Le nom de fichier spécifié pour le paramètre replication_log_file doit correspondre au nom du fichier binlog de l'instance de base de données source.

Lorsque le paramètre replication_stop_point spécifie une position d'arrêt survenant dans le passé, la réplication est arrêtée immédiatement.

Exemples

L'exemple suivant lance la réplication et réplique les modifications jusqu'à ce qu'il atteigne la position 120 dans le fichier journal binaire mysql-bin-changelog.000777.

call mysql.rds_start_replication_until( 'mysql-bin-changelog.000777', 120);

mysql.rds_stop_replication

Arrête la réplication à partir d'une instance de base de données MySQL.

Syntaxe

CALL mysql.rds_stop_replication;

Notes d’utilisation

L'utilisateur principal doit exécuter la procédure mysql.rds_stop_replication.

Si vous configurez la réplication pour importer des données à partir d'une instance de MySQL s'exécutant à l'extérieur d'Amazon RDS, vous appelez mysql.rds_stop_replication sur le réplica en lecture pour arrêter le processus de réplication après que l'importation soit terminée. Pour plus d’informations, consultez Restauration d’une sauvegarde dans une instance de base de données Amazon RDS for MySQL.

Si vous configurez la réplication pour exporter les données vers une instance de MySQL extérieure à Amazon RDS, vous appelez mysql.rds_start_replication et mysql.rds_stop_replication sur le réplica en lecture pour contrôler certaines actions de réplication, telles que la purge des journaux binaires. Pour plus d’informations, consultez Exportation de données à partir d'une instance DB MySQL grâce à la réplication.

Vous pouvez aussi utiliser mysql.rds_stop_replication pour arrêter la réplication entre deux instances de base de données Amazon RDS. Vous arrêtez généralement la réplication pour exécuter une longue opération sur le réplica en lecture, comme la création d'un index volumineux sur le réplica en lecture. Vous pouvez redémarrer tout processus de réplication que vous avez arrêté en appelant mysql.rds_start_replication sur le réplica en lecture. Pour plus d’informations, consultez Utilisation des réplicas en lecture d’instance de base de données.