使用percona-toolkit操作MySQL的实用命令小结

所属分类: 数据库 / Mysql 阅读数: 1977
收藏 0 赞 0 分享

1.pt-archiver
功能介绍:
将mysql数据库中表的记录归档到另外一个表或者文件
用法介绍:
pt-archiver [OPTION...] --source DSN --where WHERE
这个工具只是归档旧的数据,不会对线上数据的OLTP查询造成太大影响,你可以将数据插入另外一台服务器的其他表中,也可以写入到一个文件中,方便使用load data infile命令导入数据。另外你还可以用它来执行delete操作。这个工具默认的会删除源中的数据。使用的时候请注意。
使用示例:
范例1:将192.168.3.135上的sanmao库的oss_log表id小于100000的记录转移到192.168.3.92上的sanmao库,并归档到oss_log_archive_20120605.log文件中:

pt-archiver --source h=192.168.3.135,D=sanmao,t=oss_log --user=root --password=zhang@123 --dest 
h=192.168.3.92,D=sanmao,t=oss_log --file '/var/log/oss_log_archive_20120605.log' --where "id<=100000" --commit-each

范例2:将192.168.3.135上的sanmao库的oss_log小于160000的记录归档到oss_log_archive_20120607.log文件中:

pt-archiver --source h=192.168.3.135,D=sanmao,t=oss_log --user=root --password=zhang@123 --file '/var/log/oss_log_archive_20120607.log' --where "id<=160000" --commit-each

范例3:删除192.168.3.135上的sanmao库的oss_log表中id小于167050的记录:

pt-archiver --source h=192.168.3.135,D=sanmao,t=oss_log --user=root --password=zhang@123 --purge --where 'id<=167050'

注意:如果是字符集是utf8的话,需要在my.cnf中的[client]下面添加default-character-set = utf8,否则导出的文件内容中文会乱码。
 
2.pt-find
功能介绍:
查找mysql表并执行指定的命令,和gnu的find命令类似。
用法介绍:
pt-find [OPTION...] [DATABASE...]
默认动作是打印数据库名和表名
使用示例:
范例1:查找192.168.3.135中1天以前创建的InnoDB的表 ,并打印。

pt-find --ctime +1 --host=192.168.3.135 --engine InnoDB --user=root --password=zhang@123

范例2:查找192.168.3.135中1天以前更改过的数据库名字匹配%hostsops%的并且引擎为MYISAM的表,并将表的引擎更改为InnoDB引擎。

pt-find --mtime +1 --dblike hostsops --engine MyISAM --host=192.168.3.135 --user=root --password=zhang@123 --exec "ALTER TABLE %D.%N ENGINE=InnoDB"

范例3:查找192.168.3.135中aaa库和zhang库中的空表,并删除。

pt-find --empty aaa zhang --host=192.168.3.135 --user=root --password=zhang@123 --exec-plus "DROP TABLE %s"

范例4:查找192.168.3.135中超过100M的表:

pt-find --tablesize +100M --host=192.168.3.135 --user=root --password=zhang@123

 
3.pt-kill
功能介绍:
Kill掉符合指定条件mysql语句
用法介绍:
pt-kill [OPTIONS]
加入没有指定文件的话pt-kill连接到mysql并通过SHOW PROCESSLIST找到指定的语句,反之pt-kill从包含SHOW PROCESSLIST结果的文件中读取mysql语句
使用示例:
范例1:查找192.168.3.135服务器运行时间超过60s的语句,并打印

pt-kill --busy-time 60 --print --host=192.168.3.135 --user=root --password=zhang@123

范例2:查找192.168.3.135服务器运行时间超过60s的语句,并kill

pt-kill --busy-time 60 --kill --host=192.168.3.135 --user=root --password=zhang@123

范例3:从proccesslist文件中查找执行时间超过60s的语句

mysql -uroot -pzhang@123 -h192.168.3.135 -e "show processlist" > processlist.txt
pt-kill --test-matching processlist.txt --busy-time 60 --print 

4.pt-config-diff
功能介绍:
比较mysql配置文件和服务器参数
用法介绍:
pt-config-diff [OPTION...] CONFIG CONFIG [CONFIG...]
CONFIG可以是文件也可以是数据源名称,最少必须指定两个配置文件源,就像unix下面的diff命令一样,如果配置完全一样就不会输出任何东西。
使用示例:
范例1:查看本地和远程服务器的配置文件差异:

pt-config-diff h=localhost h=192.168.3.92 --user=root --password=zhang@123

比较出来内容如下:

22 config differences
Variable         localhost.localdomain localhost.localdomain
========================= ===================== =====================
binlog_cache_size     8388608        2097152
have_ndbcluster      DISABLED       NO
innodb_additional_mem_... 16777216       33554432
innodb_buffer_pool_size  1677721600      1073741824

 
范例2:比较本地配置文件和远程服务器的差异:

pt-config-diff /etc/my.cnf h=192.168.3.92 --user=root --password=zhang@123

 
比较出来内容如下:

12 config differences
Variable         /etc/my.cnf localhost.localdomain
========================= =========== =====================
binlog_cache_size     8388608   2097152
binlog_format       mixed    MIXED

 
范例3:比较本地两个配置文件的差异:

pt-config-diff /usr/local/mysql/share/mysql/my-large.cnf /usr/local/mysql/share/mysql/my-medium.cnf


5.pt-mysql-summary
功能介绍:
精细地对mysql的配置和sataus信息进行汇总,汇总后你直接看一眼就能看明白。
用法介绍:
pt-mysql-summary [OPTIONS] [-- MYSQL OPTIONS]
工作原理:连接mysql后查询出status和配置信息保存到临时目录中,然后用awk和其他的脚本工具进行格式化。OPTIONS可以查阅官网的相关页面。
使用示例:
范例1:汇总本地mysql服务器的status和配置信息:

pt-mysql-summary -- --user=root --password=zhang@123 --host=localhost

范例2:汇总本地mysql服务器192.168.3.92的status和配置信息:

pt-mysql-summary -- --user=root --password=zhang@123 --host=192.168.3.92

6.pt-variable-advisor
功能介绍:
分析mysql的参数变量,并对可能存在的问题提出建议
用法介绍:
pt-variable-advisor [OPTION...] [DSN]
原理:根据预先定义的规则检查show variables中的配置错误的设置和值。
使用示例:
范例1:从localhost获取变量值

pt-variable-advisor --user=root --password=zhang@123 localhost

范例2:从指定的文件中读取配置,这个有格式要求

pt-variable-advisor --user=root --password=zhang@123 --source-of-variables my.cnf 

更多精彩内容其他人还在看

MySQL优化之表结构优化的5大建议(数据类型选择讲的很好)

很多人都将 数据库设计范式 作为数据库表结构设计“圣经”,认为只要按照这个范式需求设计,就能让设计出来的表结构足够优化,既能保证性能优异同时还能满足扩展性要求
收藏 0 赞 0 分享

MySQL的表分区详解

这篇文章主要介绍了MySQL的表分区,例如什么是表分区、为什么要对表进行分区、表分区的4种类型详解等,需要的朋友可以参考下
收藏 0 赞 0 分享

MySQL基本命令、常用命令总结

这篇文章主要介绍了MySQL基本命令、常用命令总结,需要的朋友可以参考下
收藏 0 赞 0 分享

mysql 强大的trim() 函数

这篇文章主要介绍了mysql 强大的trim() 函数使用方法,需要的朋友可以参考下
收藏 0 赞 0 分享

MySQL函数大全及用法示例分享

这篇文章主要介绍了MySQL的一些函数及用法示例,需要的朋友可以参考下
收藏 0 赞 0 分享

MySQL不支持INTERSECT和MINUS及其替代方法

这篇文章主要介绍了MySQL不支持INTERSECT和MINUS情况下的替代方法,需要的朋友可以参考下
收藏 0 赞 0 分享

mysql修改数据库编码(数据库字符集)和表的字符编码的方法

Mysql数据库是一个开源的数据库,应用非常广泛。以下是修改mysql数据库的字符编码的操作过程和将表的字符编码转换成utf-8的方法,需要的朋友可以参考下
收藏 0 赞 0 分享

mysql远程登录出错的解决方法

mysql远程登录出错的情况,先比很多朋友都有遇到过吧,下面有个不错的解决方法,大家可以参考下
收藏 0 赞 0 分享

mysql通过查看跟踪日志跟踪执行的sql语句

在SQL SERVER下跟踪sql采用事件探查器,而在mysql下如何跟踪sql呢,下面有个不错的方法,大家可以参考下
收藏 0 赞 0 分享

MySQL错误代码大全

本章列出了当你用任何主机语言调用MySQL时可能出现的错误。首先列出了服务器错误消息。其次列出了客户端程序消息
收藏 0 赞 0 分享
查看更多