共计 1686 个字符,预计需要花费 5 分钟才能阅读完成。
MySQL 断电出现 Error 1236 该怎么办,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面丸趣 TV 小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
今天几台 MySQL 服务器突然停电,重启后复制无法启动,总是报如下错误:
080922 10:29:01 [Note] Slave SQL thread initialized, starting replication in log mysql-bin.000778 at position 2874108, relay log
./relay-bin.003287 position: 2874245
080922 10:29:01 [Note] Slave I/O thread: connected to master replication@192.168.0.10:3306 , replication started in log mysql-b
in.000778 at position 2874108
080922 10:29:01 [ERROR] Error reading packet from server: Client requested master to start replication from impossible position (se
rver_errno=1236)
080922 10:29:01 [ERROR] Got fatal error 1236: Client requested master to start replication from impossible position from master wh
en reading data from binary log
[@more@]
为什么会报 impossible position 呢?打开 mysql-bin.000778 看看。
mysqlbinlog mysql-bin.000778 log.sql
tail -f log.sql
# at 2871574
#080922 10:20:27 server id 2 end_log_pos 2871601 Xid = 2516638
COMMIT/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/
最后一个 position 是 2871574,而从库要从 2874108 开始,难怪报 impossible position,难道是断电时有部分 log 在缓存中还没来得及写入 binglog?无论如何先恢复再说吧
stop slave;
CHANGE MASTER TO
MASTER_LOG_FILE= mysql-bin.000778 ,
MASTER_LOG_POS=2871574;
start slave;
show slave statusG
同步正常。。
后来查看主库的启动日志中这样一段
InnoDB: Last MySQL binlog file position 0 2874108, file name ./mysql-bin.000778
080922 10:22:09 InnoDB: Started; log sequence number 6 2534366248
080922 10:22:09 [Note] Recovering after a crash using mysql-bin
080922 10:22:09 [Note] Starting crash recovery…
080922 10:22:09 [Note] Crash recovery finished.
080922 10:22:09 [Note] /usr/sbin/mysqld: ready for connections.
这里 Last MySQL binlog file position 0 2874108 也是错误的,这个信息到底是哪里来的呢?为什么会这样呢?不明白。
为了保证以后 binglog 及时写入,将主库 sync_binlog 变量设置 1。
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注丸趣 TV 行业资讯频道,感谢您对丸趣 TV 的支持。