项目地址: MySQLTuner-perl
MySQL 系统变量官方文档: Server System Variables
MySQLTuner
MySQLTuner 是一个用 Perl 编写的脚本,它允许你快速查看 MySQL 安装并进行调整以提高性能和稳定性。检索当前配置变量和状态数据,并以简要格式显示,以及一些基本性能建议。MySQLTuner 是一个只读脚本。它不会写入任何配置文件,不会改变任何守护进程的状态。它将为您提供服务器性能的概览,并为您在完成后可以进行的改进提出一些基本建议。
MySQLTuner 在最新版本中支持约 300 个 MySQL/MariaDB/Percona Server 指标。
MySQLTuner 指标收集逐周增加,支持许多配置,例如 Galera Cluster、TokuDB、Performance schema、Linux OS 指标、InnoDB、MyISAM、Aria ……
您可以在此处找到有关这些指标的更多详细信息:指标说明。
安装 MySQLTuner
方法一: 脚本直接下载(最简单的方法)
1
2
3wget http://mysqltuner.pl/ -O mysqltuner.pl
wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/basic_passwords.txt -O basic_passwords.txt
wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/vulnerabilities.csv -O vulnerabilities.csv使用 git 来下载整个存储库。
1
2
3git clone https://github.com/major/MySQLTuner-perl.git
# 或
git clone --depth 1 -b master https://github.com/major/MySQLTuner-perl.git
MySQL 5.6 安装 Sysschema
Sysschema 默认安装在 Oracle 的 MySQL 5.7 和 MySQL 8 下。默认情况下,在 MySQL 5.6/5.7/8 上,默认启用性能模式。
对于以前的 5.6 版本,可以按照以下命令创建一个新的数据库 sys,其中包含非常有用的性能模式视图:
1
2
3
4
5
6curl "https://codeload.github.com/mysql/mysql-sys/zip/master" > sysschema.zip
# check zip file
unzip -l sysschema.zip
unzip sysschema.zip
cd mysql-sys-master
mysql -uroot -p < sys_56.sql
MariaDB 10.x 的可选性能架构和系统架构安装
MariaDB 10.x 下默认不安装 Sysschema。默认情况下,在 MariaDB 上,性能模式默认是禁用的。考虑在 my.cnf 配置文件中激活性能模式:
1
2[mysqld]
performance_schema = on可以按照此命令创建一个新的数据库系统,其中包含非常有用的性能模式视图:
1
2
3
4
5
6curl "https://codeload.github.com/FromDual/mariadb-sys/zip/master" > mariadb-sys.zip
# check zip file
unzip -l mariadb-sys.zip
unzip mariadb-sys.zip
cd mariadb-sys-master/
mysql -u root -p < ./sys_10.sql性能架构安装的错误和解决方案
1
2ERROR at line 21: Failed to open file './tables/sys_config_data_10.sql -- ported', error: 2
Have a look at #452 solution given by @ericx
性能提示
元数据统计更新会严重影响数据库服务器和 MySQLTuner 的性能。确保 innodb_stats_on_metadata 被禁用。
1
set global innodb_stats_on_metadata = 0;
MySQLTuner 的登录凭据
该脚本将尽最大努力通过任何可能的方式登录。它将检查 ~/.my.cnf 文件、Plesk 密码文件和空密码 root 登录。如果这些都不可用,则系统会提示您输入密码。如果您希望脚本在没有用户干预的情况下以自动方式运行,请使用以下方式处理
方法一: 在用户的主目录中创建一个
.my.cnf
文件,其中包含:1
2
3[client]
user=someusername
password=thatuserspassword创建它后,请确保它归您的用户所有,并且文件上的模式为 0600。这应该可以防止窥探者在正常情况下获取您的数据库登录凭据。
方法二: 使用 mysql_config_editor 实用程序
1
2# mysql_config_editor set --login-path=client --user=someusername --password --host=localhost
Enter password: ********之后,
~/.mylogin.cnf
将被创建并具有适当的访问权限。要获取有关存储凭据的信息,请使用以下命令:1
2
3
4
5
6# mysql_config_editor print
[client]
user = someusername
password = *****
host = localhost授权 mysqltuner 用户的最低权限
1
mysql> GRANT SELECT,PROCESS,EXECUTE,REPLICATION CLIENT,SHOW DATABASES,SHOW VIEW ON *.* TO 'mysqltuner'@'localhost' identified by pwd1234;
MySQL 8 或 MariaDB 10.5 数据库中特定 mysqltuner 用户所需的最低权限
1
mysql> GRANT SELECT,PROCESS,EXECUTE,REPLICA MONITOR,SHOW DATABASES,SHOW VIEW ON *.* TO 'mysqltuner'@'localhost' identified by pwd1234;
MySQLTuner 使用方法
本地最简单的使用
1
2
3
4
5perl mysqltuner.pl --host 127.0.0.1
# 或者
./mysqltuner.pl --socket /var/lib/mysql/mysql.sock也可以添加执行权限(chmod +x mysqltuner.pl),这样就可以在不直接调用 perl 的情况下执行它。
远程最简单的使用
1
perl mysqltuner.pl --host targetDNS_IP --user admin_user --pass admin_password
在不调试的情况下启用 MySQL/MariaDb 的最大输出信息
1
2perl mysqltuner.pl --verbose
perl mysqltuner.pl --buffers --dbstat --idxstat --sysstat --pfstat --tbstat为您的 MariaDB 或 MySQL 版本启用 CVE 漏洞检查
1
perl mysqltuner.pl --cvefile=vulnerabilities.csv
将结果写入文件并显示信息
1
perl mysqltuner.pl --outputfile /tmp/result_mysqltuner.txt
将结果写入文件而不输出信息
1
perl mysqltuner.pl --silent --outputfile /tmp/result_mysqltuner.txt
使用模板模型根据 Text::Template 语法自定义您的报告文件。
1
perl mysqltuner.pl --silent --reportfile /tmp/result_mysqltuner.txt --template=/tmp/mymodel.tmpl
启用调试信息
1
perl mysqltuner.pl --debug
如果需要,更新 MySQLTuner 和数据文件(密码和 cve)
1
perl mysqltuner.pl --checkversion --updateversion
MySQL 报告分析
重要关注
[!!]
(中括号有叹号的项),例如[!!] Maximum possible memory usage: 4.8G (244.13% of installed RAM)
,表示内存已经严重用超了。关注最后给的建议
Recommendations
。