pt-config-diff的功能是diff不同的MySQL配置文件以及不同的服务器变量设置。即diff出MySQL实例之间的不同配置。
用法如下:
pt-config-diff [OPTIONS] CONFIG CONFIG [CONFIG...]
CONFIG可以是配置文件或者DSN(MySQL访问连接)。至少需要给出两个CONFIG。就像标准Unix的“ diff ”程序一样,如果没有找到不同,就不会有输出。
①通过“ SHOW VARIABLES ”命令结果diff两台MySQL实例host1和host2:
pt-config-diff h=host1 h=host2
②diff “ my.cnf ”文件中的“ [mysqld] ”配置部分和MySQL实例host1的配置:
pt-config-diff /etc/my.cnf h=host1
③diff两个配置文件的“ [mysqld] ”部分
pt-config-diff /etc/my-small.cnf /etc/my-large.cnf
pt-config-diff检查来自于通过命令行指定的两个或者两个以上的CONFIG中的服务器系统变量值,以此来diff不同MySQL实例间的配置。一个CONFIG可以是DSN,包含“ mysqld --help --verbose ”、“ my_print_defaults ”和“ SHOW VARIABLES ”输出的文件,或者配置文件(例如my.cnf)。
对于每个DSN CONFIG,pt-config-diff连接到MySQL然后通过执行“ SHOW /*!40103 GLOBAL*/ VARIABLES ”获取系统变量和其对应设置值。这是一个“ 活动配置 ”,因为其给出了MySQL(当前)正在实际运行的服务器变量值。
只有所有的CONFIG都包含的变量才会进行比较。如果一个变量并没有体现,就不能知道或者安全地判定其值。例如,如果比较配置文件(例如my.cnf)和一个活动配置(例如来自DSN CONFIG的“ SHOW VARIABLES ”),配置文件可能仅包含小部分变量的设置,而活动配置包含了每一个变量配置。这时候只有在两个CONFIG中都体现的变量值才会被比较。
配置文件和DSN给出最好的比对结果。
以下为个人本地环境的测试数据。
root@ubuntu:~# pt-config-diff h=192.168.136.129, P=3306, u=root, p=123456 h=192.168.136.128, P=3306, u=root, p=123456 --report-width=120
23 config differences
Variable ubuntu ubuntu ubuntu ubuntu Bilery.Zoo Bilery.Zoo Bilery.Zoo Bilery.Zoo
========================= ========== ========== ========== ========== ========== ========== ========== ==========
binlog_rows_query_log_... ON ON ON ON OFF OFF OFF OFF
expire_logs_days 5 5 5 5 0 0 0 0
general_log_file /app/my... /app/my... /app/my... /app/my... /app/my... /app/my... /app/my... /app/my...
gtid_purged c45589c... c45589c... c45589c... c45589c... c45589c... c45589c... c45589c... c45589c...
hostname ubuntu ubuntu ubuntu ubuntu Bilery.Zoo Bilery.Zoo Bilery.Zoo Bilery.Zoo
innodb_deadlock_detect ON ON ON ON
innodb_version 5.7.16 5.7.16 5.7.16 5.7.16 5.7.13 5.7.13 5.7.13 5.7.13
log_bin ON ON ON ON OFF OFF OFF OFF
log_bin_basename /app/my... /app/my... /app/my... /app/my...
log_bin_index /app/my... /app/my... /app/my... /app/my...
log_error /app/my... /app/my... /app/my... /app/my... /app/my... /app/my... /app/my... /app/my...
pid_file /app/my... /app/my... /app/my... /app/my... /app/my... /app/my... /app/my... /app/my...
relay_log relay-bin relay-bin relay-bin relay-bin
relay_log_basename /app/my... /app/my... /app/my... /app/my...
relay_log_index /app/my... /app/my... /app/my... /app/my...
report_host 192.168... 192.168... 192.168... 192.168...
report_password 123456 123456 123456 123456
report_user root root root root
secure_file_priv NULL NULL NULL NULL
server_id 1024 1024 1024 1024 1025 1025 1025 1025
server_uuid c45589c... c45589c... c45589c... c45589c... 342fd09... 342fd09... 342fd09... 342fd09...
slow_query_log_file /app/my... /app/my... /app/my... /app/my... /app/my... /app/my... /app/my... /app/my...
version 5.7.16-log 5.7.16-log 5.7.16-log 5.7.16-log 5.7.13 5.7.13 5.7.13 5.7.13
root@ubuntu:~#
root@ubuntu:~#
root@ubuntu:~# pt-config-diff /etc/my.cnf h=192.168.136.128, P=3306, u=root, p=123456 --report-width=120
5 config differences
Variable /etc/my.cnf Bilery.Zoo Bilery.Zoo Bilery.Zoo Bilery.Zoo
========================= ================ ========== ========== ========== ==========
binlog_rows_query_log_... ON OFF OFF OFF OFF
expire_logs_days 5 0 0 0 0
log_bin master-bin OFF OFF OFF OFF
log_bin_index master-bin.index
server_id 1024 1025 1025 1025 1025
root@ubuntu:~#
root@ubuntu:~#
root@ubuntu:~# echo -e "[mysqld]\nsocket = /play/mysql.sock\nbasedir = /play/mysql\ndatadir = /play/mysql/data" > /etc/my.cnf.play
root@ubuntu:~# pt-config-diff /etc/my.cnf /etc/my.cnf.play
3 config differences
Variable /etc/my.cnf /etc/my.cnf.play
========================= =============== ================
basedir /app/mysql /play/mysql
datadir /app/mysql/data /play/mysql/data
socket /tmp/mysql.sock /play/mysql.sock
root@ubuntu:~#
root@ubuntu:~#
参考:
https://www.percona.com/doc/percona-toolkit/LATEST/pt-config-diff.html