Configuration, démarrage et arrêt de la réplication du journal binaire (binlog) - Amazon Relational Database Service

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émarrage et arrêt de la réplication du journal binaire (binlog)

Les procédures stockées suivantes contrôlent la manière dont les transactions sont répliquées depuis une base de données externe vers RDS for MySQL, ou depuis RDS for My SQL vers une base de données externe.

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.

Note

Les versions précédentes de My SQL utilisaient à la SHOW SLAVE STATUS place deSHOW REPLICA STATUS. Si vous utilisez une SQL version My antérieure à la version 8.0.23, utilisez. SHOW SLAVE STATUS

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 réduire les performances. Pour de plus amples informations, veuillez consulter Résolution d'un problème lié à SQL la réplique My read.

Exemples

Supposons que la réplication échoue sur une RDS réplique de My SQL read. 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);
Note

Les versions précédentes de My SQL utilisaient à la SHOW SLAVE STATUS place deSHOW REPLICA STATUS. Si vous utilisez une SQL version My antérieure à la version 8.0.23, utilisez. SHOW SLAVE STATUS

Reconfigure une RDS instance DB afin qu'elle ne soit plus une réplique en lecture d'une instance de My SQL exécutée en dehors 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 de plus amples informations sur la modification des paramètres d'instance, veuillez consulter Modification des paramètres d'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 My SQL DB pour être supprimée en tant que réplique en lecture d'une SQL instance My exécutée en externe à AmazonRDS.

Note

Nous vous recommandons d'utiliser des répliques de lecture pour gérer la réplication entre deux instances Amazon RDS DB lorsque cela est 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 des topologies de réplication plus complexes entre les instances Amazon RDS DB. Nous proposons ces procédures stockées principalement pour permettre la réplication avec My SQL instances exécutées en dehors d'AmazonRDS. Pour plus d'informations sur la gestion de la réplication entre les instances Amazon RDS DB, consultezUtilisation 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 depuis une instance de My SQL exécutée en dehors d'AmazonRDS, consultezConfiguration d'une réplication de position de fichier journal binaire avec une instance source externe.

Configure une RDS instance My SQL DB comme une réplique en lecture d'une instance de My SQL exécutée en dehors d'AmazonRDS.

Important

Pour exécuter cette procédure, autocommit doit être activé. Pour l'activer, définissez le paramètre autocommit sur 1. Pour de plus amples informations sur la modification des paramètres d'instance, veuillez consulter Modification des paramètres d'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 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

Le nom d'hôte ou l'adresse IP de l'SQLinstance My exécutée en dehors d'Amazon RDS pour devenir l'instance de base de données source.

host_port

Port utilisé par l'SQLinstance My exécutée en externe à Amazon RDS pour être configurée en tant qu'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 exposé parSSH.

replication_user_name

L'identifiant REPLICATION CLIENT et les REPLICATION SLAVE autorisations d'un utilisateur doté de l'SQLinstance My exécutée en dehors d'AmazonRDS. 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 qui indique si le chiffrement Secure Socket Layer (SSL) est utilisé sur la connexion de réplication. 1 indique d'utiliser le SSL chiffrement, 0 indique de ne pas utiliser de chiffrement. 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 My SQL DB pour être configurée en tant que réplique en lecture d'une SQL instance My exécutée en externe à AmazonRDS.

Avant d'exécutermysql.rds_set_external_master, vous devez configurer l'instance de My SQL running external RDS to Amazon comme instance de base de données source. Pour vous connecter à l'SQLinstance My exécutée en externe à AmazonRDS, vous devez spécifier replication_user_name des replication_user_password valeurs indiquant un utilisateur de réplication REPLICATION SLAVE disposant REPLICATION CLIENT d'autorisations sur l'instance externe de MySQL.

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

    Mon SQL 5,7

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

    Mon SQL 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 REPLICATION CLIENT des REPLICATION SLAVE privilèges à 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.

    Mon SQL 5,7

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

    Mon SQL 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 pour qu'elle utilise SSL des connexions.

Note

Nous vous recommandons d'utiliser des répliques de lecture pour gérer la réplication entre deux instances Amazon RDS DB lorsque cela est 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 des topologies de réplication plus complexes entre les instances Amazon RDS DB. Nous proposons ces procédures stockées principalement pour permettre la réplication avec My SQL instances exécutées en dehors d'AmazonRDS. Pour plus d'informations sur la gestion de la réplication entre les instances Amazon RDS DB, consultezUtilisation 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 Amazon RDS DB en tant que réplique en lecture, vous pouvez faire appel mysql.rds_start_replication à la réplique en lecture pour démarrer le processus de réplication. Vous pouvez appeler pour supprimer la configuration du réplica en lecture.

Lorsqu'il mysql.rds_set_external_master est appelé, Amazon RDS enregistre l'heure, l'utilisateur et une action set master dans les mysql.rds_replication_status tables mysql.rds_history et.

Exemples

Lorsqu'elle est exécutée sur une instance My SQL DB, l'exemple suivant configure l'instance DB comme une réplique en lecture d'une instance de My SQL exécutée en externe à AmazonRDS.

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

mysql.rds_set_external_master_with_auto_position

Configure une instance RDS for My SQL DB comme une réplique en lecture d'une instance de My SQL exécutée en dehors d'AmazonRDS. Cette procédure configure également la réplication différée et la réplication en fonction des identificateurs de transaction globaux ()GTIDs.

Important

Pour exécuter cette procédure, autocommit doit être activé. Pour l'activer, définissez le paramètre autocommit sur 1. Pour de plus amples informations sur la modification des paramètres d'instance, veuillez consulter Modification des paramètres d'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

Le nom d'hôte ou l'adresse IP de l'SQLinstance My exécutée en dehors d'Amazon RDS pour devenir l'instance de base de données source.

host_port

Port utilisé par l'SQLinstance My exécutée en externe à Amazon RDS pour être configurée en tant qu'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 exposé parSSH.

replication_user_name

L'identifiant REPLICATION CLIENT et les REPLICATION SLAVE autorisations d'un utilisateur doté de l'SQLinstance My exécutée en dehors d'AmazonRDS. 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 qui indique si le chiffrement Secure Socket Layer (SSL) est utilisé sur la connexion de réplication. 1 indique d'utiliser le SSL chiffrement, 0 indique de ne pas utiliser de chiffrement. 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 My SQL DB pour être configurée en tant que réplique en lecture d'une SQL instance My exécutée en externe à AmazonRDS.

Cette procédure est prise en charge RDS pour toutes les versions de My SQL 5.7, ainsi que RDS pour les versions 8.0 de My SQL 8.0.26 et supérieures.

Avant d'exécutermysql.rds_set_external_master_with_auto_position, vous devez configurer l'instance de My SQL running external RDS to Amazon comme instance de base de données source. Pour vous connecter à l'SQLinstance My exécutée en externe à AmazonRDS, vous devez spécifier des valeurs pour replication_user_name etreplication_user_password. Ces valeurs doivent indiquer un utilisateur de réplication REPLICATION SLAVE disposant REPLICATION CLIENT d'autorisations sur l'instance externe de MySQL.

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

    CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'SomePassW0rd'
  2. Sur l'instance externe de MySQL, accordez REPLICATION CLIENT des REPLICATION SLAVE privilèges à 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 de plus amples informations, veuillez consulter Configuration d'une réplication de position de fichier journal binaire avec une instance source externe.

Note

Nous vous recommandons d'utiliser des répliques de lecture pour gérer la réplication entre deux instances Amazon RDS DB lorsque cela est 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 des topologies de réplication plus complexes entre les instances Amazon RDS DB. Nous proposons ces procédures stockées principalement pour permettre la réplication avec My SQL instances exécutées en dehors d'AmazonRDS. Pour plus d'informations sur la gestion de la réplication entre les instances Amazon RDS DB, consultezUtilisation des réplicas en lecture d'instance de base de données.

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

Après avoir appelé mysql.rds_set_external_master_with_auto_position pour configurer une instance Amazon RDS DB en tant que réplique en lecture, vous pouvez faire appel mysql.rds_start_replication à la réplique en lecture pour démarrer le processus de réplication. Vous pouvez appeler pour supprimer la configuration du réplica en lecture.

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

Pour la reprise après sinistre, vous pouvez utiliser cette procédure avec la procédure stockée ou . 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 mysql.rds_rds_start_replication_until_gtid cette procédure, la réplication GTID basée doit être activée. Pour ignorer une GTID transaction spécifique connue pour provoquer un sinistre, vous pouvez utiliser la procédure stockée. Pour plus d'informations sur l'utilisation de la réplication GTID basée, consultezUtilisation de GTID la réplication basée.

Exemples

Lorsqu'elle est exécutée sur une instance My SQL DB, l'exemple suivant configure l'instance DB comme une réplique en lecture d'une instance de My SQL exécutée en externe à AmazonRDS. Il définit le délai de réplication minimal à une heure (3 600 secondes) sur l'instance My SQL DB. Une modification apportée à l'instance de base de données My SQL source exécutée en externe à Amazon RDS n'est pas appliquée à la réplique lue de l'instance My SQL DB pendant au moins une heure.

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

mysql.rds_set_external_master_with_delay

Configure une instance RDS for My SQL DB comme une réplique en lecture d'une instance de My SQL exécutée en dehors d'Amazon RDS et configure la réplication différée.

Important

Pour exécuter cette procédure, autocommit doit être activé. Pour l'activer, définissez le paramètre autocommit sur 1. Pour de plus amples informations sur la modification des paramètres d'instance, veuillez consulter Modification des paramètres d'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

Le nom d'hôte ou l'adresse IP de l'SQLinstance My exécutée en dehors d'Amazon RDS qui deviendra l'instance de base de données source.

host_port

Port utilisé par l'SQLinstance My exécutée en externe à Amazon RDS pour être configurée en tant qu'instance de base de données source. Si votre configuration réseau inclut une réplication de SSH port qui convertit le numéro de port, spécifiez le numéro de port exposé parSSH.

replication_user_name

L'identifiant REPLICATION CLIENT et les REPLICATION SLAVE autorisations d'un utilisateur doté de l'SQLinstance My exécutée en dehors d'AmazonRDS. 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 qui indique si le chiffrement Secure Socket Layer (SSL) est utilisé sur la connexion de réplication. 1 indique d'utiliser le SSL chiffrement, 0 indique de ne pas utiliser de chiffrement. 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 My SQL DB pour être configurée en tant que réplique en lecture d'une SQL instance My exécutée en externe à AmazonRDS.

Avant d'exécutermysql.rds_set_external_master_with_delay, vous devez configurer l'instance de My SQL running external RDS to Amazon comme instance de base de données source. Pour vous connecter à l'SQLinstance My exécutée en externe à AmazonRDS, vous devez spécifier des valeurs pour replication_user_name etreplication_user_password. Ces valeurs doivent indiquer un utilisateur de réplication REPLICATION SLAVE disposant REPLICATION CLIENT d'autorisations sur l'instance externe de MySQL.

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

    CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'SomePassW0rd'
  2. Sur l'instance externe de MySQL, accordez REPLICATION CLIENT des REPLICATION SLAVE privilèges à 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 de plus amples informations, veuillez consulter Configuration d'une réplication de position de fichier journal binaire avec une instance source externe.

Note

Nous vous recommandons d'utiliser des répliques de lecture pour gérer la réplication entre deux instances Amazon RDS DB lorsque cela est 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 des topologies de réplication plus complexes entre les instances Amazon RDS DB. Nous proposons ces procédures stockées principalement pour permettre la réplication avec My SQL instances exécutées en dehors d'AmazonRDS. Pour plus d'informations sur la gestion de la réplication entre les instances Amazon RDS DB, consultezUtilisation 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 Amazon RDS DB en tant que réplique en lecture, vous pouvez faire appel mysql.rds_start_replication à la réplique en lecture pour démarrer le processus de réplication. Vous pouvez appeler pour supprimer la configuration du réplica en lecture.

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

Pour la reprise après sinistre, vous pouvez utiliser cette procédure avec la procédure stockée ou . 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 mysql.rds_rds_start_replication_until_gtid cette procédure, la réplication GTID basée doit être activée. Pour ignorer une GTID transaction spécifique connue pour provoquer un sinistre, vous pouvez utiliser la procédure stockée. Pour plus d'informations sur l'utilisation de la réplication GTID basée, consultezUtilisation de GTID la réplication basée.

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

  • Mes SQL versions 8.0.26 et supérieures 8.0

  • Toutes les versions 5.7

Exemples

Lorsqu'elle est exécutée sur une instance My SQL DB, l'exemple suivant configure l'instance DB comme une réplique en lecture d'une instance de My SQL exécutée en externe à AmazonRDS. Il définit le délai de réplication minimal à une heure (3 600 secondes) sur l'instance My SQL DB. Une modification apportée à l'instance de base de données My SQL source exécutée en externe à Amazon RDS n'est pas appliquée à la réplique lue de l'instance My SQL DB 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, 0, 3600);

mysql.rds_set_external_source_gtid_purged

Définit la variable système gtid_purged avec une GTID plage spécifiée provenant d'une source externe. La gtid_purged valeur est requise pour configurer la réplication GTID basée 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 de plus amples informations sur la modification des paramètres d'instance, veuillez consulter Modification des paramètres d'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

server_uuid

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

start_pos

Position de départ de la GTID plage à définir.

end_pos

Position finale de la GTID plage à définir.

Notes d’utilisation

La mysql.rds_set_external_source_gtid_purged procédure n'est disponible qu'avec My SQL 8.0.37 et versions 8.0 supérieures.

Appelez mysql.rds_set_external_source_gtid_purged avant d'appeler mysql.rds_set_external_master_with_auto_position oumysql.rds_set_external_source_with_auto_position_for_channel.

Avant d'appelermysql.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 le statut d'une chaîne, utilisez le formulaire SHOW REPLICA STATUS Mon SQL relevé. Pour arrêter la réplication sur un canal, appelezmysql.rds_stop_replication_for_channel.

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

  • Le server_uuid est valide.

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

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

Si l'GTIDensemble sur votre serveur externe contient plusieurs plages de valeurs, pensez à appeler la procédure plusieurs fois avec des valeurs GTID définies différentes.

Lorsque vous appelezmysql.rds_set_external_source_gtid_purged, Amazon RDS enregistre l'heure, l'utilisateur et une action de set gtid_purged dans le mysql.rds_history tableau.

Si vous ne définissez pas la gtid_purged valeur appropriée pour la sauvegarde que vous utilisez pour la réplication, des transactions peuvent être manquantes ou dupliquées pendant le processus de réplication. Procédez comme suit pour définir la gtid_purged valeur correcte.

Pour définir la valeur gtid_purged sur la réplique
  1. Déterminez le moment ou le fichier de sauvegarde spécifique à utiliser comme point de départ pour la réplication. Il peut s'agir d'une sauvegarde logique (un fichier mysqldump) ou physique (un instantané AmazonRDS).

  2. Déterminez la gtid_executed valeur. Cette valeur représente l'ensemble de tous ceux GTIDs qui ont été validés sur le serveur. Pour récupérer cette valeur, sur l'instance source, effectuez l'une des opérations suivantes :

    • Exécutez l'SQLinstruction SELECT @@GLOBAL.GTID_EXECUTED; au moment où la sauvegarde a été effectuée.

    • 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'set-gtid-purgedoption dans Ma SQL documentation.

  3. Déterminez la gtid_purged valeur à utiliser pour l'appel àmysql.rds_set_external_source_gtid_purged. La gtid_purged valeur doit inclure tous ceux GTIDs qui ont été exécutés sur l'instance source et qui ne sont plus nécessaires pour la réplication. Par conséquent, la gtid_purged valeur doit être un sous-ensemble de la gtid_executed valeur que vous avez récupérée à l'étape précédente.

    Pour déterminer la gtid_purged valeur, identifiez ceux GTIDs qui ne sont pas inclus dans la sauvegarde et qui ne sont plus nécessaires pour la réplication. Vous pouvez le faire en analysant les journaux binaires ou en utilisant un outil tel que mysqlbinlog pour trouver ceux GTIDs 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 définir la gtid_purged même gtid_executed valeur que celle du point de sauvegarde.

  4. Après avoir déterminé la gtid_purged valeur appropriée qui correspond à votre sauvegarde, appelez la procédure mysql.rds_set_external_source_gtid_purged stockée sur votre instance RDS for My SQL DB pour définir la valeur.

Exemples

Lorsqu'il est exécuté sur une instance My SQL DB, l'exemple suivant définit la GTID plage à partir d'un SQL serveur My Server externe avec les UUID 12345678-abcd-1234-efgh-123456789abc positions de 1 départ et de fin de100. La GTID valeur 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);

Définit le mode de réplication en fonction des positions du fichier journal binaire ou des identificateurs de transaction globaux (GTIDs).

Syntaxe

CALL mysql.rds_set_master_auto_position ( auto_position_mode );

Paramètres

auto_position_mode

Une valeur qui indique s'il faut utiliser la réplication de position du fichier journal ou la réplication GTID basée sur la réplication :

  • 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— Utilisez la méthode GTID de réplication basée.

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 RDS pour toutes les versions de My SQL 5.7, ainsi que RDS pour les versions 8.0 de My SQL 8.0.26 et supérieures.

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 ou . 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 mysql.rds_rds_start_replication_until_gtid cette procédure, la réplication GTID basée doit être activée. Pour ignorer une GTID transaction spécifique connue pour provoquer un sinistre, vous pouvez utiliser la procédure stockée. Pour plus d'informations sur la réplication GTID basée, consultezUtilisation de GTID la réplication basée.

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

  • Mes SQL versions 8.0.26 et supérieures 8.0

  • 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 une réplique de lecture My SQL DB.

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 existe des erreurs, exécutez la SQL SHOW REPLICA STATUS\G commande My. 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 plus d'informations sur les valeurs renvoyées, voir la SHOWREPLICASTATUSdéclaration dans la section Ma SQL documentation.

Note

Les versions précédentes de My SQL utilisaient à la SHOW SLAVE STATUS place deSHOW REPLICA STATUS. Si vous utilisez une SQL version My antérieure à la version 8.0.23, utilisez. SHOW SLAVE STATUS

Pour plus d'informations sur la résolution des erreurs de réplication avec AmazonRDS, consultezRésolution d'un problème lié à SQL la réplique My read.

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'un .

Note

Vous pouvez utiliser la procédure stockée ou RDSpour lancer la réplication à partir d'une instance My SQL DB et arrêter la réplication à l'emplacement du fichier journal binaire spécifié.

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 depuis une instance de My SQL external vers AmazonRDS, faites appel mysql.rds_start_replication à la réplique en lecture pour démarrer le processus de réplication après l'appel mysql.rds_set_external_master pour créer la configuration de réplication. Pour de plus amples informations, veuillez consulter Restauration d'une sauvegarde dans une instance My SQL DB.

Pour exporter des données vers une instance de My SQL external to AmazonRDS, appelez mysql.rds_start_replication et mysql.rds_stop_replication activez la réplique en lecture pour contrôler certaines actions de réplication, telles que la purge des journaux binaires. Pour de plus amples informations, veuillez consulter Exportation de données depuis une instance My SQL DB à l'aide de 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 de plus amples informations, veuillez consulter Utilisation des réplicas en lecture d'instance de base de données.

Lance la réplication à partir RDSd'un cluster Aurora My SQL DB d'instance et arrête la réplication à l'emplacement du fichier journal binaire spécifié.

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 mysql.rds_start_replication_until procédure est disponible dans les versions suivantes de RDS for My SQL :

  • Mes SQL versions 8.0.26 et supérieures 8.0

  • 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 My SQL DB.

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 depuis une instance de My SQL exécutée en dehors d'AmazonRDS, vous devez faire appel mysql.rds_stop_replication à la réplique en lecture pour arrêter le processus de réplication une fois l'importation terminée. Pour de plus amples informations, veuillez consulter Restauration d'une sauvegarde dans une instance My SQL DB.

Si vous configurez la réplication pour exporter des données vers une instance de My SQL external to AmazonRDS, vous devez appeler mysql.rds_start_replication et mysql.rds_stop_replication activer la réplique en lecture pour contrôler certaines actions de réplication, telles que la purge des journaux binaires. Pour de plus amples informations, veuillez consulter Exportation de données depuis une instance My SQL DB à l'aide de la réplication.

Vous pouvez également l'utiliser mysql.rds_stop_replication pour arrêter la réplication entre deux instances Amazon RDS DB. 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 de plus amples informations, veuillez consulter Utilisation des réplicas en lecture d'instance de base de données.