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 相关文章推荐
超详细教你怎么升级Mysql的版本
May 19 MySQL
mysql联合索引的使用规则
Jun 23 MySQL
SQL注入详解及防范方法
Dec 06 MySQL
MySQL中int (10) 和 int (11) 的区别
Jan 22 MySQL
MySQL的InnoDB存储引擎的数据页结构详解
Mar 03 MySQL
Mysql 如何合理地统计一个数据库里的所有表的数据量
Apr 18 MySQL
CentOS MySql8 远程连接实战
Apr 19 MySQL
mysql中如何用命令创建联合唯一索引
Apr 20 MySQL
手把手带你彻底卸载MySQL数据库
Jun 14 MySQL
MySQL性能指标TPS+QPS+IOPS压测
Aug 05 MySQL
前端传参数进行Mybatis调用mysql存储过程执行返回值详解
Aug 14 MySQL
DQL数据查询语句使用示例
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多文件上传类实例
2015/03/07 PHP
PHP5.5安装PHPRedis扩展及连接测试方法
2017/01/22 PHP
基于jquery的横向滚动条(滑动条)
2011/02/24 Javascript
JS限制上传图片大小不使用控件在本地实现
2012/12/19 Javascript
js获取dom的高度和宽度(可见区域及部分等等)
2013/06/13 Javascript
js字符串转换成数字与数字转换成字符串的实现方法
2014/01/08 Javascript
js 删除数组的几种方法小结
2014/02/21 Javascript
js获取上传文件大小示例代码
2014/04/10 Javascript
node.js中的fs.closeSync方法使用说明
2014/12/17 Javascript
JavaScript设计模式经典之命令模式
2016/02/24 Javascript
Bootstrap前端开发案例一
2016/06/17 Javascript
jQuery获取radio选中项的值实例
2016/06/18 Javascript
JavaScript中严格判断NaN的方法
2018/02/16 Javascript
vue使用prop可以渲染但是打印台报错的解决方式
2019/11/13 Javascript
Bootstrap table 服务器端分页功能实现方法示例
2020/06/01 Javascript
原生js实现自定义滚动条
2021/01/20 Javascript
Element el-button 按钮组件的使用详解
2021/02/01 Javascript
Python中在for循环中嵌套使用if和else语句的技巧
2016/06/20 Python
如何使用 Pylint 来规范 Python 代码风格(来自IBM)
2018/04/06 Python
tensorflow实现加载mnist数据集
2018/09/08 Python
对python中数组的del,remove,pop区别详解
2018/11/07 Python
如何基于python实现画不同品种的樱花树
2020/01/03 Python
CSS3 按钮边框动画的实现
2020/11/12 HTML / CSS
美国打印机墨水和碳粉购物网站:QuikShip Toner
2018/08/29 全球购物
英国领先的在线礼品店:Getting Personal
2019/09/24 全球购物
Visual-Click葡萄牙:欧洲领先的在线眼镜商
2020/02/17 全球购物
机械绘图员岗位职责
2013/11/19 职场文书
大学生评语大全
2014/04/18 职场文书
反邪教宣传工作方案
2014/05/07 职场文书
我的中国梦演讲稿800字
2014/08/19 职场文书
2014领导班子专题民主生活会对照检查材料思想汇报
2014/09/23 职场文书
第二次离婚起诉书
2015/05/18 职场文书
东京审判观后感
2015/06/01 职场文书
2019年学校消防安全责任书(2篇)
2019/10/09 职场文书
导游词之南京汤山温泉
2019/11/26 职场文书
redis sentinel监控高可用集群实现的配置步骤
2022/04/01 Redis