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

  • ü 检查master和slave数据的一致性
  • ü 有效地对记录进行归档
  • ü 查找重复的索引
  • ü 对服务器信息进行汇总
  • ü 分析来自日志和tcpdump的查询
  • ü 当系统出问题的时候收集重要的系统信息
    percona-toolkit源自Maatkit和Aspersa工具,这两个工具是管理mysql的最有名的工具,现在Maatkit工具已经不维护了,请大家还是使用percona-toolkit吧!这些工具主要包括开发、性能、配置、监控、复制、系统、实用六大类,作为一个优秀的DBA,里面有的工具非常有用,如果能掌握并加以灵活应用,将能极大的提高工作效率。

安装mysql

如果没有安装,请看传送门

如果安装了,服务器启动有问题,请检查配置文件,查看日志。最好的解决方法就是log-error指定的错误日志中记录的信息,或者使用mysqld status命令来查看。

问题解决后,启动的时候可以选择mysqld_safe &,也可以使用mysqld --user=root来启动。最好的方式还是mysqld.server start,但是不一定能成功,错误日志中没有信息,找不出原因。

安装DBD::MySQL

DBD:MySQL是Perl5的MySQL数据库驱动。首先需要安装Perl,macOSX中默认安装了perl,使用命令perl -v可以查看perl的版本,如果没有perl命令,说明可能没有安装perl,需要自己安装perl。

如果安装了perl,接下来安装DBD::MySQL。

1
2
perl -MCPAN -e "install DBD::mysql"

如果之前没有对CPAN做过配置处理,安装时,会在用户名录下创建一个.cpan的文件下,生成一个配置文件*.cpan/CPAN/MyConfig.pm*。关于cpan的具体不谈,我们要做的是安装pt。

安装时,会询问:What approach do you want?让你选择local::lib,选项有sudo和manual。这里我们选择sudo即可。
安装时,其一会做test,其二需要把生成的libmysqlclient.dylib放到mysql安装的路径下的lib下,所以需要先安装mysql。

做测试连接时,默认是从/tmp/mysql.sock中与mysql建立socket连接的,但是mac默认的socket路径是 /var/lib/mysql/mysql.sock,所以,解决方案就是在/tmp/下建立软连接,或者把在/etc/my.cnf中修改socket的路径为/tmp/mysql.sock

安装DBD::MySQL的时候,建议mysql是正常运行的,这样安装测试时,创建测试账号,执行授权等操作时就可以看出问题。但也可以不启动,最多就是skip过测试。

最后看到:

1
2
3
4
5
6
7
8
9
10
11
12
13
Files found in blib/arch: installing files in blib/lib into architecture dependent library tree
Installing /Library/Perl/5.18/darwin-thread-multi-2level/auto/DBD/mysql/mysql.bs
Installing /Library/Perl/5.18/darwin-thread-multi-2level/auto/DBD/mysql/mysql.bundle
Installing /Library/Perl/5.18/darwin-thread-multi-2level/Bundle/DBD/mysql.pm
Installing /Library/Perl/5.18/darwin-thread-multi-2level/DBD/mysql.pm
Installing /Library/Perl/5.18/darwin-thread-multi-2level/DBD/mysql/GetInfo.pm
Installing /Library/Perl/5.18/darwin-thread-multi-2level/DBD/mysql/INSTALL.pod
Installing /usr/local/share/man/man3/Bundle::DBD::mysql.3pm
Installing /usr/local/share/man/man3/DBD::mysql.3pm
Installing /usr/local/share/man/man3/DBD::mysql::INSTALL.3pm
Appending installation info to /Library/Perl/Updates/5.18.2/darwin-thread-multi-2level/perllocal.pod
MICHIELB/DBD-mysql-4.041.tar.gz
sudo /usr/bin/make install -- OK

这时候,DBD::MySQL就安装成功了。

安装percona-toolkit

下载percona-toolkit:

1
wget https://www.percona.com/downloads/percona-toolkit/3.0.1/source/tarball/percona-toolkit-3.0.1.tar.gz

截止写本文时,最新版本是3.0.1,后续如果版本更新了,大家到官网查看,versionpercona-toolkit-3.0.1software:Source Code.选择Source Code即可看到tar.gz文件。点击可以直接下载,复制链接可以使用wget下载。

mac中建议安装软件路径放在/usr/local/Cellar/下面,比如percona-toolkit可以使用这样的路径: /usr/local/Cellar/percona-toolkit/3.0.1/`,不信你自己看看,mac使用brew安装的软件一定是放在Cellar下面,然后软件名,下一层则是版本号。

所以,建议下载好percona-toolkit后,解压(或者解压后移动)到/usr/local/Cellar/percona-toolkit/3.0.1/下面。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 解压
tar zxvf percona-toolkit-3.0.1.tar.gz
# 移动
mv percona-toolkit-3.0.1/ /usr/local/Cellar/percona-toolkit/3.0.1/
# 进入到安装目录
cd /usr/local/Cellar/percona-toolkit/3.0.1/
# perl编译Makefile.PL文件,生成配置Makefile、MYMETA.yml和MYMETA.json文件,下面是输出信息
# Writing Makefile for percona-toolkit
# Writing MYMETA.yml and MYMETA.json
perl ./Makefile.PL

# make ,执行Makefile文件
make

# make test
make test

# make install
sudo make install

执行make install时需要sudo的权限。执行之后,会看到安装信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
Installing /Library/Perl/5.18/Advisor.pm
Installing /Library/Perl/5.18/AdvisorRules.pm
Installing /Library/Perl/5.18/BinaryLogParser.pm
Installing /Library/Perl/5.18/ChangeHandler.pm
Installing /Library/Perl/5.18/CleanupTask.pm
Installing /Library/Perl/5.18/CompareQueryTimes.pm
Installing /Library/Perl/5.18/CompareResults.pm
Installing /Library/Perl/5.18/CompareWarnings.pm
Installing /Library/Perl/5.18/CopyRowsInsertSelect.pm
Installing /Library/Perl/5.18/Cxn.pm
Installing /Library/Perl/5.18/Daemon.pm
Installing /Library/Perl/5.18/Diskstats.pm
Installing /Library/Perl/5.18/DiskstatsGroupByAll.pm
Installing /Library/Perl/5.18/DiskstatsGroupByDisk.pm
Installing /Library/Perl/5.18/DiskstatsGroupBySample.pm
Installing /Library/Perl/5.18/DiskstatsMenu.pm
Installing /Library/Perl/5.18/DSNParser.pm
Installing /Library/Perl/5.18/DuplicateKeyFinder.pm
Installing /Library/Perl/5.18/EventAggregator.pm
Installing /Library/Perl/5.18/EventExecutor.pm
Installing /Library/Perl/5.18/EventTimeline.pm
Installing /Library/Perl/5.18/ExecutionThrottler.pm
Installing /Library/Perl/5.18/ExplainAnalyzer.pm
Installing /Library/Perl/5.18/FakeSth.pm
Installing /Library/Perl/5.18/FileIterator.pm
Installing /Library/Perl/5.18/FlowControlWaiter.pm
Installing /Library/Perl/5.18/GeneralLogParser.pm
Installing /Library/Perl/5.18/IndexLength.pm
Installing /Library/Perl/5.18/IndexUsage.pm
Installing /Library/Perl/5.18/JSONReportFormatter.pm
Installing /Library/Perl/5.18/KeySize.pm
Installing /Library/Perl/5.18/Lmo.pm
Installing /Library/Perl/5.18/MasterSlave.pm
Installing /Library/Perl/5.18/MockSth.pm
Installing /Library/Perl/5.18/MockSync.pm
Installing /Library/Perl/5.18/MockSyncStream.pm
Installing /Library/Perl/5.18/MySQLConfig.pm
Installing /Library/Perl/5.18/MySQLConfigComparer.pm
Installing /Library/Perl/5.18/MySQLProtocolParser.pm
Installing /Library/Perl/5.18/MySQLStatusWaiter.pm
Installing /Library/Perl/5.18/NibbleIterator.pm
Installing /Library/Perl/5.18/OobNibbleIterator.pm
Installing /Library/Perl/5.18/OptionParser.pm
Installing /Library/Perl/5.18/Outfile.pm
Installing /Library/Perl/5.18/PerconaTest.pm
Installing /Library/Perl/5.18/Pipeline.pm
Installing /Library/Perl/5.18/PodParser.pm
Installing /Library/Perl/5.18/Processlist.pm
Installing /Library/Perl/5.18/Progress.pm
Installing /Library/Perl/5.18/ProtocolParser.pm
Installing /Library/Perl/5.18/QueryHistory.pm
Installing /Library/Perl/5.18/QueryIterator.pm
Installing /Library/Perl/5.18/QueryParser.pm
Installing /Library/Perl/5.18/QueryReportFormatter.pm
Installing /Library/Perl/5.18/QueryReview.pm
Installing /Library/Perl/5.18/QueryRewriter.pm
Installing /Library/Perl/5.18/Quoter.pm
Installing /Library/Perl/5.18/RawLogParser.pm
Installing /Library/Perl/5.18/ReadKeyMini.pm
Installing /Library/Perl/5.18/ReplicaLagWaiter.pm
Installing /Library/Perl/5.18/ReportFormatter.pm
Installing /Library/Perl/5.18/ResultIterator.pm
Installing /Library/Perl/5.18/ResultWriter.pm
Installing /Library/Perl/5.18/Retry.pm
Installing /Library/Perl/5.18/RowChecksum.pm
Installing /Library/Perl/5.18/RowDiff.pm
Installing /Library/Perl/5.18/Runtime.pm
Installing /Library/Perl/5.18/Safeguards.pm
Installing /Library/Perl/5.18/Sandbox.pm
Installing /Library/Perl/5.18/Schema.pm
Installing /Library/Perl/5.18/SchemaIterator.pm
Installing /Library/Perl/5.18/SimpleTCPDumpParser.pm
Installing /Library/Perl/5.18/SlowLogParser.pm
Installing /Library/Perl/5.18/SlowLogWriter.pm
Installing /Library/Perl/5.18/SqlModes.pm
Installing /Library/Perl/5.18/SQLParser.pm
Installing /Library/Perl/5.18/TableChecksum.pm
Installing /Library/Perl/5.18/TableChunker.pm
Installing /Library/Perl/5.18/TableNibbler.pm
Installing /Library/Perl/5.18/TableParser.pm
Installing /Library/Perl/5.18/TableSyncChunk.pm
Installing /Library/Perl/5.18/TableSyncer.pm
Installing /Library/Perl/5.18/TableSyncGroupBy.pm
Installing /Library/Perl/5.18/TableSyncNibble.pm
Installing /Library/Perl/5.18/TableSyncStream.pm
Installing /Library/Perl/5.18/TableUsage.pm
Installing /Library/Perl/5.18/TcpdumpParser.pm
Installing /Library/Perl/5.18/TCPRequestAggregator.pm
Installing /Library/Perl/5.18/TextResultSetParser.pm
Installing /Library/Perl/5.18/Transformers.pm
Installing /Library/Perl/5.18/UpgradeResults.pm
Installing /Library/Perl/5.18/VariableAdvisorRules.pm
Installing /Library/Perl/5.18/VersionCheck.pm
Installing /Library/Perl/5.18/VersionCompare.pm
Installing /Library/Perl/5.18/VersionParser.pm
Installing /Library/Perl/5.18/WeightedAvgRate.pm
Installing /Library/Perl/5.18/bash/alt_cmds.sh
Installing /Library/Perl/5.18/bash/collect.sh
Installing /Library/Perl/5.18/bash/collect_mysql_info.sh
Installing /Library/Perl/5.18/bash/collect_system_info.sh
Installing /Library/Perl/5.18/bash/daemon.sh
Installing /Library/Perl/5.18/bash/log_warn_die.sh
Installing /Library/Perl/5.18/bash/mysql_options.sh
Installing /Library/Perl/5.18/bash/parse_options.sh
Installing /Library/Perl/5.18/bash/report_formatting.sh
Installing /Library/Perl/5.18/bash/report_mysql_info.sh
Installing /Library/Perl/5.18/bash/report_system_info.sh
Installing /Library/Perl/5.18/bash/safeguards.sh
Installing /Library/Perl/5.18/bash/subshell.sh
Installing /Library/Perl/5.18/bash/summary_common.sh
Installing /Library/Perl/5.18/bash/tmpdir.sh
Installing /Library/Perl/5.18/HTTP/Micro.pm
Installing /Library/Perl/5.18/Lmo/Meta.pm
Installing /Library/Perl/5.18/Lmo/Object.pm
Installing /Library/Perl/5.18/Lmo/Role.pm
Installing /Library/Perl/5.18/Lmo/Types.pm
Installing /Library/Perl/5.18/Lmo/Utils.pm
Installing /Library/Perl/5.18/Percona/Test.pm
Installing /Library/Perl/5.18/Percona/Toolkit.pm
Installing /Library/Perl/5.18/Percona/XtraDB/Cluster.pm
Installing /usr/local/share/man/man1/percona-toolkit.1p
Installing /usr/local/share/man/man1/pt-align.1p
Installing /usr/local/share/man/man1/pt-archiver.1p
Installing /usr/local/share/man/man1/pt-config-diff.1p
Installing /usr/local/share/man/man1/pt-deadlock-logger.1p
Installing /usr/local/share/man/man1/pt-diskstats.1p
Installing /usr/local/share/man/man1/pt-duplicate-key-checker.1p
Installing /usr/local/share/man/man1/pt-fifo-split.1p
Installing /usr/local/share/man/man1/pt-find.1p
Installing /usr/local/share/man/man1/pt-fingerprint.1p
Installing /usr/local/share/man/man1/pt-fk-error-logger.1p
Installing /usr/local/share/man/man1/pt-heartbeat.1p
Installing /usr/local/share/man/man1/pt-index-usage.1p
Installing /usr/local/share/man/man1/pt-ioprofile.1p
Installing /usr/local/share/man/man1/pt-kill.1p
Installing /usr/local/share/man/man1/pt-mext.1p
Installing /usr/local/share/man/man1/pt-mysql-summary.1p
Installing /usr/local/share/man/man1/pt-online-schema-change.1p
Installing /usr/local/share/man/man1/pt-pmp.1p
Installing /usr/local/share/man/man1/pt-query-digest.1p
Installing /usr/local/share/man/man1/pt-show-grants.1p
Installing /usr/local/share/man/man1/pt-sift.1p
Installing /usr/local/share/man/man1/pt-slave-delay.1p
Installing /usr/local/share/man/man1/pt-slave-find.1p
Installing /usr/local/share/man/man1/pt-slave-restart.1p
Installing /usr/local/share/man/man1/pt-stalk.1p
Installing /usr/local/share/man/man1/pt-summary.1p
Installing /usr/local/share/man/man1/pt-table-checksum.1p
Installing /usr/local/share/man/man1/pt-table-sync.1p
Installing /usr/local/share/man/man1/pt-table-usage.1p
Installing /usr/local/share/man/man1/pt-upgrade.1p
Installing /usr/local/share/man/man1/pt-variable-advisor.1p
Installing /usr/local/share/man/man1/pt-visual-explain.1p
Installing /usr/local/bin/pt-align
Installing /usr/local/bin/pt-archiver
Installing /usr/local/bin/pt-config-diff
Installing /usr/local/bin/pt-deadlock-logger
Installing /usr/local/bin/pt-diskstats
Installing /usr/local/bin/pt-duplicate-key-checker
Installing /usr/local/bin/pt-fifo-split
Installing /usr/local/bin/pt-find
Installing /usr/local/bin/pt-fingerprint
Installing /usr/local/bin/pt-fk-error-logger
Installing /usr/local/bin/pt-heartbeat
Installing /usr/local/bin/pt-index-usage
Installing /usr/local/bin/pt-ioprofile
Installing /usr/local/bin/pt-kill
Installing /usr/local/bin/pt-mext
Installing /usr/local/bin/pt-mysql-summary
Installing /usr/local/bin/pt-online-schema-change
Installing /usr/local/bin/pt-pmp
Installing /usr/local/bin/pt-query-digest
Installing /usr/local/bin/pt-show-grants
Installing /usr/local/bin/pt-sift
Installing /usr/local/bin/pt-slave-delay
Installing /usr/local/bin/pt-slave-find
Installing /usr/local/bin/pt-slave-restart
Installing /usr/local/bin/pt-stalk
Installing /usr/local/bin/pt-summary
Installing /usr/local/bin/pt-table-checksum
Installing /usr/local/bin/pt-table-sync
Installing /usr/local/bin/pt-table-usage
Installing /usr/local/bin/pt-upgrade
Installing /usr/local/bin/pt-variable-advisor
Installing /usr/local/bin/pt-visual-explain
Appending installation info to /Library/Perl/Updates/5.18.2/darwin-thread-multi-2level/perllocal.pod

安装Term::ReadKey

基本上所有Linux系统的安装文档中都在强调Term::ReadKey,在mac中,似乎不安装这一部分也不会有影响。

需要安装Term::ReadKey 包,否则会报perl(Term::ReadKey)>=2.10 is needed by percona-toolkit-2.1.1-1.noarch错误

如果真的出现如大家所遇到的问题,那么安装就一下也无妨。
在命令窗口输入cpan命令回车,出现cpan的控制台。

1
install Term::ReadKey

这样安装即可,然后再安装percona-toolkit。

命令说明

传送门