- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章安装和使用percona-toolkit来辅助操作MySQL的基本教程由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
1、percona-toolkit简介 percona-toolkit是一组高级命令行工具的集合,用来执行各种通过手工执行非常复杂和麻烦的mysql和系统任务,这些任务包括:
percona-toolkit源自Maatkit 和Aspersa工具,这两个工具是管理mysql的最有名的工具,现在Maatkit工具已经不维护了,请大家还是使用percona-toolkit吧!这些工具主要包括开发、性能、配置、监控、复制、系统、实用六大类,作为一个优秀的DBA,里面有的工具非常有用,如果能掌握并加以灵活应用,将能极大的提高工作效率.
2、percona-toolkit工具包安装 1. 软件包下载 访问http://www.percona.com/software/percona-toolkit/下载最新版本的Percona Toolkit 或者通过如下命令行来获取最新的版本:
1
2
|
wget percona.com
/get/percona-toolkit
.
tar
.gz
wget percona.com
/get/percona-toolkit
.rpm
|
我这里选择直接从网站上找到最新版本下载:
1
2
|
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包 。
1
|
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安装方式 。
1
2
|
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 。
3、常用功能 1. pt-duplicate-key-checker 功能介绍: 功能为从mysql表中找出重复的索引和外键,这个工具会将重复的索引和外键都列出来,并生成了删除重复索引的语句,非常方便 用法介绍: pt-duplicate-key-checker [OPTION...] [DSN] 包含比较多的选项,具体的可以通过命令pt-duplicate-key-checker --help来查看具体支持那些选项,我这里就不一一列举了。DNS为数据库或者表。 使用示例: 查看test数据库的重复索引和外键使用情况使用如下命令 。
1
|
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表的时候非常有用,示例如下:
1
|
pt-online-schema-change --user=root --password=zhang@123 --host=localhost --lock-wait-
time
=120 --alter=
"ENGINE=InnoDB"
D=
test
,t=oss_pvinfo2 --execute
|
从下面的日志中可以看出它的执行过程:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
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`.
|
在来一个范例,大表添加字段的,语句如下
1
|
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,当日志文件非常大的时候会需要很长时间甚至进入死循环。 用法介绍:
1
2
3
|
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
|
使用示例: 分析一个语句的例子:
1
|
pt-query-advisor --query
"select * from aaa"
|
分析general log中的查询语句的例子:
1
|
pt-query-advisor
/data/dbdata/general
.log
|
分析慢查询中的查询语句的例子:
1
|
pt-query-advisor
/data/dbdata/localhost-slow
.log
|
4. pt-show-grants 功能介绍: 规范化和打印mysql权限,让你在复制、比较mysql权限以及进行版本控制的时候更有效率! 用法介绍: pt-show-grants [OPTION...] [DSN] 选项自行用help查看,DSN选项也请查看help,选项区分大小写。 使用示例: 查看指定mysql的所有用户权限:
1
|
pt-show-grants --host=
'localhost'
--user=
'root'
--password=
'zhang@123'
|
查看执行数据库的权限:
1
|
pt-show-grants --host=
'localhost'
--user=
'root'
--password=
'zhang@123'
--database=
'hostsops'
|
查看每个用户权限生成revoke收回权限的语句:
1
|
pt-show-grants --host=
'localhost'
--user=
'root'
--password=
'zhang@123'
--revoke
|
5. pt-upgrade 功能介绍: 在多台服务器上执行查询,并比较有什么不同!这在升级服务器的时候非常有用,可以先安装并导数据到新的服务器上,然后使用这个工具跑一下sql看看有什么不同,可以找出不同版本之间的差异。 用法介绍: pt-upgrade [OPTION...] DSN [DSN...] [FILE] 比较文件中每一个查询语句在两个主机上执行的结果,并检查在每个服务器上执行的结果、错误和警告。 使用示例: 只查看某个sql在两个服务器的运行结果范例:
1
|
pt-upgrade h=
'localhost'
h=192.168.3.92 --user=root --password=zhang@123 --query=
"select * from user_data.collect_data limit 5"
|
查看文件中的对应sql在两个服务器的运行结果范例:
1
|
pt-upgrade h=
'localhost'
h=192.168.3.92 --user=root --password=zhang@123 aaa.sql
|
查看慢查询中的对应的查询SQL在两个服务器的运行结果范例:
1
|
pt-upgrade h=
'localhost'
h=192.168.3.92 --user=root --password=zhang@123 slow.log
|
此外还可以执行compare的类型,主要包含三个query_times,results,warnings,比如下面的例子,只比较sql的执行时间 。
1
|
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
|
最后此篇关于安装和使用percona-toolkit来辅助操作MySQL的基本教程的文章就讲到这里了,如果你想了解更多关于安装和使用percona-toolkit来辅助操作MySQL的基本教程的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我听说最好不要从您系统的 Perl 版本所在的 CPAN 安装模块。我知道如何使用命令行安装模块,我只是想知道是否有办法将 CPAN 与系统核心 Perl 分开。 我应该: 下载源代码并专门为这些模块
我听说最好不要从系统的 Perl 版本所在的 CPAN 安装模块。我知道如何使用命令行安装模块,我只是想知道是否有办法将 CPAN 与系统的核心 Perl 分开。 我应该: 下载源代码并专门为这些模块
单独安装 electron 与通过 electron-builder 安装有什么区别?我正在使用 React 构建一个 Electron 应用程序,并且已经找到了一些教程。它们安装 Electron
两者安装有什么区别?我按照安装页面上的说明在全局范围内安装了 webpack,然后我转到了入门指南,据说在那里可以在本地安装 webpack-cli。 CLI = Command Line Inter
我在 OS X Yosemite 上用 PHP 安装了默认的 Apache 服务器,安装了 pear,用 brew 安装了 Solr (brew install solr),现在我正在尝试使用 PEC
我解压并编译了 Ruby 2.1 并安装了几个支持工具。 但是当我安装了 libssl-dev 时,OpenSSL 不会安装。 我在支持 openssl 时遇到这个错误: make: *** No r
我在 android studio 2.3.1 和 gradle 3.2 中设计了 2 到 3 个应用程序。当我从它运行应用程序到任何设备或模拟器时,一切都工作正常。但是当我从构建文件夹中获取该 ap
我注意到我正在读一本书提到通过 apt-get 安装 numpy 和 opencv apt-get install python-numpy python-opencv 但我可以通过以下方式在 pip
我正在尝试在 Windows 8.1 上安装 ansicon。我提取了文件并达到了我需要调用 ansicon -i 的级别。当我在 cmd 中输入此内容并运行 python 脚本时效果很好,但是当我通
我有 linux MINT 17.3 Kernel 4.4.0-81 所有更新可用。 (由于不同的原因,我无法迁移到更新版本的 ubuntu/mint) 我已经通过 PPA 安装了 FFMPEG(不是
尝试在本地运行我的应用程序时出现错误: 我只在 chrome 浏览器中收到此错误。我尝试过不同的东西,但我不确定为什么它是 Chrome 特定的。 最佳答案 我怀疑这不是 Firebase 问题,而是
这是我第一次开发 AngularJS 应用程序并使用脚手架工具 Yeoman ( http://yeoman.io/ )。我想对我的一些图标使用 fontawesome ( http://fortaw
我知道您通常“应该”$ pip install 如果包没有 brew ,但如果有一个你想安装的 python 包,你可以使用 $ pip install或 $ brew install为了?例如,通过
我正在尝试通过 RVM 安装 Ruby 1.9.3。然而,当谈到安装 RubyGems 时,我得到了这个: curl: (22) The requested URL returned error: 4
我是真正提出问题的新手,但你去吧。 我一直在尝试按照安装指南添加 dnsname: https://github.com/containers/dnsname https://github.com/c
Studio更新至0.4.0 建筑产量为“需要1.8版Gradle”;将设置设置为1.8 bin目录; 建立 “要求1.9级”;将设置设置为1.9 bin; 建立 “要求1.8级” 啊。不知道该怎么做
我刚刚注意到 kernel.org 因维护而停机。是否有使用不同镜子的不同公式?或者我可以向 Homebrew 软件添加不同的来源(如 bundler ?)? 谢谢你的帮助! 最佳答案 快速解决方法:
当我运行时: peardev install phpunit/PHPUnit 我得到以下信息: No releases available for package "pear.phpunit.de/P
服务器操作系统为Fedora 24. 64bit。 我想安装 Git 2.6.6。 所以下载源码并安装。 此服务器离线。所以我不使用“yum”。 ./configure --prefix=/usr/l
我正在尝试在我自己的服务器(操作系统:Linux Ubuntu Server 12.04)上安装 OpenEdX,但我遇到了同样的错误。谁能帮帮我? TASK: [ insights | insta
我是一名优秀的程序员,十分优秀!