pt-config-diff进行mysql配置文件和系统变量值对比
通过此工具可以对比master、slave的配置是否有差异,对比各个版本的差异等。
Usage
pt-config-diff [OPTIONS] CONFIG CONFIG [CONFIG...]
CONFIG能为一文件名(包含mysqld --help --verbose,my_print_defaults,show variables的输出的文件或mysql的选项配置文件)或DSN,必须给定两个CONFIG源,如unix的diff命令,如果没有不同,将不输出信息。
对每个DSN CONFIG,pt-config-diff连接到mysql,执行SHOW /*!40103 GLOBAL*/ VARIABLES;查询变量和值。
仅仅变量在所有CONFIG都存在时,才进行对比。
1、对比10.0.37.122(端口为3306实例)和10.0.37.123(端口为3307实例)的show variables的值:
pt-config-diff h=10.0.37.122,P=3306,u=sysbench,p=sysbench h=10.0.37.123,P=3307,u=sysbench,p=sysbench
因用户名和密码相同,也可以使用:
pt-config-diff -usysbench -psysbench h=10.0.37.122,P=3306 h=10.0.37.123,P=3307
2、对比配置文件的[mysqld]部分跟主机show variables的配置:
pt-config-diff -usysbench -psysbench my.cnf h=10.0.37.123,P=3307
3、对比两个配置文件的[mysqld]部分:
pt-config-diff my.cnf ../mysql-5.6.19-linux-glibc2.5-x86_64/my.cnf
输出信息:
如果变量值没有不同,将不输出任何信息(退出码为0)。如果有不同,将打印报告到标准输出,如:
# pt-config-diff h=10.0.37.122 h=10.0.37.123 --user=sysbench --password=sysbench
46 config differences #显示有多少个变量值不同
Variable myhost01 myhost02 #显示主机名或配置文件名
========================= ========================= =========================
basedir /opt/mysql-5.6.19-linu... /opt/Percona-Server-5.... #显示不同的变量和值
binlog_format ROW STATEMENT
character_set_client utf8 gbk
character_set_connection utf8 gbk
character_set_database utf8 gbk
character_set_results utf8 gbk
character_set_server utf8 gbk
character_sets_dir /opt/mysql-5.6.19-linu... /opt/Percona-Server-5....
collation_connection utf8_general_ci gbk_chinese_ci
collation_database utf8_general_ci gbk_chinese_ci
collation_server utf8_general_ci gbk_chinese_ci
datadir /data/mysql56/ /data/percona56/
event_scheduler DISABLED OFF
general_log_file /data/mysql56/myhost01... /data/percona56/myhost...
hostname myhost01 myhost02
innodb_buffer_pool_size 5368709120 17179869184
运行命令后在/tmp目录创建percona-version-check文件,第二次运行时将直接读取。在进行检查时,要先移除该文件。
工具命令选项:
--ask-pass:当连接到mysql时,提示输入密码
--charset,-A:默认字符集设置
--config:指定工具的配置文件,读逗号分隔的配置文件列表,如果指定,必须是命令行的第一个参数,如果没有指定CONFIG,等于--defaults-file选项
--database,-D:连接到指定的数据库
--default-file,-F:仅仅读mysql选项来自给定的文件,必须给配置文件的绝对路径
--help:输出帮助信息
--host,-h:连接到哪个主机
--[no]ignore-case:对比变量,不区分大小写
--ignore-variables:忽略指定变量不进行对比
--password,-p:连接到数据库的密码
--pid:创建一个pid文件,如果pid文件已经存在,工具将不运行,当工具退出时,自动移除pid文件
--port,-P:连接到mysql的端口号
--[no]report:打印mysql配置不同的报告到STDOUT
--report-width:默认78,截断报告行到多少字符
--set-vars:设置mysql变量,用逗号分隔的variable=value列表,默认设置wait_timeout=10000
--socket,-S:指定连接的socket文件
--user,-u:指定连接数据库的用户名
调试:这是环境变量PTDEBUG=1,输出调试信息到STDERR
PTDEBUG=1 pt-config-diff ...
总结:
1、该工具只能对CONFIG中都出现的变量才进行对比;
2、不能指定对比某些变量,如对比binlog_format,server_id;
来自为知笔记(Wiz)