PERCONA-TOOLKIT 安装 使用

PERCONA-TOOLKIT 安装 使用
官网:https://www.percona.com/downloads/percona-toolkit/LATEST/
percona-toolkit是一组高级命令行工具的集合,可以查看当前服务的摘要信息,磁盘检测,分析慢查询日志,查找重复索引,实现表同步等等。
这个工具套件对DBA及运维人员着实不可多得
Server 192.168.88.8 主
Server 192.168.88.17 从

配置主从

主:

yum -y install mariadb mariadb-server
systemctl start mariadb
vim /etc/my.cnf

在这里插入图片描述

systemctl restart mariadb
mysql

在这里插入图片描述在这里插入图片描述
从:

yum -y install mariadb mariadb-server
systemctl start mariadb
vim /etc/my.cnf

在这里插入图片描述

mysql

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

安装percona-toolkit(主库,从库都安装)

官网:https://www.percona.com/downloads/percona-toolkit/LATEST/
percona-toolkit是一组高级命令行工具的集合,可以查看当前服务的摘要信息,磁盘检测,分析慢查询日志,查找重复索引,实现表同步等等。
这个工具套件对DBA及运维人员着实不可多得
下载:

wget https://www.percona.com/downloads/percona-toolkit/3.1.0/binary/redhat/7/x86_64/percona-toolkit-3.1.0-2.el7.x86_64.rpm 

在这里插入图片描述

yum install -y percona-toolkit-3.1.0-2.el7.x86_64.rpm
pt(tab)

在这里插入图片描述

命令详解

pt-upgrade
  #该命令主要用于对比不同mysql版本下SQL执行的差异,通常用于升级前进行对比。
  #会生成SQL文件或单独的SQL语句在每个服务器上执行的结果、错误和警告信息等。
 
pt-online-schema-change
  #功能为支持在线变更表构,且不锁定原表,不阻塞原表的DML操作。
  #该特性与Oracle的dbms_redefinition在线重定义表原理基本类似。
   
pt-mysql-summary
  #对连接的mysql服务器生成一份详细的配置情况以及sataus信息
  #在尾部也提供当前实例的的配置文件的信息
   
pt-mext
  #并行查看SHOW GLOBAL STATUS的多个样本的信息。
  #pt-mext会执行你指定的COMMAND,并每次读取一行结果,把空行分割的内容保存到一个一个的临时文件中,最后结合这些临时文件并行查看结果。
 
pt-kill
  #Kill掉符合指定条件mysql语句
 
pt-ioprofile
  #pt-ioprofile的原理是对某个pid附加一个strace进程进行IO分析
   
pt-fingerprint
  #用于生成查询指纹。主要将将sql查询生成queryID,pt-query-digest中的ID即是通过此工具来完成的。
  #类似于Oracle中的SQL_ID,涉及绑定变量,字面量等
 
pt-find
  #用与查找mysql表并执行指定的命令,类似于find命令
 
pt-fifo-split
  #模拟切割文件并通过管道传递给先入先出队列而不用真正的切割文件
   
pt-deadlock-logger
  #用于监控mysql服务器上死锁并输出到日志文件,日志包含发生死锁的时间、死锁线程id、死锁的事务id、发生死锁时事务执行时间等详细信息。
 
pt-archiver
  #将mysql数据库中表的记录归档到另外一个表或者文件
  #该工具具只是归档旧的数据,对线上数据的OLTP查询几乎没有影响。
  #可以将数据插入另外一台服务器的其他表中,也可以写入到一个文件中,方便使用load data infile命令导入数据。
 
pt-agent
  #基于Percona Cloud的一个客户端代理工具
 
pt-visual-explain
  #用于格式化explain的输出
 
pt-variable-advisor
  #用于分析mysql系统变量可能存在的一些问题,可以据此评估有关参数的设置正确与否。
 
pt-stalk
  #用于收集mysql数据库故障时的相关信息便于后续诊断处理。
   
pt-slave-delay
  #用于设定从服务器落后于主服务器的时间间隔。
  #该命令行通过启动和停止复制sql线程来设置从落后于主指定时间。
 
pt-sift
  #用于浏览pt-stalk生成的文件。
   
pt-show-grants
  #将当前实例的用户权限全部输出,可以用于迁移数据库过程中重建用户。
   
pt-query-digest
  #用于分析mysql服务器的慢查询日志,并格式化输出以便于查看和分析。
 
pt-pmp
  #为查询程序执行聚合的GDB堆栈跟踪,先进性堆栈跟踪,然后将跟踪信息汇总。
   
pt-index-usage
  #从log文件中读取查询语句,并用分析当前索引如何被使用。
  #完成分析之后会生成一份关于索引没有被查询使用过的报告,可以用于分析报告考虑剔除无用的索引。
   
pt-heartbeat
  #用于监控mysql复制架构的延迟。
  #主要是通过在主库上的--update线程持续更新指定表上的一个时间戳,从库上--monitor线程或者--check线程检查主库更新的时间戳并与当前系统时间对比,得到延迟值。
 
pt-fk-error-logger
  #将外键相关的错误信息记录到日志或表。
 
pt-duplicate-key-checker
   #功能为从mysql表中找出重复的索引和外键,这个工具会将重复的索引和外键都列出来
   #同时也可以生成相应的drop index的语句
   
pt-diskstats
  #类似于iostat,打印磁盘io统计信息,但是这个工具是交互式并且比iostat更详细。可以分析从远程机器收集的数据。
 
pt-config-diff
  #用于比较mysql配置文件和服务器变量
  #至少2个配置源需要指定,可以用于迁移或升级前后配置文件进行对比
   
pt-align
  #格式化输出
   
pt-slave-find
  #连接mysql主服务器并查找其所有的从,然后打印出所有从服务器的层级关系。
   
pt-table-checksum
  #用于校验mysql复制的一致性。
  #该工具主要是高效的查找数据差异,如果存在差异性,可以通过pt-table-sync来解决

##############################################################################################

主: 新建sbtest数据库

在这里插入图片描述
https://blog.csdn.net/wanbin6470398/article/details/83178755

1.安装sysbench 性能压测工具

yum -y install epel-release(是否报错)
yum -y install sysbench

在这里插入图片描述
2.验证:

sysbench –help

3.主库创建 heartbeat心跳表,通过update执行更新时间戳,心跳表指定建立在sbtest库下

pt-heartbeat -S /var/lib/mysql/mysql.sock --database sbtest --update --create-table --daemonize

在这里插入图片描述
4.主库利用sysbench模拟数据操作

sysbench /usr/share/sysbench/oltp_read_write.lua --mysql-host='192.168.88.8' --mysql-user=sbtest --mysql-password=123 --mysql-port=3306 --db-driver=mysql --mysql-db=sbtest --tables=10 --table-size=500000 --report-interval=10 --threads=128 --time=120 prepare|run|cleanup

prepare:准备压测数据 在sbtest库里建10张表,每张表里插入50w条数据
在这里插入图片描述
run:执行压测
在这里插入图片描述
cleanup:清除压测数据
在这里插入图片描述
5. 从库进行监测
pt-heartbeat -S /var/lib/mysql/mysql.sock --master-server-id=1 --monitor --database sbtest
在这里插入图片描述
结果表示有延时0s左右,中括号中的数据分别表示1m,5m,15m的平均值

pt-table-checksum 实战

主:create table z1(id int not null,uname varchar(32),primary key(id));
在这里插入图片描述
从:插入数据
在这里插入图片描述
主:插入数据
在这里插入图片描述
在从库上查看复制状态
在这里插入图片描述
在slave上利用pt-slave-restart --error-numbers=1062 跳过错误
在这里插入图片描述
在slave上查看复制状态
在这里插入图片描述
#说明复制已经正常,跳过了错误事务。

#但是master与slave上的这张表数据不一致,所以这种修复方法只能算暂时的。

#之后还需进行修复

Pt-table-checksum:用来检查主从数据一致性

主库执行检测sbtest.z1表是否同步
pt-table-checksum --nocheck-replication-filters --no-check-binlog-format --replicate=test.checksums --create-replicate-table --databases=sbtest --tables=z1 h=192.168.88.8,u=sbtest,p=123,P=3306

在这里插入图片描述
–nocheck-replication-filters:是否检查复制的过滤器(默认开启)
–no-check-binlog-format:不检测binlog的过滤器
–replicate=test.checksums:把信息写入指定的表中
–databases=sbtest --tables=z1:校验的表在哪一个库下面,检验的表是什么
H:是IP主的IP地址,u:是库的名字 p:是密码 P:是端口号
表示有两行不同步

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 :执行命令。

主库上执行以下命令
#print 修复命令
会把修复的sql语句打印出来
pt-table-sync --replicate=test.checksums h=192.168.88.8,u=sbtest,p=123,P=3306 h=192.168.88.17,u=sbtest,p=123,P=3306 --print
在这里插入图片描述
#execute 修复命令
pt-table-sync --replicate=test.checksums h=192.168.88.8,u=sbtest,p=123,P=3306 h=192.168.88.17,u=sbtest,p=123,P=3306 --execute
在这里插入图片描述
##再使用pt-table-checksum 验证下
pt-table-checksum --nocheck-replication-filters --no-check-binlog-format --replicate=test.checksums --create-replicate-table --databases=sbtest --tables=z1 h=192.168.88.8,u=sbtest,p=123,P=3306

在这里插入图片描述

错误:

在这里插入图片描述
解决 是本地没有建立sbtest 用户
在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云原生解决方案

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值