percona-toolkit命令

需要注意的是:master和slave需要相同的账号:

GRANT SELECT,PROCESS,SUPER,REPLICATION SLAVE,Lock_tables,Insert_priv='Y',Delete_priv='Y'  ON   *.*  TO   'ptuser'@'%'   IDENTIFIED BY'123456';

flush privileges;

3.mysql服务状态摘要:pt-mysql-summary

通过连接到MySQL数据库服务器并向其查询状态和配置信息来工作

简单参数:

--user   #数据库的用户名,简写:-u

--password  #数据库的密码,简写:-p

--host  #非本地数据库的IP地址,简写:-h

--port   #数据库的端口号,简写:-P,默认3306

--databases或--all-databases,则该工具将打印以上部分。这总结了数据库中对象的数量和类型

--save-samples   文件名     #用于保存的文件

--sleep  10    #收集状态计数器(Status Counters)时需要睡眠的秒数。默认10s

4.慢查询分析: pt-query-digest

用于分析mysql服务器的慢查询日志,常规日志和二进制日志的查询,tcpdump的MySQL协议数据,并格式化输出以便于查看和分析

简单参数:

--since 从什么时间点开始分析

--until  截止时间点

--user 用户名,--password 密码, -host 主机ip 

--review   所有唯一查询都将保存到数据库。当再次使用运行该工具时--review,该报表中不会打印在数据库中标记为已审阅的查询。这突出显示了需要审查的新查询 

--history 将每个唯一查询的查询指标(查询时间,锁定时间等)都将保存到数据库中,每次使用该工具时--history,如果存在相同的语句,且查询所在的时间区间和历史表中的不同,则会记录到数据表中,可以通过查询同一CHECKSUM来比较某类型查询的历史变化

--create-review-table 当使用--review参数把分析结果输出到表中时,如果没有表就自动创建。 

--create-history-table 当使用--history参数把分析结果输出到表中时,如果没有表就自动创建。

--limit 限制输出结果百分比或数量,默认值是20和95%,即将最慢的20条语句输出,如果是95%则按总响应时间占比从大到小排序,输出到总和达到95%位置截止

--filter 对输入的慢查询按指定的字符串进行匹配过滤后再进行分析

默认--output值为查询分析报告。该--[no]report 选项控制是否打印此报告

--type 要解析的输入的类型,默认slowlog,还有binlog日志(该文件首先使用mysqlbinlog转换为文本),genlog(解析MySQL一般日志文件),tcpdump(检查网络数据包并解码MySQL客户端协议,从中提取查询和响应),rawlog(简单文本)

执行命令:

1)分析指定时间范围内的查询

pt-query-digest slow.log --since'2017-01-07 09:30:00'--until'2017-01-0710:00:00'   

2)把查询保存到query_review表:

pt-query-digest --user=root –password=abc123 --review h=localhost,D=test,t=query_review --create-review-table slow.log

3)把查询保存到query_history表

pt-query-digest --user=root –password=abc123 --review h=localhost,D=test,t=query_history--create-review-table slow.log_0001

4)分析binlog

mysqlbinlog mysql-bin.000093> mysql-bin000093.sql

pt-query-digest  --type=binlog  mysql-bin000093.sql > slow_report10.log

5.查找并打印MySQL从站的复制层次结构树  pt-slave-find  (在master上操作)

此处需要主从账号密码必须一致且可以远程连接

在master上执行命令可查看出slave的层次结构

简单参数:

-h  主机ip , -P 端口号   -u 用户名  -p密码  -D 指定数据库

--charset   utf8   #指定字符集

--defaults-file  /etc/my.cnf   #只从给定文件中读取mysql选项。必须提供一个绝对路径名

--resolve-address  将ip地址解析为主机名

--slave-user  设置slave的用户名称

--slave-password  设置用于连接到从站的密码

pt-slave-find  -h192.168.11.203  -P3306 -uptuser -p123456

主从层次结构信息

6.规范化打印MySQL用户权限  pt-show-grants

pt-show-grants -uroot -p123456 

规范化打印MySQL用户权限 

7.对比配置文件的异同 pt-config-diff    (使用DSN格式)

1)两个数据库配置文件比较: 

./pt-config-diff h=localhost,P=3306,u=root,p=123456 h=localhost1,P=3306,u=root,p=123456 

两个数据库配置文件比较

2)指定文件:

./pt-config-diff /opt/my.cnf h=localhost,P=3306,u=root,p=123456

显示内容

8.pt-archiver   将MySQL表中的记录存档到另一个表或文件中,原表只保留最近一行,其他记录都会清除

1)归档文件并且复制到相应的表中

./pt-archiver --source h=localhost,P=2206,u=root,p=123456,D=test,t=info --file '/tmp/info' --dest h=localhost,u=root,p=123456,D=test,t=info_bak --where "id > 2" --limit 10 --commit-each --no-check-charset --no-version-check

简单参数:

#h=localhost                --  实例地址

# P=3306                      --  实例端口

# u=root                        --  实例用户

# p=123456                  -- 实例用户密码

# D=test                        --  实例数据库

# t=info                        -- 实例表名称

# --source                    -- 指定要被归档的数据源

#--dest                         -- 指定要被归档的目的源                    

# --charset=utf8              -- 使用的字符集,需与表字符集一致;

#--no-check-charset       --否则指定字符集

# --file                             -- 指定目标操作系统文件名

# --where "id > 3008"      -- 指定 where 过滤条件,过滤出要归档的数据

# --limit 1000                -- 每条语句读取和归档的数据行数,默认是 1

# --no-version-check          -- 不做版本检查,RDS MySQL 必须设置

# --statistics                       -- 显示 pt-archiver 本次操作的统计信息

# --bulk-insert                    -- 批量插入数据,会自动启用,每次删除行数通过--limit 选项指定

# --bulk-delete                   --批量删除数据,每次删除行数通过--limit 选项指定

# --commit-each                -- 每次获取和归档数据后,commit提交

#--purge                              --删除source数据库的相关匹配记录

#--delete                      --表示不删除原来的数据,注意:如果不指定此参数,所有处理完成后,都会清理原表中的数据   

#--txn-size 1000            --设置1000行为一个事务提交一次

2)注意事项:

至少指定–dest, –file 或者 –purge三个参数中的一个

–ignore and –replace 不能同时指定

–txn-size and –commit-each 不能同时指定

–low-priority-insert and –delayed-insert 不能同时指定

–share-lock and –for-update 不能同时指定

–analyze and –optimize 不能同时指定

–no-ascend and –no-delete 不能同时指定

默认情况下,–dest从–source中复制DSN字符串.即,在同一个MySQL Server上面把数据归档到另外一个表.

3)会将选中的数据(不包括最后一条数据,其他数据)进行操作


9.pt-table-checksum --->  可以用来检测主、 从数据库中数据的一致性

原理: 在master上操作, 对同步的表进行checksum, 记录下来。 然后对比主从中各个表的checksum是否一致, 从而判断数据是否一致

简单参数:

--database=         #指定数据库,如果不指定的话则是全库检查

--tables=            指定需要被检查的表,多个用逗号隔开

--host  主机ip  --port 端口号 -u用户名 -p密码  => h=ip,P=端口号,u=用户名,p=密码,s=socket文件

--nocheck-binlog-format                不检查日志格式,默认会去检查statement模式

--nocheck-replication-filters           不检查复制过滤器,建议启用

--replicate-check-only                    只输出不一样的表

--nocheck-plan                              检查 query的执行计划(优先选择能够对表进行chunk 分组的索引)

--set-varsinnodb_lock_wait_timeout=120         锁的超时设定, 默认为1

--max-load=25   默认数据库正在运行的线程数25,可以调大

--chunk-size, --chunk-size-limit   用于指定检测块的大小。 可控性更强

--recursion-method=processlist

其参数有四:processlist/hosts/dsn=DSN/no,用来决定查找slave的方式

是show full processlist还是show slave hosts(如果找不到的话,需要从slave配置文件中添加report_host=slave_ip和report_port=slave_port,重新启动)还是命令行直接指定还是压根就不准备找从库

--create-replicate-table                  #创建复制表

--replicate=test.checksums          #指定差异性表存放数据库和表名

注意:如果test没有主从,可以将主上面的checksums创建到slave上

为了保证主数据库服务的安全,该工具实现了许多保护措施:

1)自动设置 innodb_lock_wait_timeout 为1s,避免引起

2)默认当数据库有25个以上的并发查询时,pt-table-checksum会暂停。可以设置 --max-load 选项来设置这个阀值

3)当用 Ctrl+C 停止任务后,工具会正常的完成当前 chunk 检测,下次使用 --resume 选项启动可以恢复继续下一个 chunk

执行结果

参数说明:

TS :完成检查的时间。

ERRORS :检查时候发生错误和警告的数量。

DIFFS :0表示一致,1表示不一致。当指定--no-replicate-check时,会一直为0,当指定--replicate-check-only会显示不同的信息。

ROWS :当前服务器上表的行数。

DIFF_ROW: 主从存在不一样的行数

CHUNKS :被划分到表中的块的数目。

SKIPPED :由于错误或警告或过大,则跳过块的数目。

TIME :执行的时间。TABLE :被检查的表名。

查看slave中的checksums表中的信息:

差异项

注意:要是表中没有唯一索引或则主键则会报错:

Can't make changes on the master because no unique index exists at/usr/local/bin/pt-table-sync line10591.

10.恢复数据:pt-table-sync

简单参数:

--print      每次修复前,需要用户确认;

--execute         执行查询,使表具有相同数据;

--verbose 输出明细

--sync-to-master    指定一个DSN,即从的IP,它会通过show processlist或show slave status 去自动的找主。






命令大全:https://www.percona.com/doc/percona-toolkit/2.2/index.html

你可能感兴趣的:(percona-toolkit命令)