`
zhengdl126
  • 浏览: 2550632 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

Mysql主从复制碰到(server_errno=1236)解决过程

阅读更多

http://blog.ly5.org/archives/165.html

 

 

今天上论坛发现新发表的帖子无法正常显示(论坛数据库采用Mysql主从复制进行读写分离方案),马上想到可能主从复制同步上出现问题,同一时间收 到同事消息说数据库的主复制出现故障重启了,这时找到事故原因主数据库重启了会导致从数据库数据复制同步上延后,过一段时间SSH到从数据库上show slave status\G;查看状态显示

     Slave_IO_Running: NO
    Slave_SQL_Running: Yes
...

           Last_Errno: 0
           Last_Error:
...
Seconds_Behind_Master: NULL

从状态信息来看数据同步没有延后也没有报任何的错误,但Slave_IO_Running: NO显示同步IO进程失败。根据以往经验会先重启一下Slave后在show slave status\G;看一下是否会恢复正常,Slave_IO_Running: NO问题还是没有解决于是查看一下Mysql的错误日志发现

090605  9:13:20 [Note] Slave SQL thread initialized, starting replication in log ‘mysql-bin.000102′ at position 1029244974, relay log ‘./xxx-relay-bin.000634′ position: 98
090605  9:13:20 [Note] Slave I/O thread: connected to master ’slave163@192.168.0.131:3306′,  replication started in log ‘mysql-bin.000102′ at position 1029244974
090605  9:13:20 [ERROR] Error reading packet from server: Client requested master to start replication from impossible position ( server_errno=1236)
090605  9:13:20 [ERROR] Got fatal error 1236: ‘Client requested master to start replication from impossible position’ from master when reading data from binary log
090605  9:13:20 [Note] Slave I/O thread exiting, read up to log ‘mysql-bin.000102′, position 1029244974
090605  9:13:52 [Note] Error reading relay log event: slave SQL thread was killed

在网上查了很多资料可能因为mysql-bin.000102日志文件中并没有1029244974这个位置,vi打开mysql- bin.000102日志文件搜索1029244974确实没有搜到内容,但为什么主数据库意外的重启会导致Slave上读取位置的错误,记得以前主数据 库也手动重启过Slave上也没有出现过这种问题还请知道的高手帮忙解答一下啊。解决方法是使用CHANGE MASTER TO命令就是让Slave跳过mysql-bin.000102日志文件1029244974这个位置直接到下一个日志文件

SLAVE STOP;
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000103', MASTER_LOG_POS=0;
SLAVE START;

但是这样如果mysql-bin.000102日志文件的内容没有同步完会导致主数据库与从数据库的内容不一致,那何不把位置向前移呢

SLAVE STOP;
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000102', MASTER_LOG_POS=1019244974;
SLAVE START;

于是试了一把果然Slave_IO_Running: YES同步成功跳过了mysql-bin.000102日志文件1029244974这个位置并继续读取下一个位置,这样从数据库也不会丢失数据和主数据 库保持数据的一致,如果my.cnf中没有加slave-skip-errors参数跳过一些错误的话,同步位置向前移会导致一些数据重新插入到表中报主 键重复错误加上参数就可以成功跳过这些错误了。

 相关参数文章:
http://www.cnscn.org/htm_data/288/0904/45920.html
http://hi.baidu.com/leechl/blog/item/b53c6ad48fe64fcc50da4b3e.html

分享到:
评论

相关推荐

    MySQL主从配置完整步骤资料

    MySQL主从配置完整步骤资料 MySQL主从配置是指将一个MySQL数据库服务器设置为主服务器,另一个服务器设置为从服务器,实现数据的实时同步。主从配置可以提高数据库的可用性和读取性能。本文将详细介绍MySQL主从配置...

    windows环境下MyCAT+mysql主从配置.pdf

    **问题1:MySQL主从同步 Slave_SQL_Running: No, Last_Errno: 1062** - **原因**:两边数据不一致,在复制同步过程中发现对方库中存在相同的主键,导致同步失败。 - **解决方法**: - 修改MySQL配置文件`/etc/my....

    windows环境下MyCAT+mysql主从配置[参照].pdf

    #### 二、MySQL主从复制配置 ##### 1. 主库配置 - **修改配置文件** - 路径:`C:\ProgramData\MySQL\MySQL Server 5.7\my.ini` - 添加以下配置: ```ini # Master Config server_id=172 log-bin=mysql-bin ...

    关于MySQL中savepoint语句使用时所出现的错误

    前几天帮同事解决一个案例,在主从复制环境下,从库上的MySQL版本号是5.5.5,遇到下面的错误: #其他非相关信息我都隐藏掉了 [(yejr@imysql.com)]> show slave status \G; Slave_IO_Running: Yes Slave_SQL_...

    mysql中一个普通ERROR 1135 (HY000)错误引发的血案

    今天接到测试人员反应,测试环境前端应用程序无连接mysql数据库,登录mysql服务器,查看错误日志,发现有如下报错: ERROR 1135 (HY000): Can’t create a new thread (errno 11);if you are not out of available ...

    IT专家做MYSQL同步时,从服务器无法连接主服务器,错误代码:2003.docx

    首先,错误代码2003通常意味着网络连接问题,具体表现为:“Can't connect to MySQL server on 'hostname' (errno: 111)”。在描述中提到,服务器A没有独立IP,而是通过端口映射提供服务,而服务器D位于内网,可能...

Global site tag (gtag.js) - Google Analytics