zoukankan      html  css  js  c++  java
  • percona-toolkit工具包的使用教程之开发类工具

    percona-toolkit工具包的使用教程之开发类工具

    1.  pt-duplicate-key-checker

    l  功能介绍:

    功能为从mysql表中找出重复的索引和外键,这个工具会将重复的索引和外键都列出来,并生成了删除重复索引的语句,非常方便

    l  用法介绍:

    pt-duplicate-key-checker [OPTION...] [DSN]

    包含比较多的选项,具体的可以通过命令pt-duplicate-key-checker  --help来查看具体支持那些选项,我这里就不一一列举了。DNS为数据库或者表。

    l  使用示例:

    查看test数据库的重复索引和外键使用情况使用如下命令

    pt-duplicate-key-checker  --host=localhost --user=root --password=zhang@123  --databases=test

            

    2. pt-online-schema-change

    l  功能介绍:

    功能为在alter操作更改表结构的时候不用锁定表,也就是说执行alter的时候不会阻塞写和读取操作,注意执行这个工具的时候必须做好备份,操作之前最好详细读一下官方文档http://www.percona.com/doc/percona-toolkit/2.1/pt-online-schema-change.html。

    工作原理是创建一个和你要执行alter操作的表一样的空表结构,执行表结构修改,然后从原表中copy原始数据到表结构修改后的表,当数据copy完成以后就会将原表移走,用新表代替原表,默认动作是将原表drop掉。在copy数据的过程中,任何在原表的更新操作都会更新到新表,因为这个工具在会在原表上创建触发器,触发器会将在原表上更新的内容更新到新表。如果表中已经定义了触发器这个工具就不能工作了。

    l  用法介绍:

    pt-online-schema-change [OPTIONS] DSN

    options可以自行查看help,DNS为你要操作的数据库和表。

    这里有两个参数需要介绍一下:

    --dry-run  这个参数不建立触发器,不拷贝数据,也不会替换原表。只是创建和更改新表。

    --execute  这个参数的作用和前面工作原理的介绍的一样,会建立触发器,来保证最新变更的数据会影响至新表。注意:如果不加这个参数,这个工具会在执行一些检查后退出。这一举措是为了让使用这充分了解了这个工具的原理,同时阅读了官方文档。

    l  使用示例:

    在线更改表的的引擎,这个尤其在整理innodb表的时候非常有用,示例如下:

    pt-online-schema-change --user=root --password=zhang@123 --host=localhost --lock-wait-time=120 --alter="ENGINE=InnoDB" D=test,t=oss_pvinfo2 --execute

    从下面的日志中可以看出它的执行过程:

    Altering `test`.`oss_pvinfo2`...

    Creating new table...

    Created new table test._oss_pvinfo2_new OK.

    Altering new table...

    Altered `test`.`_oss_pvinfo2_new` OK.

    Creating triggers...

    Created triggers OK.

    Copying approximately 995696 rows...

    Copied rows OK.

    Swapping tables...

    Swapped original and new tables OK.

    Dropping old table...

    Dropped old table `test`.`_oss_pvinfo2_old` OK.

    Dropping triggers...

    Dropped triggers OK.

    Successfully altered `test`.`oss_pvinfo2`.

    在来一个范例,大表添加字段的,语句如下:

    pt-online-schema-change --user=root --password=zhang@123 --host=localhost --lock-wait-time=120 --alter="ADD COLUMN domain_id INT" D=test,t=oss_pvinfo2 --execute

    3. pt-query-advisor

    l  功能介绍:

    根据一些规则分析查询语句,对可能的问题提出建议,这些评判规则大家可以看一下官网的链接:http://www.percona.com/doc/percona-toolkit/2.1/pt-query-advisor.html,这里就不详细列举了。那些查询语句可以来自慢查询文件、general日志文件或者使用pt-query-digest截获的查询语句。目前这个版本有bug,当日志文件非常大的时候会需要很长时间甚至进入死循环。

    l  用法介绍:

    pt-query-advisor /path/to/slow-query.log

    pt-query-advisor --type genlog mysql.log

    pt-query-digest --type tcpdump.txt --print --no-report | pt-query-advisor

    l  使用示例:

    分析一个语句的例子:

    pt-query-advisor --query "select * from aaa"

    分析general log中的查询语句的例子:

    pt-query-advisor /data/dbdata/general.log

    分析慢查询中的查询语句的例子:

    pt-query-advisor /data/dbdata/localhost-slow.log

    4.  pt-show-grants

    l  功能介绍:

    规范化和打印mysql权限,让你在复制、比较mysql权限以及进行版本控制的时候更有效率!

    l  用法介绍:

    pt-show-grants [OPTION...] [DSN]

    选项自行用help查看,DSN选项也请查看help,选项区分大小写。

    l  使用示例:

    查看指定mysql的所有用户权限:

    pt-show-grants --host='localhost' --user='root' --password='zhang@123'

    查看执行数据库的权限:

    pt-show-grants --host='localhost' --user='root' --password='zhang@123'  --database='hostsops'

    查看每个用户权限生成revoke收回权限的语句:

    pt-show-grants --host='localhost' --user='root' --password='zhang@123'  --revoke

    5.  pt-upgrade

    l  功能介绍:

    在多台服务器上执行查询,并比较有什么不同!这在升级服务器的时候非常有用,可以先安装并导数据到新的服务器上,然后使用这个工具跑一下sql看看有什么不同,可以找出不同版本之间的差异。

    l  用法介绍:

    pt-upgrade [OPTION...] DSN [DSN...] [FILE]

    比较文件中每一个查询语句在两个主机上执行的结果,并检查在每个服务器上执行的结果、错误和警告。

    l  使用示例:

    只查看某个sql在两个服务器的运行结果范例:

    pt-upgrade h='localhost' h=192.168.3.92 --user=root --password=zhang@123 --query="select * from user_data.collect_data limit 5"

    查看文件中的对应sql在两个服务器的运行结果范例:

    pt-upgrade h='localhost' h=192.168.3.92 --user=root --password=zhang@123  aaa.sql

    查看慢查询中的对应的查询SQL在两个服务器的运行结果范例:

    pt-upgrade h='localhost' h=192.168.3.92 --user=root --password=zhang@123  slow.log

    此外还可以执行compare的类型,主要包含三个query_times,results,warnings,比如下面的例子,只比较sql的执行时间

    pt-upgrade h=192.168.3.91 h=192.168.3.92 --user=root --password=zhang@123 --query="select * from user_data.collect_data" --compare query_times

  • 相关阅读:
    怎么自定义修改CnBlogs博客园主题模板css样式
    前端怎么避免无效的请求,减轻服务器负载
    360浏览器奇葩问题:非得打开一次控制台才能登录(try catch finally 用法)
    react中<br/>不换行、多个&nbsp;只显示一个空格的问题 dangerouslySetInnerHTML
    webpack压缩文件错误:ERROR in bundle.js from UglifyJs
    webpack css单独打包 及extract-text-webpack-plugin插件
    css如何引入第三方字体
    计数排序
    接口
    抽象方法和抽象类
  • 原文地址:https://www.cnblogs.com/Robert-huge/p/5261916.html
Copyright © 2011-2022 走看看