`
zhengdl126
  • 浏览: 2538678 次
  • 性别: 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主从同步Last_IO_Errno:1236错误解决方法

    Mysql主从同步的Last_IO_Errno:1236错误是什么原因呢,我们要如何来解决这个问题呢?下面和小编一起来看看关于此问题的记录与解决办法。 [removed]ec(2);[removed] 从服务器错误代码: Last_IO_Errno: 1236 Last...

    MySQL主从配置完整步骤资料

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

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

    - 再次查看主从复制状态,问题得到解决。 #### 四、MyCAT环境搭建 ##### 4.1 安装与配置 **步骤1:下载并解压Mycat最新版本** - **版本**:server-1.6-RELEASE-20161028204710-win **步骤2:环境变量配置** -...

    ruby运行出错汇总2 -证书出错-ruby SSL_connect returned=1 errno=0 state=SSLv3 read server ce

    NULL 博文链接:https://angelguo.iteye.com/blog/2282002

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

    为了实现高可用性和负载均衡,常常采用MySQL的主从复制模式。此外,结合MyCAT这一开源分布式数据库中间件,可以进一步提升系统的稳定性和性能。本文将详细介绍在Windows环境下如何配置MySQL的主从复制以及如何部署...

    telnet_clinet.zip

    server:server.c gcc $^ -o $@ client:client.c gcc $^ -o $@ 1 服务端命令./server 【1234】 , 其中123是端口可以设置为其他值。 2 客户端命令./clinet 【服务端的IP地址】【1234】,我的IP地址是192.168.1.105...

    MySQL复制出错 Last_SQL_Errno:1146的解决方法

    背景:我们在做数据迁移或者拆分的时候,使用Tablespace transcation 这种解决方案时,很有可能就会遇到 从库复制出错,报: Last_SQL_Errno: 1146 那么具体错误内容可能会有如下: Last_SQL_Error: Error ‘Table ...

    r40_tinav2.1_最终验证通过_使用CB-S来验证OV5640有横条纹fpscamera+SPI2.0成功_20171114_1443没有外层目录.7z

    %s\n",strerror(errno)); goto quit; } cap->status = OFF; cap->cmd = COMMAND_UNUSED; capture_quit(capture); pthread_mutex_unlock(mutex); return 2; } if(cap->status == OFF) { pthread_mutex_...

    mysql_include.rar_mysql include_mysql_include_mysql_time.h_mysql

    3. `mysql_include`目录:通常,这个目录包含了所有必要的头文件,如`mysql.h`,这是主入口点,定义了大部分的MySQL C API函数,如`mysql_init`(初始化MySQL连接)、`mysql_real_connect`(建立到服务器的连接)、`...

    php connect to mysql.rar_MYSQL_connect

    标题"php connect to mysql.rar_MYSQL_connect"暗示了这是一个关于如何使用PHP连接到MySQL数据库的教程或代码示例。描述中提到,“With this script you can connect the php with the MySQL database.”确认了这...

    MySQL_C_API.rar_API_mysql_doc_mysql api_mysql c语言

    本资源“MySQL_C_API.rar_API_mysql_doc_mysql api_mysql c语言”包含了关于MySQL C API的详细文档,对于进行C语言编程并与MySQL数据库集成的开发者来说,是非常宝贵的参考资料。 在MySQL的C API中,主要包含以下几...

    Shell脚本实现监控MySQL主从同步

    9. **脚本的保存与执行**:脚本需要保存在一个文件中,例如Check_Mysql_Synchronization.sh,并通过chmod命令给脚本文件赋予执行权限。之后可以使用/etc/init.d/目录下的服务启动脚本来启动或停止定时任务。 10. **...

    linux_mysql.rar_c mysql linux_linux mysql_linux mysql_linux m

    而在"linux_mysql"文件中,可能是具体的C语言源代码或者库文件,用于演示如何在Linux环境下使用C语言与MySQL数据库进行交互。 在实际开发中,开发者还应关注性能优化,例如通过预编译的语句(prepared statements)...

    Mysql 1864 主从错误解决方法

    MySQL 1864错误是主从复制架构中常见的一个问题,通常与多线程复制功能有关。当从库尝试从主库同步数据时,会因为某些配置不当或者数据包过大而导致复制失败。本文针对Mysql 1864错误提供了一种解决方案。 首先,...

Global site tag (gtag.js) - Google Analytics