percona-toolkit 主从工具 master-slave
|
复制类 |
pt-heartbeat |
监控mysql复制延迟 |
|
|
pt-slave-delay |
设定从落后主的时间 |
||
|
pt-slave-find |
查找和打印所有mysql复制层级关系 |
||
|
pt-slave-restart |
监控salve错误,并尝试重启salve |
||
|
pt-table-checksum |
校验主从复制一致性 |
||
|
pt-table-sync |
高效同步表数据 |
1. pt-heartbeat
用于监控主从延迟的工具
1.1 pt-heartbeat 原理
从库上的pt-heartbeat的monitor线程会检查复制的心跳记录,这个记录就是主库修改的时间戳。然后和当前系统时间进行对比,得出时间上的差异,差异值就是延迟的时间大小。由于heartbeat表中有server_id字段,在监控某个从库的延迟时指定参考主库的server_id即可。
1.2 pt-heartbeat 主要参数介绍
其中--update,--monitor和--check是互斥的,--daemonize和--check也是互斥。
ts varchar(26) NOT NULL,
server_id int unsigned NOT NULL PRIMARY KEY,
file varchar(255) DEFAULT NULL, -- SHOW MASTER STATUS
position bigint unsigned DEFAULT NULL, -- SHOW MASTER STATUS
relay_master_log_file varchar(255) DEFAULT NULL, -- SHOW SLAVE STATUS
exec_master_log_pos bigint unsigned DEFAULT NULL -- SHOW SLAVE STATUS
);
heratbeat表一直在更改ts和position,而ts是我们检查复制延迟的关键。
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
1.3 pt-heartbeat 实战
pt-heartbeat -S /tmp/mysql3306.sock --database sbtest --update --create-table --daemonize
2)主库利用sysbench模拟数据操作
sysbench /usr/share/sysbench/oltp_read_write.lua \
--mysql-socket=/tmp/mysql3306.sock \
--mysql-user=root \
--mysql-password=mysql \
--mysql-db=sbtest \
--db-driver=mysql \
--tables=10 \
--table-size=500000 \
--report-interval=10 \
--threads=128 \
--time=120 \
prepare|run|cleanup
run:执行压测,
cleanup:清除数据
3)从库进行监控
1.00s [ 0.02s, 0.00s, 0.00s ]
1.00s [ 0.03s, 0.01s, 0.00s ]
0.86s [ 0.05s, 0.01s, 0.00s ]
0.86s [ 0.06s, 0.01s, 0.00s ]
0.96s [ 0.08s, 0.02s, 0.01s ]
1.00s [ 0.09s, 0.02s, 0.01s ]
0.88s [ 0.11s, 0.02s, 0.01s ]
0.00s [ 0.11s, 0.02s, 0.01s ]
1.01s [ 0.13s, 0.03s, 0.01s ]
0.00s [ 0.13s, 0.03s, 0.01s ]
0.00s [ 0.13s, 0.03s, 0.01s ]
...
12345678910111213141516
2. pt-slave-restart
pt-slave-restart是一个可以跳过特定错误并自动重启slave的工具。
2.1 pt-slave-restart 原理
pt-slave-restart监控一个或者多个MySQL复制slave,试图跳过引起错误的语句。它以指数变化的睡眠时间职能地检查slave。你可以指定要跳过的错误然后运行slave一直到一个确定的binlog位置。
pt-slave-restart一旦检测到slave有错误就会打印一行。默认情况下该打印行为:时间戳、连接信息、relay_log_file,relay_log_pos,以及last_errno。你可以使用--verbose选项添加更多信息,也可以使用--quiet选项阻止所有输出。
SLEEP
pt-slave-restart检查slave的过程中智能地sleep。当前的sleep时间是变化的。
如果检测发现错误,它对半之前的sleep时间。
如果检测到没有错误,它倍增之前的sleep时间。
通过--min-sleep和--max-sleep参数限定sleep时间的下界和上界。
一旦检测到错误,pt-slave-restart假定接下来很可能发生另一个错误,因此它采用当前的sleep时间或者初始sleep时间,取决于哪个值更小。
从Percona Toolkit 2.2.8版本起,pt-slave-restart开始支持由MySQL 5.6.5版本引入的GTID复制。重点牢记:
当采用多线程复制(slave_parallel_workers > 0)时,pt-slave-restart不能跳过事务。pt-slave-restart不能确定GTID事件是哪个特定slave线程执行失败的事务。
默认行为是跳过来自master的下一个事务。写可以来自不同的服务器,每个服务器都有它自己的UUID。参考–master-uuid选项。
2.2 pt-slave-restart 主要参数介绍
- ` --always ` :永不停止slave线程,手工停止也不行
12345678910111213141516171819202122232425
2.3 pt-slave-restart 实战
#1. 在master上创建表
create table z1(id int not null,uname varchar(32),primary key(id));
set sql_log_bin=0;
set global read_only=off;
insert into z1(id,uname) values(3,'python');
insert into z1(id,uname) values(2,'mysql');
insert into z1(id,uname) values(3,'java');
show slave status\G
Slave_IO_Running: Yes
Slave_SQL_Running: No
...
Last_SQL_Errno: 1062
Last_SQL_Error: Could not execute Write_rows event on table test.z1; Duplicate entry '3' for key 'PRIMARY', Error_code: 1062; handler error HA_ERR_FOUND_DUPP_KEY; the event's master log my3306_binlog.000071, end_log_pos 1214
pt-slave-restart --error-numbers=1062
2018-09-19T15:24:02 mysqldb2-relay-bin.000019 1088 1062
···
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
···
3. pt-table-checksum
pt-table-checksum工具用来检查主从数据一致性。
3.1 pt-table-checksum 原理
pt-table-checksum用于校验主从数据的一致性,该命令在主库上执行校验,然后对复制的一致性进行检查,来对比主从之间的校验值,并输出对比结果。
3.2 pt-table-checksum 主要参数介绍
- `--[no]check-replication-filters`:是否检查复制的过滤器,默认是yes,建议启用不检查模式。
123456789
3.3 pt-table-checksum 实战
pt-table-checksum --nocheck-replication-filters --no-check-binlog-format --replicate=test.checksums --create-replicate-table --databases=test --tables=z1 h=192.168.56.100,u=wanbin,p=mysql,P=3306
Starting checksum ...
TS ERRORS DIFFS ROWS DIFF_ROWS CHUNKS SKIPPED TIME TABLE
09-19T15:58:29 0 1 2 0 1 0 0.086 test.z1
`TS` :完成检查的时间。
`ERRORS` :检查时候发生错误和警告的数量。
`DIFFS`:0表示一致,1表示不一致。当指定--no-replicate-check时,会一直为0,当指定--replicate-check-only会显示不同的信息。
`ROWS` :表的行数。
`CHUNKS` :被划分到表中的块的数目。
`SKIPPED` :由于错误或警告或过大,则跳过块的数目。
`TIME` :执行的时间。
`TABLE` :被检查的表名。
Starting checksum ...
Differences on mysqldb2
TABLE CHUNK CNT_DIFF CRC_DIFF CHUNK_INDEX LOWER_BOUNDARY UPPER_BOUNDARY
test.z1 1 -1 1
1)根据测试,需要一个即能登录主库,也能登录从库的账号;
2)只能指定一个host,必须为主库的IP;
3)在检查时会向表加S锁;
4)运行之前需要从库的同步IO和SQL进程是YES状态。
12345678910111213141516171819202122232425262728293031
4. pt-table-sync
pt-table-sync用来修复主从数据不一致
4.1 pt-table-sync 原理
pt-table-sync高效的同步MySQL表之间的数据,他可以做单向和双向同步的表数据。他可以同步单个表,也可以同步整个库。它不同步表结构、索引、或任何其他模式对象。所以在修复一致性之前需要保证他们表存在。
4.2 pt-table-sync 主要参数介绍
`--replicate` :指定通过pt-table-checksum得到的表,这2个工具差不多都会一直用。
`--databases` : 指定执行同步的数据库。
`--tables` :指定执行同步的表,多个用逗号隔开。
`--sync-to-master` :指定一个DSN,即从的IP,他会通过show processlist或show slave status 去自动的找主。
`h=` :服务器地址,命令里有2个ip,第一次出现的是Master的地址,第2次是Slave的地址。
`u=` :帐号。
`p=` :密码。
`--print` :打印,但不执行命令。
`--execute :执行命令。
4.3 pt-table-sync 实战
#print修复命令
pt-table-sync --replicate=test.checksums h=192.168.56.100,u=wanbin,p=mysql,P=3306 h=192.168.56.200,u=wanbin,p=mysql,P=3306 --execute
Checking if all tables can be checksummed ...
Starting checksum ...
TS ERRORS DIFFS ROWS DIFF_ROWS CHUNKS SKIPPED TIME TABLE
09-19T16:11:50 0 0 2 0 1 0 0.134 test.z1
Can't make changes on the master because no unique index exists at /usr/local/bin/pt-table-sync line 10591.
原文:https://blog.csdn.net/wanbin6470398/article/details/83178755
percona-toolkit 主从工具 master-slave的更多相关文章
- redis的主从机制 master&slave
转载自:https://www.cnblogs.com/qwangxiao/p/9733480.html 一:master&slave的解释? master&slave就是主从复制,主 ...
- MySQL5.6 数据库主从(Master/Slave)同步安装与配置详解
.安装环境 .基本环境配置 .Master的配置 .Slave的配置 .添加需要同步的从库Slave .真正的测试 安装环境 1 操作系统 :CentOS 6.5 2 数据库版本:MySQL 5.6. ...
- Mysql主从数据库(master/slave),实现读写分离
在之前的一篇文章中,阐述了如何在高并发高负载的场景下使用nginx做后台服务的负载均衡:在阿里云Centos上配置nginx+uwsgi+负载均衡配置,但是不要以为这样做了就是一劳永逸的,到了数据业务 ...
- 在阿里云Centos7.6上面配置Mysql主从数据库(master/slave),实现读写分离
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_85 在之前的一篇文章中,阐述了如何在高并发高负载的场景下使用nginx做后台服务的负载均衡:在阿里云Centos上配置nginx+ ...
- mysql 主从配置(master/slave)
1. 在每台服务器上创建复制账号(也可以只在master上创建用户,这里配置两个是为了方便以后切换) 备库运行的I/O县城需要建立一个到主库的TCP/IP连接,所以必须在主库创建一个用户,并赋予合适 ...
- Percona Toolkit工具连接MySQL 8报错的解决方案
使用Percona Toolkit的工具连接MySQL 8.x数据库时,会遇到类似"failed: Plugin caching_sha2_password could not be loa ...
- Percona Toolkit工具集介绍
部署mysql工具是一个非常重要的部分,所以工具的可靠性和很好的设计非常重要.percona toolkit是一个有30多个mysql工具的工具箱.兼容mysql,percona server,mar ...
- Percona Toolkit工具使用
Percona Toolkit简称pt工具-PT-Tools,是Percona公司开发用于管理MySQL的工具,功能包括检查主从复制的数据一致性.检查重复索引.定位IO占用高的表文件.在线DDL等 下 ...
- Centos 安装Percona Toolkit工具集
1.下载 下载地址: https://www.percona.com/downloads/percona-toolkit/LATEST/ [root@bogon ~]# wget https:// ...
- Percona Toolkit mysql辅助利器
1 PT介绍 Percona Toolkit简称pt工具—PT-Tools,是Percona公司开发用于管理MySQL的工具,功能包括检查主从复制的数据一致性.检查重复索引.定位IO占用高的表文件.在 ...
随机推荐
- Python笔记004-Python最基本内置数据类型和运算符
第二章(1)Python编程基础概念 1. 最基本内置数据类型和运算符 每个对象都有类型,Python 中最基本的内置数据类型: 1. 整数 整数,2345 ,10 ,50 2. 浮点型 小数,3.1 ...
- Python开发【第七章】:异常处理
一.异常处理 1.异常基础 在编程过程中为了增加友好性,在程序出现bug时一般不会将错误信息显示给用户,而是现实一个提示的页面,通俗来说就是不让用户看见大黄页!!! #异常处理 list = [&qu ...
- IDEA报错: Clone failed: Authentication failed for 'http://10.70.XXXXXXXXXXXXXXXXX'
今天从git上导入公司的项目,总是报错Clone failed: Authentication failed for 'http://10.70.XXXXXXXXXXXXXX' 在网上百度了一下,大致 ...
- Junit 学习笔记
目录 Junit 学习笔记 1. 编写测试用例时需要注意 2. 出现结果分析 3. Junit 运行流程 4. Junit 常用注解 5. Junit 测试套件的使用 6. Junit 参数化设置 J ...
- (三)XML基础(3):Xpath
五.XPath:快速定位到节点 5.1 简介 5.2 语法 5.3 案例 XPath对有命名空间的xml文件和没有命名空间的xml定位节点的方法是不一样的,所以再对不同的xml需要进行不同的处理. 使 ...
- Java InterpolationSearch
Java InterpolationSearch /** * <html> * <body> * <P> Copyright 1994-2018 JasonInte ...
- JDBC 学习复习10 编写自己的JDBC框架
首先万分感谢狼哥 孤傲苍狼 博客,整个jdbc学习的博客资料 链接为http://www.cnblogs.com/xdp-gacl/p/4006830.html 详细代码见狼哥博客,列出我学习过程中遇 ...
- springboot启动流程(三)Environment简介
所有文章 https://www.cnblogs.com/lay2017/p/11478237.html 简介 上一篇文章中,我们简单了解了一下SpringApplication的run方法的代码逻辑 ...
- Lua 可变参数 ... 的一点测试
function test( ... ) if (...) then dibug("has ...") else dibug("no ...") end for ...
- python连接impala时,执行SQL报错expecting list of size 2 for struct args
这个错误困扰了好久,因为集群有多台,暂放到其他几台机器上执行了SQL操作,一直在找解决方法,无意间得到真传,喜出望外啊 报错信息: Traceback (most recent call last): ...