mysql主从复制-从库跳过异常日志点

来源:互联网

作者:佚名

时间:2015-03-08 08:39

mysql主从复制--从库跳过错误日志点 (本文转载,特此声明) 在MYSQL进行Replication的时候,有时候会由于主从端的POS点不同,导致复制的SQL进程出现错误,从而导致主从复制失败。比如在主端复制一个ID是100的到从端,而此时由于某种原因从端已经有了ID=100的

mysql主从复制--从库跳过错误日志点

(本文转载,特此声明)

在MYSQL进行Replication的时候,有时候会由于主从端的POS点不同,导致复制的SQL进程出现错误,从而导致主从复制失败。比如在主端复制一个ID是100的到从端,而此时由于某种原因从端已经有了ID=100的记录,这时进行INSERT操作的时候,就会主键重复,插入失败。这时候需要跳过这条错误。方法如下

1:停止SLAVE 服务

mysql> STOP SLAVE;

2:设置跳过的EVENT个数

mysql> SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;

3:启动SLAVE服务

mysql> START SLAVE;

下面阐述下N的意思,转帖

大家都知道,当slave出现错误时,可以通过SET GLOBAL sql_slave_skip_counter = N来跳过错误,但是这个N,又真正代表什么呢,开始时,

理解错了,以为对于事务型,N代表N个事务,而非事务型,代表一条sql 语句。后经过linuxtone曹哥指导发现,其实并不是这么回事

文档中有介绍说(http://dev.mysql.com/doc/refman/ ... e-skip-counter.html):

This statement skips the next N events from the master

即他是跳过N个events,这里最重要的是理解event的含义

在mysql中,对于sql的 binary log 他实际上是由一连串的event组成的一个组,即事务组。

我们在master上可以通过

SHOW BINLOG EVENTS 来查看一个sql里有多少个event。

通过例子来说明下,真正的event的含义:

在slave上

show slave status

Last_Errno: 1062

Last_Error: Error 'Duplicate entry '193' for key 'PRIMARY'' on query. Default database: 'ssldb'. Query: 'insert slave_no_skip1  values (193,'y10')'

Skip_Counter: 0

在 master 上,执行

mysql> SHOW BINLOG EVENTS in 'mysql-bin.000010' from 46755013;

+------------------+----------+------------+-----------+-------------+--------------------------------------------------------+

| Log_name         | Pos      | Event_type | Server_id | End_log_pos | Info                                                   |

+------------------+----------+------------+-----------+-------------+--------------------------------------------------------+

| mysql-bin.000010 | 46755013 | Query      |         1 |    46755082 | BEGIN                                                  |

1| mysql-bin.000010 | 46755082 | Query      |         1 |    46755187 | use `ssldb`; insert slave_no_skip1  values (193,'y10') |

2| mysql-bin.000010 | 46755187 | Xid        |         1 |    46755214 | COMMIT /* xid=4529451 */                               |

3| mysql-bin.000010 | 46755214 | Query      |         1 |    46755283 | BEGIN                                                  |

4| mysql-bin.000010 | 46755283 | Query      |         1 |    46755387 | use `ssldb`; insert slave_no_skip1 values (194,'y11')  |

5| mysql-bin.000010 | 46755387 | Xid        |         1 |    46755414 | COMMIT /* xid=4529452 */                               |

6| mysql-bin.000010 | 46755414 | Query      |         1 |    46755483 | BEGIN                                                  |

7| mysql-bin.000010 | 46755483 | Query      |         1 |    46755587 | use `ssldb`; insert slave_no_skip1 values (195,'y12')  |

8| mysql-bin.000010 | 46755587 | Xid        |         1 |    46755614 | COMMIT /* xid=4529453 */                               |

9| mysql-bin.000010 | 46755614 | Query      |         1 |    46755683 | BEGIN                                                  |

10| mysql-bin.000010 | 46755683 | Query      |         1 |    46755788 | use `ssldb`; insert slave_no_skip1  values (196,'y13') |

11| mysql-bin.000010 | 46755788 | Xid        |         1 |    46755815 | COMMIT /* xid=4529454 */                               |

12| mysql-bin.000010 | 46755815 | Query      |         1 |    46755884 | BEGIN                                                  |

13| mysql-bin.000010 | 46755884 | Query      |         1 |    46755989 | use `ssldb`; insert slave_no_skip1  values (197,'y14') |

14| mysql-bin.000010 | 46755989 | Xid        |         1 |    46756016 | COMMIT /* xid=4529455 */                               |

15| mysql-bin.000010 | 46756016 | Query      |         1 |    46756085 | BEGIN                                                  |

16| mysql-bin.000010 | 46756085 | Query      |         1 |    46756190 | use `ssldb`; insert slave_no_skip1  values (198,'y15') |

17| mysql-bin.000010 | 46756190 | Xid        |         1 |    46756217 | COMMIT /* xid=4529456 */                               |

18| mysql-bin.000010 | 46756217 | Query      |         1 |    46756286 | BEGIN                                                  |

19| mysql-bin.000010 | 46756286 | Query      |         1 |    46756391 | use `ssldb`; insert slave_no_skip1  values (199,'y16') |

20| mysql-bin.000010 | 46756391 | Xid        |         1 |    46756418 | COMMIT /* xid=4529457 */                               |

21| mysql-bin.000010 | 46756418 | Query      |         1 |    46756487 | BEGIN                                                  |

| mysql-bin.000010 | 46756487 | Query      |         1 |    46756592 | use `ssldb`; insert slave_no_skip1  values (190,'y17') |

| mysql-bin.000010 | 46756592 | Xid        |         1 |    46756619 | COMMIT /* xid=4529458 */                               |

+------------------+----------+------------+-----------+-------------+--------------------------------------------------------+

24 rows in set (0.00 sec)

通过错误可知,他是use `ssldb`; insert slave_no_skip1  values (193,'y10') 这条语句导致错误了

如果我们想跳到最后一条语句“use `ssldb`; insert slave_no_skip1  values (190,'y17')“的话 ,我们必须简单计算下中间有多少个event

很明显,是21,那么我们可以执行SET GLOBAL sql_slave_skip_counter =21(这里你SET GLOBAL sql_slave_skip_counter =19或者20都可以)

在slave 在次执行show slave status查看

Last_Errno: 1062

Last_Error: Error 'Duplicate entry '190' for key 'PRIMARY'' on query. Default database: 'ssldb'. Query: 'insert slave_no_skip1  values (190,'y17')'

Skip_Counter: 0

可见 他已经如我所愿,跳到use `ssldb`; insert slave_no_skip1  values (190,'y17')这里了。

mysql主从复制 跳过表_mysql主从复制-从库跳过异常日志点相关推荐

  1. mysql主从复制原理详解_MySQL主从复制没使用过?三大步骤让你从原理、业务上理解透彻...

    成长是一棵树,总是在你不知不觉的情况下快乐长大:成长是一株草,总是在你不知不觉的情况下长满大地:成长是一朵花,总是在你不知不觉的情况下开满山头. 这不,随着时间的迁移.项目网站的用户量.数据量持续上升 ...

  2. mysql slave 能写吗_MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践

    Mysql作为目前世界上使用最广泛的免费数据库,相信所有从事系统运维的工程师都一定接触过.但在实际的生产环境中,由单台Mysql作为独立的数据库是完全不能满足实际需求的,无论是在安全性,高可用性以及高 ...

  3. mysql主从复制原理 简书_mysql主从复制,从原理讲到安装配置,全干货

    0.为什么需要主从复制? 1.在业务复杂的系统中,有这么一个情景,有一句sql语句需要锁表,导致暂时不能使用读的服务,那么就很影响运行中的业务,使用主从复制,让主库负责写,从库负责读,这样,即使主库出 ...

  4. mysql读写分离和分布式_MySQL主从复制与读写分离

    MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践 Mysql作为目前世界上使用最广泛的免费数据库,相信所有从事系统运维的工程师都一定接触过.但在实际的生产环境中, ...

  5. mysql主从与读写分离_MySQL主从复制与读写分离

    MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践 Mysql作为目前世界上使用最广泛的免费数据库,相信所有从事系统运维的工程师都一定接触过.但在实际的生产环境中, ...

  6. mysql 主从宕机切换_mysql主从复制配置操作以及主从宕机切换演练

    主从复制目的: 主从服务器设置的稳健性得以提升,如果主服务器发生故障,可以把本来作为备份的从服务器提升为新的主服务器.在主从服务器上分开处理用户的请求,读的话,可以直接读取备机数据,可获得更短的响应时 ...

  7. mysql 排除另一表_MYSQL 两表 排除 重复记录

    MySQL之--查询重复记录.删除重复记录方法大全 - 冰河的专栏 - CSDN博客 https://blog.csdn.net/l1028386804/article/details/5173358 ...

  8. mysql binlog 恢复指定表_Mysql用全备恢复指定表mysqlbinlog抽取某个表的信息

    Mysql恢复到指定表 2009年05月27日 作者: 大头刚 一.从全备中提取某一个表的信息,并进行恢复 恢复使用Mysqldump工具备份的数据,有个不方便的地方,就是在恢复的时候不能指定恢复到表 ...

  9. mysql查询添加数据库表_MySQL数据库篇之表的增删改查

    主要内容: 一.表介绍 二.创建表 三.查看表结构 四.修改表结构 五.复制表 六.删除表 1️⃣ 表介绍 表相当于文件,表中的一条记录就相当于文件的一行内容,不同的是,表中的一条记录有对应的标题,称 ...

最新文章

  1. eclipse中导入web项目详细配置
  2. mysql.data.dll win10_关于Linux和Windows下部署mysql.data.dll的注册问题》
  3. pyspatialite
  4. 读书笔记《单核工作法》_5:适用xing
  5. Go获取年月第一天与最后一天 获取时间戳
  6. 多重循环控制(难点重点)
  7. python人脸照片分类_Python OpenCV 人脸识别(一)
  8. java与java ee_CapeDwarf – Java EE上的Google App Engine
  9. 算法导论13-1节习题解答
  10. LeetCode 第 26 场双周赛(363/1971,前18.4%)
  11. #35 string(缩点+动态规划)
  12. HTTP Content-Disposition Explanation [ from MDN ]
  13. Android 用户界面---拖放(Drag and Drop)(二)
  14. 古剑2计算机中丢失,小编研习win7系统玩古剑奇谭2提示计算机中丢失Vcomp100.dl的图文方法...
  15. linux下如何运行脚本程序设计,Uboot 如何运行脚本
  16. oracle中循环读出一个表的信息插入到另外一个表中
  17. 华为服务器的中国梦——给客户带来价值
  18. Linux下安装MongoDB
  19. 高级软考之——系统分析师思维导图(一)
  20. python小练习(杂七杂八)

热门文章

  1. 亿级商城计价中心 - 从容应对复杂场景价格计算
  2. 满屏的try-catch,你不瘆得慌?
  3. 2021年你不能错过的DevOps趋势
  4. 程序员到底为什么要掌握数据结构与算法?
  5. 2万长文,一文搞懂Kafka
  6. 快手EB级HDFS挑战与实践
  7. 某程序员女友抱怨:男朋友工作975,天天回家说好累,不肯亲热,倒头就睡,难怪程序员没女朋友!...
  8. 宝贝,来,讲讲spring事务有哪些坑?
  9. 携程数据库高可用架构实践
  10. 【Linux】服务器常用的操作命令