手动跳过1个或更多个事务

/* 传统点位模式复制 */
SQL>set global sql_slave_skip_counter=1;
SQL>start sql_thread;/* GTID模式复制 */
SQL>set gtid_next='e29d3917-9dbb-11e9-8b64-e4434b6e2c80:11103335-16054791';
SQL>begin;commit;
SQL>set gtid_next='AUTOMATIC';

自动连续跳过错误

若是一直报错,然则,这些报错又可以忽略可以怎么处置,此时也有许多方式,通常使用的是如下几种:

方式一:  使用pt-slave-restart工具跳过对应错误

然则使用pt-slave-restart工具跳过报错时,必须关闭多线程复制,由于工具分不清到底哪个线程复制出了问题,然后会报类似如下的报错:

Cannot skip transactions properly because GTID is enabled and slave_parallel_workers > 0.  See 'GLOBAL TRANSACTION IDS' in the tool's documentation

处置步骤为:

/*  暂停并行复制  */
SQL> set global slave_parallel_workers=0;/*  使用pt-slave-restart工具跳过错误(填写错误号)*/
pt-slave-restart  --user=root --password='Admin@123' --socket=/data/mysql3306/tmp/mysql.sock  --error-numbers=1062/* 不再报错时,再开启并行复制 */
mysql> set global slave_parallel_workers=8;

方法二:在设置文件里设置跳过指定错误

在设置文件[mysqld]项里加入参数slave-skip-errors

slave-skip-errors=1032,1062

然则,此方式存在一个致命瑕玷:该参数是静态参数,无法动态修改,需要修改设置文件后重启数据库方可生效。

幂等模式

由于手动跳过事务时,会忽略相同事务下的其他正常的SQL在从库的应用;pt-slave-restart工具需要住手多线程复制,影响从库应用速率;设置slave-skip-errors又需要重启数据库方可生效。那么有没有一种方式既不会跳过多余的SQL,又无需重启数据库也不影响从库应用SQL的速率呢?谜底是有的,也就是将slave_exec_mode参数设置为IDEMPOTENT,即幂等模式(默以为严酷模式STRICT)。

/*  在线动态修改 */
SQL > set global slave_exec_mode='IDEMPOTENT';

改为幂等模式后,可以忽略1032及1062的错误,对统一事务内的其他SQL无影响,依旧能正常执行。

附pt工具安装错误排查

percona-toolkit执行时遇到install_driver(mysql) failed: Attempt to reload DBD/mysql.pm aborted错误

执行pt-table-checksum报错如下:

[root@db ~]# pt-table-checksum S=/data/mysql/mysqldata3306/sock/mysql.sock,h=localhost

11-01T17:07:02 install_driver(mysql) failed: Attempt to reload DBD/mysql.pm aborted.

Compilation failed in require at (eval 14) line 3.

at /usr/local/bin/pt-table-checksum line 1623

而主机上已经安装了相应的软件包:

[root@db ~]# rpm -qa | grep -i mysql

perl-DBD-MySQL-4.013-3.el6.x86_64

mysql-libs-5.1.73-8.el6_8.x86_64

发现系统没有加载mysql的动态链接库:

[root@db ~]# ldconfig -p | grep mysql

那就添加一下:

[root@db ~]# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf

[root@db ~]# ldconfig

[root@db ~]# ldconfig -p | grep mysql

libmysqlclient.so.20 (libc6,x86-64) => /usr/local/mysql/lib/libmysqlclient.so.20

再次执行pt-table-checksum仍然报错:

[root@db ~]# pt-table-checksum S=/data/mysql/mysqldata3306/sock/mysql.sock,h=localhost

11-01T17:07:02 install_driver(mysql) failed: Attempt to reload DBD/mysql.pm aborted.

Compilation failed in require at (eval 14) line 3.

at /usr/local/bin/pt-table-checksum line 1623

这里需要把libmysqlclient.so文件复制一份到/usr/lib64/mysql/libmysqlclient.so.18

如果还是没有找到:

找到 mysql的动态链接库:

[root@db ~]# ldd /usr/lib64/perl5/auto/DBD/mysql/mysql.so

linux-vdso.so.1 =>  (0x00007ffecb770000)

libmysqlclient.so.18 => not found --还是没有找到

libz.so.1 => /lib64/libz.so.1 (0x00007f3be2321000)

需要重装下perl-DBD-MySQL包

[root@db lib]# yum reinstall perl-DBD-MySQL

Slave_SQL线程异常终止处理之跳过错误相关推荐

  1. MySQL GTID复制Slave跳过错误事务Id以及复制排错问题总结

    GTID复制典型的复制错误有两种: 1,数据对象级别的错误,包括主库上update的数据在从库上不存在,主从逐渐冲突,库表索引等对象的冲突等等,   如果是纯粹的跳过错误的话,这一类的错误需要跳过思路 ...

  2. MySQL主从- slave跳过错误

    目录 一.跳过指定数量的事务 二.修改mysql的配置文件 三.模拟错误场景 mysql主从复制,经常会遇到错误而导致slave端复制中断,这个时候一般就需要人工干预,跳过错误才能继续 跳过错误有两种 ...

  3. MySQL复制跳过错误--slave_skip_errors、sql_slave_skip_counter、slave_exec_mode

    MySQL主从复制中的跳过错误处理参数--slave_skip_errors.sql_slave_skip_counter.slave_exec_mode 跳过复制错误--slave_skip_err ...

  4. python线程的注意点(线程之间执行是无序的、主线程会等待所有的子线程执行结束再结束(守护主线程)、线程之间共享全局变量、线程之间共享全局变量数据出现错误问题(线程等待(join)、互斥锁))

    1. 线程的注意点介绍 线程之间执行是无序的 主线程会等待所有的子线程执行结束再结束 线程之间共享全局变量 线程之间共享全局变量数据出现错误问题 2. 线程之间执行是无序的 import thread ...

  5. 主从复制跳过错误(未采用GTID)

    DB:5.6.15 主从库没有采用GTID 案例1:从库对象不存在 mysql> show slave status \G; *************************** 1. row ...

  6. SQL Server 无法生成 FRunCM 线程。请查看 SQL Server 错误日志和 Windows 事件日志(转)...

    前言: 今天遇到这个sql服务无法启用 .无法登陆 的情况..在google 百度 搜了一下.发现很多网站都是采集来的数据..(很奇怪这些采集站都那么靠前!) 照着文章里边的方法去试试都不行,,,后来 ...

  7. jmc线程转储_查找线程转储中的异常和错误

    jmc线程转储 线程转储是解决生产问题/调试生产问题的重要工件. 在像过去我们已经讨论了几种有效的线程转储故障模式: 堵车 , 跑步机 , RSI , 一个 LL条条大路通罗马 .......... ...

  8. 工作112:vue路由跳转错误:Error: Redirected when going from “/login“ to “/home“ via a navigation guard.

    vue路由跳转错误:Error: Redirected when going from "/login" to "/home" via a navigation ...

  9. mysql 主从 跳过_mysql主从同步如何跳过错误

    mysql主从同步跳过错误的方法:1.跳过指定数量的事务,代码为[mysql>SET GLOBAL SQL_SLAVE_SKIP..]:2.修改mysql的配置文件,通过[slave_skip_ ...

最新文章

  1. 「实战篇」开源项目docker化运维部署-后端java部署(七)
  2. 为什么薄膜干涉的厚度要很小_薄膜干涉的薄膜为什么不能太厚?1.这里的厚是用什么来衡量的?2.假如一个厚为1mm的薄膜,是否薄?...
  3. 关于python中excel写入案例
  4. 基于JavaConfig配置的Spring MVC的构建
  5. 使用WEB方式更改域用户帐户密码
  6. 业务、架构、技术,我们应该关注什么
  7. sin18度用计算机怎么算,sin18度等于多少怎么计算?谢谢
  8. Java数据类型占用内存最多的_java基础数据类型的内存占用
  9. 华侨大学计算机等级,全国计算机等级考试报名系统-华侨大学.doc
  10. 日志易——中国版的splunk
  11. Python3实现的m3u8批量下载器 解密合并多线程
  12. 解决一例Fedora 31安装NVIDIA官方驱动程序无法使用DKMS注册的问题
  13. Android单点触摸与多点触摸
  14. Oracle的本地网络服务名配置
  15. 鳄克斯系列服务器,英雄联盟:FPX冠军庆典活动进行中 一半宝石入手海科克斯系列皮肤...
  16. Jenkins 打包配置
  17. struct timeval
  18. win10开机有东西一闪而过_Win10 开机以后不一会儿会弹出一个黑框,usoclient.exe 一闪而过。这东西对电脑有...
  19. ICA原理及相关链接
  20. 认真聊聊中断(软中断)

热门文章

  1. 程序员面试——C++工程师面试大全第一部分
  2. 软件测试之软件开发模型
  3. vscode代码提示只显示一行_模型秒变API只需一行代码,支持TensorFlow等框架
  4. 吴恩达《机器学习》第十二章:支持向量机SVM
  5. 什么是微服务 Martin Fowler的microservices
  6. Go36-3-代码包
  7. SpringBoot App Registers UNKNOWN with Eureka in Brixton SR3
  8. Android音乐播放器-使用FFmpeg及OpenSLES
  9. linux generic什么意思_Linux下ps aux中进程状态为Ss,S+, Rs,Ds是什么意思?
  10. 计算机算法知识点总结,2021计算机考研知识点总结(1)