MYSQL主从同步时出现”Client requested master to start replication from impossible position”错误的解决方法:
这个错误是因为从服务器请求一个错误的位置而引起的.比如主服务器上的BLIN LOG里没有这个POSITION.
解决原理:
从相关的BIN LOG 里最后一个日志位置,与从服务器上的日志对比,如果LOG里最后位置比错误的位置大,那么,说明中间可能有断点,需要把从服务器的位置向前调,多试几次.
如果在LOG里最后的位置比从服务器指出的位置还小,那么只要把从服务器的位置设置成下一个LOG的最后位置就可以了.
mysqlbinlog mysql-log-bin.000112 >log.sql
tail -f log.sql
# at 568380594
#110616 3:10:16 server id 1 end_log_pos 568380757 Query thread_id=123899 exec_time=0 error_code=0
use thecheap_topshoppinguscom/*!*/;
SET TIMESTAMP=1308226216/*!*/;
DELETE FROM `thecheap_topshoppinguscom`.`zm_sessions` WHERE expiry < 1308224416
/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
发现这个位置比从服务器上的位置(568397810)还小,只要设置成下一个LOG:mysql-log-bin.000113的开始位置,然后启动SLAVE就可以了.
CHANGE MASTER TO
MASTER_LOG_FILE=’mysql-log-bin.000113′,
MASTER_LOG_POS=4;