percona-toolkit命令详解
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来解决
pt-heartbeat 主要参数介绍
`注意:需要指定的参数至少有 --stop,--update,--monitor,--check。``其中--update,--monitor和--check是互斥的,--daemonize和--check也是互斥。` ``--ask-pass`:隐式输入MySQL密码` ``--charset`:字符集设置` ``--check`:检查从的延迟,检查一次就退出,除非指定了--recurse会递归的检查所有的从服务器。` ``--check-``read``-only`:如果从服务器开启了只读模式,该工具会跳过任何插入。` ``--create-table`:在主上创建心跳监控的表,如果该表不存在。可以自己建立,建议存储引擎改成memory。通过更新该表知道主从延迟的差距。` `CREATE TABLE heartbeat (`` ``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是我们检查复制延迟的关键。` ``--daemonize`:执行时,放入到后台执行` ``--user | -u`:连接数据库的帐号` ``--database | -D`:连接数据库的名称` ``--host|-h`:连接的数据库地址` ``--password | -p`:连接数据库的密码` ``--port | -P`:连接数据库的端口` ``--socket | -S`:连接数据库的套接字文件` ``--``file` `【--``file``=output.txt】`:打印--monitor最新的记录到指定的文件,很好的防止满屏幕都是数据的烦恼。` ``--frames 【--frames=1m,2m,3m】`:在--monitor里输出的[]里的记录段,默认是1m,5m,15m。可以指定1个,如:--frames=1s,多个用逗号隔开。可用单位有秒(s)、分钟(m)、小时(h)、天(d)。` ``--interval`:检查、更新的间隔时间。默认是见是1s。最小的单位是0.01s,最大精度为小数点后两位,因此0.015将调整至0.02。` ``--log`:开启daemonized模式的所有日志将会被打印到制定的文件中。` ``--monitor`:持续监控从的延迟情况。通过--interval指定的间隔时间,打印出从的延迟信息,通过--``file``则可以把这些信息打印到指定的文件。` ``--master-server-``id```:指定主的server_id,若没有指定则该工具会连到主上查找其server_id。` ``--print-master-server-``id```:在--monitor和--check 模式下,指定该参数则打印出主的server_id。` ``--recurse`:多级复制的检查深度。模式M-S-S...不是最后的一个从都需要开启log_slave_updates,这样才能检查到。` ``--recursion-method`:指定复制检查的方式,默认为processlist,hosts。` ``--update`:更新主上的心跳表。` ``--replace`:使用--replace代替--update模式更新心跳表里的时间字段,这样的好处是不用管表里是否有行。` ``--stop`:停止运行该工具(--daemonize),在``/tmp/``目录下创建一个“pt-heartbeat-sentinel” 文件。后面想重新开启则需要把该临时文件删除,才能开启(--daemonize)。` ``--table`:指定心跳表名,默认heartbeat。`
pt-slave-restart 主要参数介绍
`- ` --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的位置来停止` `- `--``sleep```:默认值为1,检查slave间隔的初始``sleep``秒数。`
pt-slave-restart 主要参数介绍
`- ` --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的位置来停止` `- `--``sleep```:默认值为1,检查slave间隔的初始``sleep``秒数。`
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 :执行命令。`