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主从复制断开的常用修复方法
Apr 07 MySQL
MySQL索引知识的一些小妙招总结
May 10 MySQL
详解mysql三值逻辑与NULL
May 19 MySQL
mysql5.7使用binlog 恢复数据的方法
Jun 03 MySQL
解决mysql模糊查询索引失效问题的几种方法
Jun 18 MySQL
MySQL的安装与配置详细教程
Jun 26 MySQL
记一次Mysql不走日期字段索引的原因小结
Oct 24 MySQL
一篇文章看懂MySQL主从复制与读写分离
Nov 07 MySQL
SQL注入详解及防范方法
Dec 06 MySQL
Mysql存储过程、触发器、事件调度器使用入门指南
Jan 22 MySQL
详细介绍MySQL中limit和offset的用法
May 06 MySQL
MySQL中dd::columns表结构转table过程及应用详解
Sep 23 MySQL
MySQL主从复制断开的常用修复方法
Apr 07 #MySQL
MySQL infobright的安装步骤
Apr 07 #MySQL
MySQL表的增删改查基础教程
mysql批量新增和存储的方法实例
Apr 07 #MySQL
Mysql 性能监控及调优
数据库连接池
mysql优化
Apr 06 #MySQL
You might like
上海地方志办公室-上海电子仪表工业志
2021/03/04 无线电
PHP4与PHP5的时间格式问题
2008/02/17 PHP
PHP加速 eAccelerator配置和使用指南
2009/06/05 PHP
php动态生成版权所有信息的方法
2015/03/24 PHP
php实现阿拉伯数字和罗马数字相互转换的方法
2015/04/17 PHP
phpcms手机内容页面添加上一篇和下一篇
2015/06/05 PHP
php获取从百度、谷歌等搜索引擎进入网站关键词的方法
2015/07/08 PHP
PHP写API输出的时用echo的原因详解
2019/04/28 PHP
Laravel如何实现自动加载类
2019/10/14 PHP
Array的push与unshift方法性能比较分析
2011/03/05 Javascript
js脚本获取webform服务器控件的方法
2014/05/16 Javascript
javascript表单验证和Window详解
2014/12/11 Javascript
扒一扒JavaScript 预解释
2015/01/28 Javascript
jQuery Pagination分页插件_动力节点Java学院整理
2017/07/17 jQuery
webpack+vue2构建vue项目骨架的方法
2018/01/09 Javascript
node.js使用mongoose操作数据库实现购物车的增、删、改、查功能示例
2019/12/23 Javascript
跟老齐学Python之print详解
2014/09/28 Python
Python中enumerate()函数编写更Pythonic的循环
2018/03/06 Python
使用python3+xlrd解析Excel的实例
2018/05/04 Python
浅谈Pandas 排序之后索引的问题
2018/06/07 Python
Python常见读写文件操作实例总结【文本、json、csv、pdf等】
2019/04/15 Python
Python 计算任意两向量之间的夹角方法
2019/07/05 Python
程序员的七夕用30行代码让Python化身表白神器
2019/08/07 Python
Django学习之文件上传与下载
2019/10/06 Python
python dir函数快速掌握用法技巧
2020/12/09 Python
解决pytorch 保存模型遇到的问题
2021/03/03 Python
巴西最大的家电和百货零售商:Casas Bahia
2016/11/22 全球购物
美国农场商店:Blain’s Farm & Fleet
2020/01/17 全球购物
三方协议书范本
2014/04/22 职场文书
爱我中华教学反思
2014/04/28 职场文书
个人学习党的群众路线教育实践活动心得体会
2014/11/05 职场文书
2015年质量管理工作总结范文
2015/05/18 职场文书
胡桃夹子观后感
2015/06/11 职场文书
2016反腐倡廉警示教育心得体会
2016/01/13 职场文书
vue中div禁止点击事件的实现
2022/04/02 Vue.js
vue实现Toast组件轻提示
2022/04/10 Vue.js