Sunday, December 26, 2010

Got fatal error 1236: ‘Client requested master to start replication from impossible position’ from master when reading data from binary log

Problem statement:

The below is problem I faced in a well running replication system.

Error Message :
081016 18:34:43 Error reading packet from server: Client requested master to start replication from impossible position (ser
ver_errno=1236)
081016 18:34:43 Got fatal error 1236: ‘Client requested master to start replication from impossible position’ from master when reading data from binary log
081016 18:34:43 Slave I/O thread exiting, read up to log ‘lot-bin.000065′, position 13664242
081016 18:35:04 Error reading relay log event: slave SQL thread was killed
081016 18:45:40 Slave SQL thread initialized, starting replication in log ‘lot-bin.000065′ at position 13664242, relay log’./mx5-relay-bin.000001′ position: 13664284
081016 18:45:40 Slave I/O thread: connected to master ‘replicate@10.0.4:3306′, replication started in log ‘lot-bin.
000065′ at position 13664242

Solution :
1) If the value of Read_Master_Log_Pos has a normal value, and slave asked weird position, this could be some internal bug. Now I see only a single way, but it could be difficult: if you have –log-slave-updates, use slave binary logs to find the last executed statement and it’s position in master logs, and CHANGE MASTER to that position.
2) Go onto the master execute
SHOW MASTER STATUS
Look at the output and find the log that the slave is pointing to. Look at the File size field.
Next look at the slave output from the slave reporting the issue. Look at Exec_Master_Log_Pos, is that value greater then the File Size on the master if so issue
CHANGE MASTER TO MASTER_LOG_FILE=[NEXT FILE], MASTER_LOG_POS=4;
slave start;

No comments:

Post a Comment