安装和使用percona-toolkit来辅助操作MySQL的基本教程

一、percona-toolkit简介
percona-toolkit是一组高级命令行工具的集合,用来执行各种通过手工执行非常复杂和麻烦的mysql和系统任务,这些任务包括:

  • 检查master和slave数据的一致性
  • 有效地对记录进行归档
  • 查找重复的索引
  • 对服务器信息进行汇总
  • 分析来自日志和tcpdump的查询
  • 当系统出问题的时候收集重要的系统信息

percona-toolkit源自Maatkit 和Aspersa工具,这两个工具是管理mysql的最有名的工具,现在Maatkit工具已经不维护了,请大家还是使用percona-toolkit吧!这些工具主要包括开发、性能、配置、监控、复制、系统、实用六大类,作为一个优秀的DBA,里面有的工具非常有用,如果能掌握并加以灵活应用,将能极大的提高工作效率。

二、percona-toolkit工具包安装
1.  软件包下载
访问http://www.percona.com/software/percona-toolkit/下载最新版本的Percona Toolkit 或者通过如下命令行来获取最新的版本:

wget percona.com/get/percona-toolkit.tar.gz
wget percona.com/get/percona-toolkit.rpm

我这里选择直接从网站上找到最新版本下载:

wget http://www.percona.com/redir/downloads/percona-toolkit/2.1.1/percona-toolkit-2.1.1-1.noarch.rpm
wget http://www.percona.com/redir/downloads/percona-toolkit/2.1.1/percona-toolkit-2.1.1.tar.gz

从http://pkgs.repoforge.org/perl-TermReadKey/下载最新的TermReadKey包

wget http://pkgs.repoforge.org/perl-TermReadKey/perl-TermReadKey-2.30-1.el5.rf.x86_64.rpm

2. 软件包安装
我的环境是Centos 5.5 64 BIT
A. percona-toolkit的rpm安装方式

rpm -ivh perl-TermReadKey-2.30-1.el5.rf.x86_64.rpm
rpm -ivh percona-toolkit-2.1.1-1.noarch.rpm

注意:需要安装Term::ReadKey 包,否则会报perl(Term::ReadKey) >= 2.10 is needed by percona-toolkit-2.1.1-1.noarch错误
B. percona-toolkit的编译安装方式
tar xzvf percona-toolkit-2.1.1.tar.gz
cd percona-toolkit-2.1.1
perl Makefile.PL
make
make test
make install

三、常用功能
1. pt-duplicate-key-checker
功能介绍:
功能为从mysql表中找出重复的索引和外键,这个工具会将重复的索引和外键都列出来,并生成了删除重复索引的语句,非常方便
用法介绍:
pt-duplicate-key-checker [OPTION...] [DSN]
包含比较多的选项,具体的可以通过命令pt-duplicate-key-checker  --help来查看具体支持那些选项,我这里就不一一列举了。DNS为数据库或者表。
使用示例:
查看test数据库的重复索引和外键使用情况使用如下命令

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

2. pt-online-schema-change
功能介绍:
功能为在alter操作更改表结构的时候不用锁定表,也就是说执行alter的时候不会阻塞写和读取操作,注意执行这个工具的时候必须做好备份,操作之前最好详细读一下官方文档http://www.percona.com/doc/percona-toolkit/2.1/pt-online-schema-change.html。
工作原理是创建一个和你要执行alter操作的表一样的空表结构,执行表结构修改,然后从原表中copy原始数据到表结构修改后的表,当数据copy完成以后就会将原表移走,用新表代替原表,默认动作是将原表drop掉。在copy数据的过程中,任何在原表的更新操作都会更新到新表,因为这个工具在会在原表上创建触发器,触发器会将在原表上更新的内容更新到新表。如果表中已经定义了触发器这个工具就不能工作了。
用法介绍:
pt-online-schema-change [OPTIONS] DSN
options可以自行查看help,DNS为你要操作的数据库和表。
这里有两个参数需要介绍一下:
--dry-run  这个参数不建立触发器,不拷贝数据,也不会替换原表。只是创建和更改新表。
--execute  这个参数的作用和前面工作原理的介绍的一样,会建立触发器,来保证最新变更的数据会影响至新表。注意:如果不加这个参数,这个工具会在执行一些检查后退出。这一举措是为了让使用这充分了解了这个工具的原理,同时阅读了官方文档。
使用示例:
在线更改表的的引擎,这个尤其在整理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
功能介绍:
根据一些规则分析查询语句,对可能的问题提出建议,这些评判规则大家可以看一下官网的链接:http://www.percona.com/doc/percona-toolkit/2.1/pt-query-advisor.html,这里就不详细列举了。那些查询语句可以来自慢查询文件、general日志文件或者使用pt-query-digest截获的查询语句。目前这个版本有bug,当日志文件非常大的时候会需要很长时间甚至进入死循环。
用法介绍:

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

使用示例:
分析一个语句的例子:

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
功能介绍:
规范化和打印mysql权限,让你在复制、比较mysql权限以及进行版本控制的时候更有效率!
用法介绍:
pt-show-grants [OPTION...] [DSN]
选项自行用help查看,DSN选项也请查看help,选项区分大小写。
使用示例:
查看指定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
功能介绍:
在多台服务器上执行查询,并比较有什么不同!这在升级服务器的时候非常有用,可以先安装并导数据到新的服务器上,然后使用这个工具跑一下sql看看有什么不同,可以找出不同版本之间的差异。
用法介绍:
pt-upgrade [OPTION...] DSN [DSN...] [FILE]
比较文件中每一个查询语句在两个主机上执行的结果,并检查在每个服务器上执行的结果、错误和警告。
使用示例:
只查看某个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
(0)

相关推荐

  • Win2000+Apache+MySql+PHP4+PERL安装使用小结

    Windows 2000+Apache+MySql+PHP3+PHP4+PERL安装使用小结 www.1000script.com 2002-9-3 1000script专业脚本 Windows 2000+Apache+MySql+PHP3+PHP4+PERL安装使用小结(一) 这里一定有许多和我一样喜欢尝试新鲜事物的朋友,尤其是当听说 某某软件有了新的版本时一定也会迫不及待的去下载一份回来用用再说. 这里我想和大家探讨一下以下流行软件的应用,意在抛砖引玉. OS : Microsoft Win

  • MySQL日志分析软件mysqlsla的安装和使用教程

    一.下载 mysqlsla [root@localhost tmp]# wget http://hackmysql.com/scripts/mysqlsla-2.03.tar.gz --19:45:45-- http://hackmysql.com/scripts/mysqlsla-2.03.tar.gz Resolving hackmysql.com... 64.13.232.157 Connecting to hackmysql.com|64.13.232.157|:80... connec

  • linux安装mysql和使用c语言操作数据库的方法 c语言连接mysql

    1. MySQL的安装与配置: 在Ubuntu下安装MySQL方法很简单,使用如下命令: 复制代码 代码如下: sudo apt-get install mysql-server 安装的过程中系统会提示设置root密码,此过程可以跳过,但是建议在安装时提示设置root密码的时候自行设置,免得后面设置麻烦.安装结束之后,系统会启动mysql服务,可以使用命令去查看来验证mysql服务是否已经安装成功: 复制代码 代码如下: ps -el | grep mysql 如果mysql服务没有正常的运行,

  • MySql安装与使用图文教程【推荐】

    MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司.MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性.MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言.MySQL软件采用了双授权政策(本词条"授权政策"),它分为社区版和商业版,由于其体积小.速度快.总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库.由于

  • 在linux或unix服务器上安装、使用MySQL的注意事项

    一.怎么样取得最新版本的MySQL? 要安装MySQL,首先要当然要取得它的最新版本,虽然大家都知道在FreeBSD的Packages中可以找到MySQL,但是我还是建议大家到网络上去找最新版本的MySQL.我介绍大家到http://www.mysql.org去下载,这里的最新版本是MySQL 3.23 versions . 二.安装MySQL时候的注意事项? 1.如果您是用MySQL+Apache,使用的又是FreeBSD网路操作系统的话,安装时候你应按注意到FreeBSD的版本问题,在Fre

  • Linux下安装与使用MySQL详细介绍

    一.安装Mysql 1.下载MySQL的安装文件安装MySQL需要下面两个文件:MySQL-server-4.0.16-0.i386.rpm MySQL-client-4.0.16-0.i386.rpm下载地址为:http://dev.mysql.com/downloads/mysql-4.0.html,打开此网页,下拉网页找到"Linux x86 RPM downloads"项,找到"Server"和"Client programs"项,下载需

  • mysql免安装制作使用说明

    1>把压缩文件mysql-noinstall-5.1.6-alpha-win32.zip解压到一个目录下,在环境变量中设置MYSQL_HOME,把%MYSQL_HOME%\bin 加入到 path. 2>创建my.ini配置文件,内容如下:[mysqld]#设置basedir指向mysql的安装路径basedir=...\mysqldatadir=...\mysql\data my.ini文件放在系统文件下面. 3>启动与停止mysqlmysqld.exe --install(安装win

  • 集群运维自动化工具ansible使用playbook安装mysql

    上次介绍了如何使用ansible playbook安装zabbix客户端(http://www.jb51.net/article/52158.htm),这次介绍一下如何使用playbook安装mysql. 下面是安装mysql的信息: mysql_basedir: /data/mysql/basedir 源码目录 mysql_datadir: /data/mysql/datadir 数据目录 mysql_user: mysql mysql用户 mysql_database_user: root

  • 安装和使用percona-toolkit来辅助操作MySQL的基本教程

    一.percona-toolkit简介 percona-toolkit是一组高级命令行工具的集合,用来执行各种通过手工执行非常复杂和麻烦的mysql和系统任务,这些任务包括: 检查master和slave数据的一致性 有效地对记录进行归档 查找重复的索引 对服务器信息进行汇总 分析来自日志和tcpdump的查询 当系统出问题的时候收集重要的系统信息 percona-toolkit源自Maatkit 和Aspersa工具,这两个工具是管理mysql的最有名的工具,现在Maatkit工具已经不维护了

  • Centos 6.5下安装MySQL 5.6教程

    1.下载Linux对应的RPM包 http://dev.mysql.com/downloads/mysql/5.6.html wget http://cdn.mysql.com//Downloads/MySQL-5.6/MySQL-5.6.33-1.el6.x86_64.rpm-bundle.tar 2.解压tar包 tar -xvf MySQL-5.6.33-1.el6.x86_64.rpm-bundle.tar 3.安装MySQL rpm -ivh MySQL-server-5.6.33-1

  • windows server 2008/2012安装php iis7 mysql环境搭建教程

    windows server 2008/2012安装php iis7 mysql环境搭建教程,具体内容如下 1.安装IIS windows server 2008的IIS版本为7.0,包括fastcgi,安装十分方便. 打开"开始"菜单→"服务器管理",出现服务器管理界面(图1) 图1 - 服务器管理 滚动条下翻,或者点击主菜单的"角色",然后点击"添加角色",出现向导页面后点击下一步,选择"web服务器(IIS)&

  • centos 6.9安装mysql的详细教程

    1.确认mysql是否已安装,有下面的代码可知 [root@cdh1 zjl]# yum list installed mysql* Loaded plugins: fastestmirror, refresh-packagekit, security Loading mirror speeds from cached hostfile * base: mirrors.zju.edu.cn * extras: mirrors.aliyun.com * updates: mirrors.aliyu

  • mac 中docker安装mysql的图文教程

    今天在Docker中安装了MySQL ,是自己打的docker包. 首先新建Dockerfile 内容如下: FROM mysql:latest MAINTAINER abel.yang <527515025@qq.com> LABEL Descripttion="This image is build for MAC to use mysql" Vendor="GitHub" Version="latest" RUN apt-get

  • CentOs7.x安装Mysql的详细教程

    CentOS7的yum源中默认好像是没有MySQL的.为了解决这个问题,我们要先下载mysql的repo源. 1. 下载mysql的repo源 $ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm 2. 安装mysql-community-release-el7-5.noarch.rpm包 $ sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm 安装这个

  • 在 CentOS 7 中安装 MySQL 8 的教程详解

    准备 本文环境信息: 软件 版本 CentOS CentOS 7.4 MySQL 8.0.x 安装前先更新系统所有包 sudo yum update 安装 1. 添加 Yum 包 wget https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm # 或者 wget http://repo.mysql.com/mysql80-community-release-el7-1.noarch.rpm sudo yum up

  • Linux下二进制编译安装MySql centos7的教程

    // 当时我装这个也是折腾了一下午 , 所以写一个笔记记录一下; //如果哪里有问题的话我们可以一起讨论( qq: 2970911340,邮箱+@qq.com),这也是我第一次写博客 练练手 1. 安cmake工具 # yum install -y cmake 2. 创建mysql用户 #useradd -s /sbin/nologin mysql  //设置为非登陆用户(安全) 3. 创建数据目录,该目录是用于数据库初始化时生成的库.表.日志等,不要直接在该目录下存放东西 # mkdir -p

  • 在windows上安装不同(两个)版本的Mysql数据库的教程详解

    1.起因: 需要导入一个sql文件,发现死活导不进去.当执行到这一句时,就有问题.经过一番搜索,原来是我的数据库版本(原先Mysql版本5.5)低了,而支持该语句的版本应该是至少要5.7.那我索性就去Mysql官网去下载了个最新版本的(8.0.15). `create_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP 2.过程: 那么问题来了:有两个解决方案.1.直接卸载掉5.5版本的Mysql,直接安装8.0.15版本的.2.在不卸

  • Windows下通过MySQL Installer安装MySQL服务的教程图解

    MYSQL官方提供了Installer方式安装MYSQL服务以及其他组件,使的Windows下安装,卸载,配置MYSQL变得特别简单. 1. 安装准备 1.1 准备MySQL安装包 百度云盘共享链接: https://pan.baidu.com/s/1Jni0OIJmaJj21-xeVVYeXQ 提取码: e9is windows版本安装包下载 1.2 检查操作系统类型 检查操作系统类型主要是了解系统是: 32位操作系统(x86) 还是64位操作系统(x64) 1.3 检查系统是否已安装MySQ

随机推荐