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 相关文章推荐
多表查询、事务、DCL
Apr 05 MySQL
MySQL删除和插入数据很慢的问题解决
Jun 03 MySQL
MySQL8.0.18配置多主一从
Jun 21 MySQL
MySQL query_cache_type 参数与使用详解
Jul 01 MySQL
MySQL创建定时任务
Jan 22 MySQL
MySQL 开窗函数
Feb 15 MySQL
数据分析数据库ClickHouse在大数据领域应用实践
Apr 03 MySQL
mysql使用instr达到in(字符串)的效果
Apr 03 MySQL
MySql数据库触发器使用教程
Jun 01 MySQL
MySQL如何修改字段类型和字段长度
Jun 10 MySQL
mysql实现将字符串字段转为数字排序或比大小
Jun 14 MySQL
关于mysql中string和number的转换问题
Jun 14 MySQL
MySQL主从复制断开的常用修复方法
Apr 07 #MySQL
MySQL infobright的安装步骤
Apr 07 #MySQL
MySQL表的增删改查基础教程
mysql批量新增和存储的方法实例
Apr 07 #MySQL
Mysql 性能监控及调优
数据库连接池
mysql优化
Apr 06 #MySQL
You might like
开发大型PHP项目的方法
2006/10/09 PHP
通达OA公共代码 php常用检测函数
2011/12/14 PHP
PHP字符串比较函数strcmp()和strcasecmp()使用总结
2014/11/19 PHP
初识laravel5
2015/03/02 PHP
PHP+AJAX实现投票功能的方法
2015/09/28 PHP
Yii2中Restful API原理实例分析
2016/07/25 PHP
PHP中串行化用法示例
2016/11/16 PHP
JS 获取浏览器和屏幕宽高等信息代码
2014/03/31 Javascript
基于jquery实现的文字向上跑动类似跑马灯的效果
2014/06/17 Javascript
JS回调函数的应用简单实例
2014/09/17 Javascript
推荐4个原生javascript常用的函数
2015/01/12 Javascript
基于jQuery实现Tabs选项卡自定义插件
2016/11/21 Javascript
基于jQuery实现数字滚动效果
2017/01/16 Javascript
JavaScript获取当前时间向前推三个月的方法示例
2017/02/04 Javascript
js获取ip和地区
2017/03/10 Javascript
Angular2 自定义validators的实现方法
2017/07/05 Javascript
vue.js声明式渲染和条件与循环基础知识
2017/07/31 Javascript
[js高手之路]HTML标签解释成DOM节点的实现方法
2017/08/31 Javascript
基于webpack 实用配置方法总结
2017/09/28 Javascript
bootstrap-table.js扩展分页工具栏(增加跳转到xx页)功能
2017/12/28 Javascript
Vue组件的使用及个人理解与介绍
2019/02/09 Javascript
python对url格式解析的方法
2015/05/13 Python
python统计字母、空格、数字等字符个数的实例
2018/06/29 Python
在python中利用GDAL对tif文件进行读写的方法
2018/11/29 Python
python re正则匹配网页中图片url地址的方法
2018/12/20 Python
在Python中通过getattr获取对象引用的方法
2019/01/21 Python
python实现文本进度条 程序进度条 加载进度条 单行刷新功能
2019/07/03 Python
一行Python代码制作动态二维码的实现
2019/09/09 Python
Python通过VGG16模型实现图像风格转换操作详解
2020/01/16 Python
Python实现Wordcloud生成词云图的示例
2020/03/30 Python
德国孕妇装和婴童服装网上商店:bellybutton
2018/04/12 全球购物
护理专业应届毕业生推荐信
2013/11/15 职场文书
计算机专业毕业生自我鉴定
2014/01/16 职场文书
高校十八大报告感想
2014/01/27 职场文书
离职保密承诺书
2014/05/28 职场文书
tree shaking对打包体积优化及作用
2022/07/07 Java/Android