背景:

  项目新上线一个月,qa需要测试断电服务拉起,服务拉起成功后,发现mysql主从异常

    

  以下是发现的问题以及解决方案

问题1:

  Slave_IO_Running:  No 一方面原因是因为网络通信的问题也有可能是日志读取错误的问题。以下是日志出错问题的解决方案:

    Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file'

解决方案:

  第一步停止从机slave

 mysql> stop slave;

  到master机器执行

  mysql> show master status/G;

  可以看到:

    +-------------------+----------+--------------+----------------------------------+
    | File              | Position | Binlog_Do_DB | Binlog_Ignore_DB                                                                 |
    +-------------------+----------+--------------+----------------------------------+
    | mysqld-bin.000013 |      4 |              | information_schema,mysql |
    +-------------------+----------+--------------+----------------------------------+

  日志为mysqld-bin.000013

  主机刷新日志

 mysql> flush logs;

   因为刷新日志file的位置会+1,即File变成为:mysqld-bin.000014

  接着切换到从机

 mysql> CHANGE MASTER TO MASTER_LOG_FILE='mysqld-bin.000014',MASTER_LOG_POS=4;
 mysql> start slave;
 mysql> show slave status\G;     

 以上为解决方案,可百分之九十解决mysql 1236 error ,当然还有百分之十解决不了,还有个简单粗暴的方法

    1.从机停止slave

  mysql> stop slave;

    2.重置binlog 文件

 mysql> reset slave;

 mysql> reset master;  

    3.启动从机slave

mysql> start slave; 

问题2:

  Slave_SQL_Running:  No  1.可能是在从库进行了写操作   2.从库重启后进行了事物回滚导致和主库数据不一致

  Last_SQL_Error: Worker 3 failed executing transaction '' at master log mysql-bin.000013, end_log_pos 440267874        

   Could not execute Delete_rows event on table db_test.tbuservcbgolog; Can't find record in 'tbuservcbgolog', Error_code: 1032  

   handler error HA_ERR_KEY_NOT_FOUND; the event's master log mysql-bin.0000013, end_log_pos 440267874

解决方案: 

 方法1,忽略所有1032错误,不推荐

    更改my.cnf文件,在Replication settings下添加:

     

slave-skip-errors = 1032

 方法2,跳过上一次错误:

 mysql> stop slave ;
 mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
 mysql> start slave ;

  但是由于我们服务有好多秒级刷新的数据,所以导致跳过一个错误,又来一个错误

 方法3,利用end_log_pos还原数据,此方法需要停止master的写操作

    根据错误提示信息,用mysqlbinlog找到该条数据event SQL并逆向手动执行。如delete 改成insert。

    本例中,此事件在主服务器Master binlog中的位置是 mysql-bin.000013, end_log_pos 440267874。

    1)利用mysqlbinlog工具找出440267874的事件

      ( 可以加上参数-d, --database=name 来进一步过滤)

/usr/local/mysql-5.6.30/bin/mysqlbinlog --base64-output=decode-rows -vv mysql-bin.000013 |grep -A 20 '440267874'

或者/usr/local/mysql-5.6.30/bin/mysqlbinlog --base64-output=decode-rows -vv mysql-bin.000013 --stop-position=440267874 | tail -20

或者usr/local/mysql-5.6.30/bin/mysqlbinlog --base64-output=decode-rows -vv mysql-bin.000013 > decode.log

    将查询出来的语句进行反转执行即可,然后启动slave就ok了

  方法4,停止master的写操作后备份master数据到slave

方法5:某dba推荐方案:

可以通过修改mysql的配置项进行解决。
1.修改binlog_format,目前默认的应该是STATEMENT,可以修改为MIXED
2.修改sync_binlog=1,按照事物刷新磁盘
3.修改innodb_flush_log_at_trx_commit=1,当前系统默认可能是1
修改完之后会降低系统的性能

总而言之 1032 error 只要想办法把主从数据同步就OK了

记一次mysql主从同步因断电产生的不能同步问题 1236 1032的更多相关文章

  1. mysql主从同步因断电产生的不能同步问题

    偶尔因为断电导致mysql slave 出现复制错误“Could not parse relay log event entry” Could not parse relay log event en ...

  2. MySQL主从同步、读写分离配置步骤

    现在使用的两台服务器已经安装了MySQL,全是rpm包装的,能正常使用. 为了避免不必要的麻烦,主从服务器MySQL版本尽量保持一致; 环境:192.168.0.1 (Master) 192.168. ...

  3. MySQL主从同步那点事儿

    一.前言 关于mysql主从同步,相信大家都不陌生,随着系统应用访问量逐渐增大,单台数据库读写访问压力也随之增大,当读写访问达到一定瓶颈时,将数据库的读写效率骤然下降,甚至不可用;为了解决此类问题,通 ...

  4. 这次一定要教会你搭建Redis集群和MySQL主从同步(非Docker)

    前言 一直都想自己动手搭建一个Redis集群和MySQL的主从同步,当然不是依靠Docker的一键部署(虽然现在企业开发用的最多的是这种方式),所以本文就算是一个教程类文章吧,但在动手搭建之前,会先聊 ...

  5. MySQL主从同步、读写分离配置步骤、问题解决笔记

    MySQL主从同步.读写分离配置步骤.问题解决笔记 根据要求配置MySQL主从备份.读写分离,结合网上的文档,对搭建的步骤和出现的问题以及解决的过程做了如下笔记:       现在使用的两台服务器已经 ...

  6. 部署mysql主从同步

                                                 mysql-day06        部署mysql主从同步 案例拓扑 • 一主.一从 – 单向复制时,建议将 ...

  7. MySQL主从同步配置

    如果主从配置之前安装了云平台,请停止云平台后在进行mysql主从配置. 1. 登录master数据库,检查数据库端口防火墙设置,允许远程客户连接,如果没有,执行以下操作. 执行命令:iptables  ...

  8. MySQL主从数据库同步延迟问题解决(转)

    最近在做MySQL主从数据库同步测试,发现了一些问题,其中主从同步延迟问题是其中之一,下面内容是从网上找到的一些讲解,记录下来以便自己学习: MySQL的主从同步是一个很成熟的架构,优点为:①在从服务 ...

  9. 使用Percona Toolkit解决Mysql主从不同步问题【备忘】

    由于各种原因,mysql主从架构经常会出现数据不一致的情况出现,大致归结为如下几类 1:备库写数据 2:执行non-deterministic query 3:回滚掺杂事务表和非事务表的事务 4:bi ...

随机推荐

  1. 移动app商城UI模板(仿淘宝)

    该商城UI模板是仿照手机淘宝,实现了搜索商品-查看商品详情-加入购物车-结算的流程,共7个页面,由于没有数据库,所有页面上的数据都来自tempData.cs及tempPro.cs ,具体页面参考如下 ...

  2. 关于使用 AJax 生成Form表单,且表单提交需要验证,验证实效的解决方法

    @Ajax.ActionLink("添加", "AddUser",new AjaxOptions() {InsertionMode = InsertionMod ...

  3. 爬虫的盗亦有道Robots协议

    爬虫的规定 Robots协议 网站开发者对于网络爬虫的规范的公告,你可以不遵守可能存在法律风险,但尽量去遵守 Robots协议:在网页的根目录+robots.txt Robots协议的基本语法: #注 ...

  4. C#3.0新增功能04 扩展方法

    连载目录    [已更新最新开发文章,点击查看详细] 扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型. 扩展方法是一种特殊的静态方法,但可以像扩展类型 ...

  5. C#3.0新增功能09 LINQ 标准查询运算符 01 概述

    连载目录    [已更新最新开发文章,点击查看详细] 标准查询运算符 是组成 LINQ 模式的方法. 这些方法中的大多数都作用于序列:其中序列指其类型实现 IEnumerable<T> 接 ...

  6. [剑指offer] 3. 从头到尾打印链表

    题目描述 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 思路: 利用容器,遍历一遍加入到一个新容器里,然后反置输出. vector 用 reverse stack 则直接一个个出栈 ...

  7. Flutter学习笔记(12)--列表组件

    如需转载,请注明出处:Flutter学习笔记(12)--列表组件 在日常的产品项目需求中,经常会有列表展示类的需求,在Android中常用的做法是收集数据源,然后创建列表适配器Adapter,将数据源 ...

  8. 第二章 jQuery框架使用准备

    window常用属性: History:有关客户访问过的URL的信息 Location: 有关当前url的信息 常用方法: Confirm()将弹出一个确认对话框 open()在页面上弹出一个新的浏览 ...

  9. springcloud-熔断监控Hystrix Dashboard和Turbine

    作者:纯洁的微笑出处:http://www.ityouknow.com/ 版权归作者所有,转载请注明出处 Hystrix-dashboard是一款针对Hystrix进行实时监控的工具,通过Hystri ...

  10. 0 ElasticSearch

    注意事项 需要jdk环境1.7以上 Elasticsearch Kibana 的下载地址统一为https://www.elastic.co/downloads/ 问题排查可以登录https://dis ...