mysql.rds_next_master_log - Amazon Relational Database Service

mysql.rds_next_master_log

Altera a posição do log da instância de banco de dados de origem para o início do próximo log binário na instância de banco de dados de origem. Use este procedimento somente se estiver recebendo o erro 1236 de E/S de replicação em uma réplica de leitura.

Sintaxe

CALL mysql.rds_next_master_log( curr_master_log );

Parâmetros

curr_master_log

O índice do arquivo de log mestre atual. Por exemplo, se o arquivo atual dor denominado mysql-bin-changelog.012345, o índice será 12345. Para determinar o nome do arquivo de log do mestre, execute o comando SHOW REPLICA STATUS e veja o campo Master_Log_File.

nota

As versões anteriores do MySQL usavam SHOW SLAVE STATUS em vez de SHOW REPLICA STATUS. Se você estiver usando uma versão do MySQL anterior à 8.0.23, use SHOW SLAVE STATUS.

Observações de uso

O usuário mestre deve executar o procedimento mysql.rds_next_master_log.

Atenção

Chame mysql.rds_next_master_log somente se a replicação falhar após um failover de uma instância de banco de dados Multi-AZ que for a origem da replicação, e o campo Last_IO_Errno do SHOW REPLICA STATUS reportar o erro 1236 de E/S.

Chamar mysql.rds_next_master_log pode resultar em perda de dados na réplica de leitura caso as transações na instância de origem não estiverem gravadas no log binário no disco antes de ocorrer o evento de failover. Você pode reduzir a chance disto acontecer configurando os parâmetros de instância de origem sync_binlog = 1 e innodb_support_xa = 1, embora isso possa reduzir a performance. Para obter mais informações, consulte Como trabalhar com réplicas de leitura.

Exemplos

Suponha que a replicação falhe em uma réplica de leitura do Amazon RDS. A execução de SHOW REPLICA STATUS\G na réplica de leitura retorna o seguinte resultado:

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

O campo Last_IO_Errno mostra que a instância está recebendo o erro 1236 de E/S. O campo Master_Log_File mostra que o nome do arquivo é mysql-bin-changelog.012345, o que significa que o índice de arquivos de log é 12345. Para resolver o erro, chame mysql.rds_next_master_log com o seguinte parâmetro:

CALL mysql.rds_next_master_log(12345);
nota

As versões anteriores do MySQL usavam SHOW SLAVE STATUS em vez de SHOW REPLICA STATUS. Se você estiver usando uma versão do MySQL anterior à 8.0.23, use SHOW SLAVE STATUS.