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 13 MySQL
MySQL 自定义变量的概念及特点
May 13 MySQL
MySQL 常见的数据表设计误区汇总
Jun 07 MySQL
Mysql中where与on的区别及何时使用详析
Aug 04 MySQL
mysql分表之后如何平滑上线详解
Nov 01 MySQL
一文带你探究MySQL中的NULL
Nov 11 MySQL
面试提问mysql一张表到底能存多少数据
Mar 13 MySQL
MySQL实现配置主从复制项目实践
Mar 31 MySQL
提高系统的吞吐量解决数据库重复写入问题
Apr 23 MySQL
使用Mysql计算地址的经纬度距离和实时位置信息
Apr 29 MySQL
SQL语句中EXISTS的详细用法大全
Jun 25 MySQL
MySQL主从复制断开的常用修复方法
Apr 07 #MySQL
MySQL infobright的安装步骤
Apr 07 #MySQL
MySQL表的增删改查基础教程
mysql批量新增和存储的方法实例
Apr 07 #MySQL
Mysql 性能监控及调优
数据库连接池
mysql优化
Apr 06 #MySQL
You might like
《星际争霸》各版本雷兽特点图文解析 雷兽不同形态一览
2020/03/02 星际争霸
四月新番又没了,《Re:从零开始的异世界生活》第二季延期至7月播出
2020/05/06 日漫
广播爱好者需要了解的天线知识
2021/03/01 无线电
PHP中数组的三种排序方法分享
2012/05/07 PHP
PHP判断图片格式的七种方法小结
2013/06/03 PHP
PHP通过内置函数memory_get_usage()获取内存使用情况
2014/11/20 PHP
php对关联数组循环遍历的实现方法
2015/03/13 PHP
php实现简单的语法高亮函数实例分析
2015/04/27 PHP
Laravel框架自定义分页样式操作示例
2020/01/26 PHP
模拟一个类似百度google的模糊搜索下拉列表
2014/04/15 Javascript
node.js中的fs.fsyncSync方法使用说明
2014/12/15 Javascript
jQuery中removeProp()方法用法实例
2015/01/05 Javascript
使用canvas实现仿新浪微博头像截取上传功能
2015/09/02 Javascript
js显示当前日期时间和星期几
2015/10/22 Javascript
利用jquery实现瀑布流3种案例
2016/09/18 Javascript
JavaScript 字符串常用操作小结(非常实用)
2016/11/30 Javascript
详解springmvc 接收json对象的两种方式
2016/12/06 Javascript
Bootstrap媒体对象学习使用
2017/03/07 Javascript
解决angularjs中同步执行http请求的方法
2018/08/13 Javascript
浅谈Vue.js之初始化el以及数据的绑定说明
2019/11/14 Javascript
[07:52]2014DOTA2 TI逗比武士游V社解说背后的故事
2014/07/10 DOTA
[46:27]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#2LGD VS MVP.Phx第一局
2016/03/02 DOTA
Python时间的精准正则匹配方法分析
2017/08/17 Python
python模拟斗地主发牌
2020/04/22 Python
通过实例了解Python异常处理机制底层实现
2020/07/23 Python
英国最出名高街品牌:Forever Unique
2018/02/24 全球购物
allbeauty美国:英国在线美容店
2019/03/11 全球购物
网站域名和主机:Domain.com
2019/04/01 全球购物
三好学生自我鉴定
2013/12/17 职场文书
校运会入场式解说词
2014/02/10 职场文书
护士岗位求职应聘自荐书范文
2014/02/12 职场文书
公务员平时考核实施方案
2014/03/11 职场文书
党的群众路线教育学习材料
2014/05/12 职场文书
房地产活动策划方案
2014/05/14 职场文书
邹越感恩父母演讲稿
2014/08/28 职场文书
《花钟》教学反思
2016/02/17 职场文书