Last_SQL_Errno: 1062:

Last_Error: Error 'Duplicate entry '212' for key 'PRIMARY'' on query. Default database: 'iuc'. Query: '/* insert com.gionee.iuc.entity.main.Module */ insert into security_module (description, dtype, name, parent_id, priority, sn, sysid, type, url) values ('',
'MENU', '评论管理', 198, 99, 'commentMng', 198, 'o', '/')'

在show slave status\G时,提示了如上的错误,并且:Slave_SQL_Running: No  、Seconds_Behind_Master: NULL(这个参数表示与主库的同步还有多少,如果与主库是同步的应该是0),这是因为主库那边有error,从库这边就application不了,有一个参数可以设置从库跳过这些错误:sql_slave_skip_counter,这个参数正常情况下设置为1不会出问题,表示跳过1个事务,如果在运行中的主从复制,sql_slave_skip_counter参数值是默认的0,这时候主库又有大量的报错,这个时候可以,先stop
slave , 再

set global sql_slave_skip_counter=1;然后重新change master,不过master_log_pos要为主库的最新值,不能跟初始设置主从那样设为0,再启动slave,在show salve satatus就正常了,下次再遇到主库有大量错误的情况下是不是会一一跳过,就要看后续观察。以下是网上关于sql_slave_skip_counter的解释。

之前一直以为我们设置sql_slave_skip_counter=1时我们是跳过当前事务复制出错的日志,看完淘宝丁奇大师的blog后 顿时明白了其真正含义,以下为转载丁奇blog: http://dinglin.iteye.com/blog/1236330

背景知识1:

    在主从库维护中,有时候需要跳过某个无法执行的命令,需要在slave处于stop状态下,执行 set global sql_slave_skip_counter=N以跳过命令。常用的且不易用错的是N=1的情况,但N>1时,则不那么顾名思义,本文详细介绍N的意义,及使用注意事项。

    背景知识2:

    MySQL从库从主库上复制binlog文件内容到本地执行。在binlog上命令以event的形式存在,并非一个命令对应一个event。以一个insert语句为例(引擎InnoDB、binglog_format=statement), 在binlog中实际上有三个event,分别为begin\insert\commit 。 命令类型都是Query_log_event.

而set global sql_slave_skip_counter=N的意思,即为在start slave时,从当前位置起,跳过N个event。每跳过一个event,则N--.

    与实际情况不符?

    看到这里有同学就会问,这是有问题的。如果当前的执行位置是某个insert语句开头,那使用 N=1实际上是从begin\insert\commit的第二个开始执行,这个insert语句还是不能被跳过?

实际上这里还有两个策略:

1、若N=1且当前event为BEGIN, 则N不变,跳过当前event继续。

2、若N=1且当前event处于一个事务之内(BEGIN之后,COMMIT之前),则N不变,跳过当前event继续。

说明:其实上面两个策略合起来就是一句话,当N=1时,会连续跳过若干个event,直到当前所在的事务结束。

当然如果N>1,则每跳过一个event都要N--.

    命令举例:

    所以我们平时最常用的N=1的情况,都是下一个事务

假设某个Pos之后执行如下命令( 引擎InnoDB、binglog_format=statement),

insert into t values(x1);

begin;

insert into t values(x2);

insert into t values(x3);

commit;

insert into t values(x4);

你的从库stop在Pos上,假设你要跳过前面几个命令直接执行插入x4的操作,则你的N设置为 4或5或6或7均可。(X1语句为3个event)

其他说明:

上面举例中都特别说明了在innodb引擎和statement模式下。其他情况区别如下:

1、若引擎为myisam(等不支持事务的引擎),且在statement下,则binlog中不会有begin和commit,每个命令都是一个event;

2、row模式的binlog里,一个insert语句实际上是两个event(Table_map_event和 Row_log_event), 计算时应与statement不同。

3、在row模式下,不论引擎是否支持事务,一个insert语句都会加上BEGIN和commit,也即变成4个event。

4、基于InnoDB引擎表的insert/delete/update操作都有显式样的BEGIN /COMMIT.

上面举的这个例子中,若为row模式,则要直接执行X4语句需要设置的N为 5~10均可。

   小结:

   1、set global sql_slave_skip_counter=N中的N是指跳过N个event

2、最好记的是N被设置为1时,效果跳过下一个事务

3、跳过第N个event后,位置若刚好落在一个事务内部,则会跳过这整个事务

4、一个insert/update/delete不一定只对应一个event,由引擎和日志格式决定

Last_SQL_Errno: 1062的更多相关文章

  1. Mysql主从库同步错误:1062 Error 'Duplicate entry '1438019'

    mysql主从库同步错误:1062 Error 'Duplicate entry '1438019' for key 'PRIMARY'' on query mysql主从库在同步时会发生1062 L ...

  2. 【转】如何使用slave_exec_mode优雅的跳过1032 1062的复制错误

    今天线上的主从复制发生1062的错误,使用sql_slave_skip_counter跳过之后,由于后面的事务需要对刚刚的数据进行update,后续造成了新的1032的错误. 后来,无意中发现还有更好 ...

  3. Last_IO_Errno: 1062

    主键冲突的错误 1062   模拟错误:   在主库上操作: create table test100(id int not null,name varchar(20),primary key(id) ...

  4. 从show slave status 中1062错误提示信息找到binlog的SQL

    mysql> show slave status\G *************************** 1. row *************************** Slave_I ...

  5. MySQL Last_SQL_Errno: 1062----经典错误,主键冲突

    一.基础信息 1. Centos7.4 2.MySQL 5.7.21 3.基于gtid的复制 二.异常描述 误把从节点当成主节点插入一条数据,同一条数据在主.从节点插入都进行了一次插入操作,导致主键冲 ...

  6. 1062 Error 'Duplicate entry '1438019' for key 'PRIMARY'' on query

    mysql主从库同步错误:1062 Error 'Duplicate entry '1438019' for key 'PRIMARY'' on querymysql主从库在同步时会发生1062 La ...

  7. mysql8.0.17复制搭建及其gtid的1062和1032异常

    mysql8.0.17复制搭建及其gtid的1062和1032异常 参考资料: https://blog.csdn.net/wzy0623/article/details/91982743https: ...

  8. MySQL 5.7 Replication 相关新功能说明

    背景: MySQL5.7在主从复制上面相对之前版本多了一些新特性,包括多源复制.基于组提交的并行复制.在线修改Replication Filter.GTID增强.半同步复制增强等.因为都是和复制相关, ...

  9. zabbix3.0.4监控mysql主从同步

    zabbix3.0.4监控mysql主从同步 1.监控mysql主从同步原理: 执行一个命令 mysql -u zabbix -pzabbix -e 'show slave status\G' 我们在 ...

随机推荐

  1. 最好的 Xcode 自动生成版本号技术

    在 bloglovin ,我们使用自动生成版本号来设置Xcode,使当前的版本号为在Git活跃的分支上 的提交数.它一直正常工作着,但我们的技术也不是一帆风顺的. 糟糕的老方法 我们使用的技术是来自一 ...

  2. Python日期字符串比较

    作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 需要用python的脚本来快速检测一个文件内的二个时间日期字符串的大小,其实实现很简单,首先一些 ...

  3. 独立开发一个App是一种怎样的体验?

    (本文原文是我在知乎上写的一篇回答:独立开发一个 App 是一种怎样的体验?) UWP业余开发者表示,非常愿意做一股清流.在喧闹无比的iOS和Android平台,为了给应用造势,太多人费尽心思,勾心斗 ...

  4. OpenStack之Neutron网络服务(一)

    1.Neutron概要 OpenStack网络服务提供了一个API接口,允许用户在云上设置和定义网络连接和地址.这个网络服务的项目代码名称是Neutron.OpenStack网络处理虚拟设备的创建和管 ...

  5. 《Java程序设计》 第2周学习总结

    20145318 <Java程序设计>第2周学习总结 教材学习内容总结 short,2字节:int,4字节:long,8字节:byte,1字节:float,4字节:double,8字节:c ...

  6. z-albert之开启博文之路

    其实注册博客园已经蛮久的了,一直都只是停留在看,却没有自己动手一篇属于自己的技术博文.之所以以前一直没写,以前没有工作,一直都是小白.然而今天为什么感写了呢,并不是自己比以前懂得多多少,而是希望将自己 ...

  7. Live Score FAQ

    Q: Why doesn't the selected game go to top? A: The game which include your favorite team will be alw ...

  8. bat(续七)-for语句(循环结构)

    for语句(循环结构) for语句可以实现类似于C语言里面的循环结构,当然for语句的功能要更强大一点,通过不同的开关可以实现更多的功能.for语句有多个开关,不同开关将会实现不同的功能.   1.无 ...

  9. Spring Container的扩展点

    转自: http://blog.csdn.net/kkdelta/article/details/5488430 Spring在解析完配置文件后,会调用一些callback方法,使用Spring的开发 ...

  10. javascript的函数,定义

    函数 function       A               ()          { }函数体开头    函数名    传入的参数     方法 <button onclick=&qu ...