ITPub博客

首页 > 数据库 > MySQL > percona-toolkit工具使用--更新中

percona-toolkit工具使用--更新中

原创 MySQL 作者:wzgchen 时间:2015-07-21 16:08:20 0 删除 编辑

下载percona-toolkit:
wget percona.com/get/percona-toolkit.rpm

安装:
yum list|grep DBD
yum list|grep Socket|grep SSL
yum -y install perl-DBD-MySQL.x86_64
yum -y install perl-IO-Socket-SSL.noarch 
yum install perl-Time-HiRes
wget http://pkgs.repoforge.org/perl-TermReadKey/perl-TermReadKey-2.30-1.el5.rf.x86_64.rpm
rpm -ivh perl-TermReadKey-2.30-1.el5.rf.x86_64.rpm
rpm -ivh percona-toolkit-2.2.14-1.noarch.rpm 
1.pt-variable-advisor:诊断你的参数设置是否合理
pt-variable-advisor localhost --socket=/tmp/mysql.sock --password=123456

2.pt-query-digest慢查询分析
show variables like '%slow%';
show variables like '%long%';

vi my.cnf
slow_query_log=1
long_query_time=0.1
slow_query_log_file=/usr/local/mysql/data/node1-slow.log
或
set global long_query_time=0.1;
set global slow_query_log=1;

select sleep(2);
tail -f /usr/local/mysql/data/node1-slow.log
pt-query-digest /usr/local/mysql/data/node1-slow.log >slow.log

yum install tcpdump

3.验证主从数据一致
在Master上初始化实验数据
create database av;
use av;
create table test(id int primary key,name varchar(20));
insert into test values(1,'a'),(2,'b'),(3,'c'),(4,'d');


Slave从库添加一个数据,模拟主从数据不一致的场景。
insert into test values(5,'e');




shell> pt-table-checksum \ 
--replicate=percona.checksums \ 
--host=<MASTER_HOST> \ 
--user=<MASTER_USER> \ 
--password=<MASTER_PASSWORD> 

只用在master上检查
pt-table-checksum --user=root --password=123456 --host=192.168.168.142  --databases=av


            TS ERRORS  DIFFS     ROWS  CHUNKS SKIPPED    TIME TABLE
07-23T16:34:46      0      1        4       1       0   0.014 av.test


从库要加下my.cnf
report_host=192.168.168.140
report_port=3306






#先M的IP,再S的IP
pt-table-sync --replicate=percona.checksums --databases=av h=127.0.0.1,u=root,p=123456 h=192.168.168.140,u=root,p=123456 --print

--print:只显示,不执行,如果要执行则:
pt-table-sync --replicate=percona.checksums --databases=av h=127.0.0.1,u=root,p=123456 h=192.168.168.140,u=root,p=123456 --execute

pt-table-sync --replicate=percona.checksums --databases=av h=127.0.0.1,u=root,p=123456 h=192.168.168.140,u=root,p=123456 --dry-run --execute --verbose



MySQL数据库CPU飙升紧急处理方法

运行平稳的数据库,如果遇到CPU狂飙,到80%左右,那一定是开发写的烂SQL导致的,DBA首先要保证的是,数据库别跑挂了,所以我们要把那些运行慢的SQL杀死并记录到文件里,以便后面的排查。

这里用到一个工具pt-kill,它可以帮助你。


1
pt-kill  --match-info "^(select|SELECT)" --busy-time 3 --victim all --interval 1 --kill --print --daemonize > /root/kill.txt


解释:只把select耗时3秒以上的SQL全部杀死,并打印出来。

模拟测试

wKiom1LfbuOBq_RIAAFxqM69md4249.jpg

这样就给杀死了,然后查看LOG。

wKiom1Lfbw6jnhQVAAFg61aU5s4306.jpg

会把杀死的SQL记录下来,然后再跟开发慢慢排查,有问题的SQL一定不能让开发随意上线的!

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/91975/viewspace-1743350/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: Mysql关于OS级优化
下一篇: sysbench压力测试
请登录后发表评论 登录
全部评论

注册时间:2015-05-01

  • 博文量
    383
  • 访问量
    213574