1.版本
1.1 pt工具版本
pt-config-diff --version
pt-config-diff 2.2.15
1.2 操作系统版本
cat /etc/issue
CentOS release 6.6 (Final)
Kernel \r on an \m
2.问题描述
我在使用pt-config-diff 工具对比两个cnf文件的时候报如下错误:
pt-config-diff my.cnfbak1 my.cnfbak2 Failed to parse MySQL config at /usr/bin/pt-config-diff line 2979.pt-config-diff工具肯定是没有问题的,因为我在使用pt-config-diff比较两个实例的 参数的时候是没有问题的
pt-config-diff h=127.0.0.1 --port=3306--user=root --password=root h=172.172.178.76 --user=root --port=3306--password=root >>该语句是能够正常输出的
3.问题解决
万能的谷歌和百度没有找到相关信息,只能靠自己排查了。最后发现了问题所在(不知道这个问题算不算bug)。分析那两个cnf文件报错是因为 cnf文件中 有两个以上的[mysqld] (我们知道pt-config-idff比较的就是 [mysqld] 部分的参数),即使其他的[mysqld]已经被#号注释也没有,只要有多余一个[mysqld]在cnf文件中 ,使用pt-config-diff解析就会报上面的错误。我删除cnf中多余[mysqld](我的cnf中多了一个被#号注释掉的[mysqld])后,再次执行pt-config-diff my.cnfbak1 my.cnfbak2 成功
pt-config-diff my.cnfbak1 my.cnfbak2 2 config differences Variable my.cnfbak1 my.cnfbak2 ========================= ========== ========== lower_case_table_names 0 1 max_connect_errors 50 500