MySQL pt-slave-restart工具的使用简介


Posted in MySQL onApril 07, 2021

    在MySQL主从复制环境的搭建中,常常会遇到一种场景,主库和从库都要初始化用户的账号密码,正常的情况下,需要在主库和从库都关闭session级别的binlog,然后再进行用户信息导入。

    但是有时候会忽略关闭session级别binlog这个前置动作,例如在基于GTID的复制模式下,主从库都直接导入了用户的账号密码信息,主库和从库都将账号密码的事务记录到了自己的GTID中,此时我们如果利用GTID的方式搭建复制,会出现报错,因为从库已经有账号了,所以主库上同步到从库的用户信息会出现报错现象,提示用户已经存在,这种情况下,我们需要在从库跳过从主库复制过来的创建用户的SQL语句。

    在GTID模式下,通过下面的办法可以跳过一个事务:

stop slave;
set gtid_next=xxxxx;
begin;
commit;
set gtid_next=automatic;
start slave;

但是在事务数很多的情况下,我们不能一个一个跳过,需要批量跳过同一个错误,这里有几种方式可以进行处理;

分别是调整slave_skip_errors参数或者slave_exec_mode 参数

今天我们来看另外一种方法,就是利用pt-slave-restart工具来进行事务跳过,命令如下:

./pt-slave-restart -uroot -proot123 --error-numbers=1062

命令很容易理解,写清楚错误编码,直接跳过就行,它会打印出来很多信息,默认情况下打印内容为:时间戳、连接信息、中继日志文件、中继日志位置以及上一个错误号。例如:

2020-09-22T00:59:09 P=3306,h=192.168.7.194,p=...,u=root relay-bin.000005         369 1032 
2020-09-22T00:59:09 P=3306,h=192.168.7.194,p=...,u=root relay-bin.000005         726 1032 
2020-09-22T00:59:09 P=3306,h=192.168.7.194,p=...,u=root relay-bin.000005        1085 1032 
2020-09-22T00:59:09 P=3306,h=192.168.7.194,p=...,u=root relay-bin.000005        1444 1032 
2020-09-22T00:59:09 P=3306,h=192.168.7.194,p=...,u=root relay-bin.000005        1800 1032

你可以使用--verbose选项添加更多信息,也可以使用--quiet选项阻止所有输出。

注意事项:

当采用多线程复制(slave_parallel_workers > 0)时,pt-slave-restart不能跳过事务。pt-slave-restart不能确定GTID事件是哪个特定slave线程执行失败的事务。

如果需要使用,请暂时关闭多线程复制的workers

关于pt-slave-restart的其他参数,可以使用pt-slave-restart --help的命令查看,也可以参考下面的常见参数列表:

--always        :永不停止slave线程,手工停止也不行

--ask-pass      :替换-p命令,防止密码输入被身后的开发窥屏

--error-numbers :指定跳过哪些错误,可用,进行分隔

--error-text    :根据错误信息进行匹配跳过

--log           :输出到文件

--recurse       :在主端执行,监控从端

--runtime       :工具执行多长时间后退出:默认秒,m=minute,h=hours,d=days

--slave-user --slave-password :从库的账号密码,从主端运行时使用

--skip-count    :一次跳过错误的个数,胆大的可以设置大些,不指定默认1个

--master-uuid   :级联复制的时候,指定跳过上级或者上上级事务的错误

--until-master  :到达指定的master_log_pos,file位置后停止,格式:”file:pos“

--until-relay   :和上面一样,但是根据relay_log的位置来停止

以上就是MySQL pt-slave-restart工具的使用简介的详细内容,更多关于MySQL pt-slave-restart工具的使用的资料请关注三水点靠木其它相关文章!

MySQL 相关文章推荐
IDEA 链接Mysql数据库并执行查询操作的完整代码
May 20 MySQL
MySQL中VARCHAR与CHAR格式数据的区别
May 26 MySQL
MySQL Router实现MySQL的读写分离的方法
May 27 MySQL
浅谈mysql增加索引不生效的几种情况
Jun 23 MySQL
MySQL系列之六 用户与授权
Jul 02 MySQL
Mysql8.0递归查询的简单用法示例
Aug 04 MySQL
Mysql实现简易版搜索引擎的示例代码
Aug 30 MySQL
浅谈MySQL表空间回收的正确姿势
Oct 05 MySQL
MySQL RC事务隔离的实现
Mar 31 MySQL
mysql使用instr达到in(字符串)的效果
Apr 03 MySQL
mysql 子查询的使用
Apr 28 MySQL
mysql序号rownum行号实现方式
Dec 24 MySQL
MySQL主从复制断开的常用修复方法
Apr 07 #MySQL
MySQL infobright的安装步骤
Apr 07 #MySQL
MySQL表的增删改查基础教程
mysql批量新增和存储的方法实例
Apr 07 #MySQL
Mysql 性能监控及调优
数据库连接池
mysql优化
Apr 06 #MySQL
You might like
php实现singleton()单例模式实例
2014/11/06 PHP
php使用ob_flush不能每隔一秒输出原理分析
2015/06/02 PHP
PHP使用CURL模拟登录的方法
2015/07/08 PHP
PHP读取并输出XML文件数据的简单实现方法
2017/12/22 PHP
关于__defineGetter__ 和__defineSetter__的说明
2007/05/12 Javascript
js RuntimeObject() 获取ie里面自定义函数或者属性的集合
2010/11/23 Javascript
jquery文字上下滚动的实现方法
2013/03/22 Javascript
js setTimeout 参数传递使用介绍
2013/08/13 Javascript
jQuery简单实现input文本框内灰色提示文本效果的方法
2015/12/02 Javascript
JavaScript类型系统之Object详解
2016/01/07 Javascript
JavaScript lodash常见用法系列小结
2016/08/24 Javascript
12条写出高质量JS代码的方法
2018/01/07 Javascript
Node.js利用console输出日志文件的方法示例
2018/04/27 Javascript
JS实现的简单下拉框联动功能示例
2018/05/11 Javascript
Vue.JS实现垂直方向展开、收缩不定高度模块的JS组件
2018/06/19 Javascript
jQuery实现简单飞机大战
2020/07/05 jQuery
VUE子组件向父组件传值详解(含传多值及添加额外参数场景)
2020/09/01 Javascript
Cython 三分钟入门教程
2009/09/17 Python
为Python的Tornado框架配置使用Jinja2模板引擎的方法
2016/06/30 Python
Python单体模式的几种常见实现方法详解
2017/07/28 Python
Django原生sql也能使用Paginator分页的示例代码
2017/11/15 Python
python二维列表一维列表的互相转换实例
2018/07/02 Python
Python函数参数操作详解
2018/08/03 Python
详解Python3中的迭代器和生成器及其区别
2018/10/09 Python
阿拉伯世界最大的电子商务网站:Souq沙特阿拉伯
2016/10/28 全球购物
Nicole Miller官方网站:纽约女装品牌
2019/09/14 全球购物
历史专业个人求职信分享
2013/12/20 职场文书
自我鉴定书
2014/03/24 职场文书
向国旗敬礼学生寄语大全
2014/09/30 职场文书
会计工作总结范文2014
2014/12/23 职场文书
期末考试复习计划
2015/01/19 职场文书
幼儿园2016年圣诞活动总结
2016/03/31 职场文书
创业计划书之香辣虾火锅
2019/09/23 职场文书
python中sqllite插入numpy数组到数据库的实现方法
2021/06/21 Python
Golang jwt身份认证
2022/04/20 Golang
MYSQL常用函数介绍
2022/05/05 MySQL