背景:

  项目新上线一个月,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. Notepad++提升工作效率小技巧

    前言 简单的提升工具效率需求可以借助Notepad编辑器实现.以前也用Python/Shell开发过本文中提到的需求,现在发现其实没有必要.本文介绍一些工作中常见的可以通过"Notepad+ ...

  2. cookie、sessionSttorage、localStory区别

    cookie.sessionSttorage.localStory都是在客户端以键值对存储的存储机制,并且只能将值存储为字符   cookie localStorage  sessionStorage ...

  3. 20140115-SqlHelper为什么是静态的

    为什么SqlHelper(或工具类)是静态的? 静态构造函数仅调用一次(即只是在程序生命周期中实例一次),在程序驻留的应用程序域的生存期内,静态类一直保留在内存中 这样可以减少每次使用的实例过程,就是 ...

  4. SQL SERVER 活动监视-sys.dm_exec_requests

    sys.dm_exec_requests (Transact-SQL)应用: 针对 SQL Server 内正在执行的每个请求返回一行.sys.dm_exec_connections.sys.dm_e ...

  5. [leetcode] 120. Triangle (Medium)

    原题 思路: dp,从下往上依次取得最小的,取到最上面的,就是一条最小的路径. class Solution { public: int minimumTotal(vector<vector&l ...

  6. Kafka学习(三)-------- Kafka核心之Cosumer

    了解了什么是kafka( https://www.cnblogs.com/tree1123/p/11226880.html)以后 学习核心api之消费者,kafka的消费者经过几次版本变化,特别容易混 ...

  7. Web网站工作原理解析

    Web的工作原理   Web采用的是客户机--服务器架构(Client--Server model),如下图所示,其中客户端(Client)可以通过网络连接访问另一台计算机的资源或服务,而提供资源或服 ...

  8. junit的Test不能使用,报错信息:Test is not an annotation type

    在使用junit的Test做测试时,注解@Test报错”Test is not an annotation type”,发现是因为测试类的类名命名为了Test,所以导致错误. 测试类类名不能直接命名为 ...

  9. React躬行记(11)——Redux基础

    Redux是一个可预测的状态容器,不但融合了函数式编程思想,还严格遵循了单向数据流的理念.Redux继承了Flux的架构思想,并在此基础上进行了精简.优化和扩展,力求用最少的API完成最主要的功能,它 ...

  10. Mysql 学校信息管理系统

    1.创建数据库语句: #创建数据库 CREATE DATABASE `schoolDB`; USE `schoolDB`; #创建学生表 CREATE TABLE `student`( `sid` I ...