Percona Toolkit使用之pt-config-diff

郭坚壁
2023-12-01

     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

 类似资料: