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 SLAVE 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 SLAVE 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 SLAVE STATUS\G sur le réplica en lecture retourne le résultat suivant :

*************************** 1. row *************************** Slave_IO_State: Master_Host: myhost.XXXXXXXXXXXXXXX.rr-rrrr-1.rds.amazonaws.com Master_User: MasterUser Master_Port: 3306 Connect_Retry: 10 Master_Log_File: mysql-bin-changelog.012345 Read_Master_Log_Pos: 1219393 Relay_Log_File: relaylog.012340 Relay_Log_Pos: 30223388 Relay_Master_Log_File: mysql-bin-changelog.012345 Slave_IO_Running: No Slave_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_Master_Log_Pos: 30223232 Relay_Log_Space: 5248928866 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: NULL Master_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: Master_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);