mysql.rds_next_master_log - Amazon Relational Database Service

mysql.rds_next_master_log

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 MySQL utilisaient SHOW SLAVE STATUS à la place de SHOW REPLICA STATUS. Si vous utilisez une version MySQL antérieure à la version 8.0.23, utilisez alors 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 des 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 le basculement n'intervienne. Vous pouvez réduire la probabilité que cela se produise en configurant les paramètres de l'instance source sync_binlog = 1 et innodb_support_xa = 1, même si les performances peuvent s'en trouver réduites. Pour plus d'informations, consultez Utilisation des réplicas en lecture.

Exemples

Supposons que la réplication ait échoué sur un réplica en lecture Amazon RDS. 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 MySQL utilisaient SHOW SLAVE STATUS à la place de SHOW REPLICA STATUS. Si vous utilisez une version de MySQL antérieure à la version 8.0.23, utilisez alors SHOW SLAVE STATUS.