首页 > 数据库 > MySQL > 正文

MySQL Error 1236 错误解决办法

2024-07-24 12:39:17
字体:
来源:转载
供稿:网友

在一次不小心电脑突然掉电了,开机开就出来了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 

今天几台MySQL服务器突然停电,重启后复制无法启动,总是报如下错误:

  1. 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 
  2.  
  3. 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 
  4.  
  5. 080922 10:29:01 [ERROR] Error reading packet from server: Client requested master to start replication from impossible position ( se rver_errno=1236)  --Vevb.com 
  6.  
  7. 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 

为什么会报impossible position呢?打开mysql-bin.000778看看.

  1. mysqlbinlog mysql-bin.000778 > log.sql 
  2.  
  3. tail -f log.sql 
  4.  
  5. at 2871574 #080922 10:20:27 server id 2 end_log_pos 2871601 Xid = 2516638 
  6.  
  7. COMMIT/*!*/; 
  8.  
  9. DELIMITER ; 
  10.  
  11. End of log file 
  12.  
  13. ROLLBACK /* added by mysqlbinlog */; 
  14.  
  15. /*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/ 

最后一个position是2871574,而从库要从2874108开始,难怪报impossible position,难道是断电时有部分log在缓存中还没来得及写入binglog?无论如何先恢复再说吧.

  1. stop slave; 
  2.  
  3. CHANGE MASTER TO 
  4.  
  5. MASTER_LOG_FILE='mysql-bin.000778'
  6.  
  7. MASTER_LOG_POS=2871574; 
  8.  
  9. start slave; 
  10.  
  11. show slave statusG 

同步正常,后来查看主库的启动日志中这样一段:

  1. InnoDB: Last MySQL binlog file position 0 2874108, file name ./mysql-bin.000778 
  2.  
  3. 080922 10:22:09 InnoDB: Started; log sequence number 6 2534366248 
  4.  
  5. 080922 10:22:09 [Note] Recovering after a crash using mysql-bin 
  6.  
  7. 080922 10:22:09 [Note] Starting crash recovery... 
  8.  
  9. 080922 10:22:09 [Note] Crash recovery finished. 
  10.  
  11. 080922 10:22:09 [Note] /usr/sbin/mysqld: ready for connections. 

这里Last MySQL binlog file position 0 2874108也是错误的,这个信息到底是哪里来的呢?为什么会这样呢?不明白,为了保证以后binglog及时写入,将主库sync_binlog变量设置1.

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表