我在使用pt-table-checksum检查主从数据是否一致遇到的问题:
一个主,两个从
主:192.168.11.50 端口3306
从1:192.168.11.64 端口3306
从2:192.168.11.74 端口3307
pt-table-checksum可以很容易检查从1的数据是否一致,但是从2因为端口是3307,连接不上,如何解决?
一个主,两个从
主:192.168.11.50 端口3306
从1:192.168.11.64 端口3306
从2:192.168.11.74 端口3307
pt-table-checksum可以很容易检查从1的数据是否一致,但是从2因为端口是3307,连接不上,如何解决?
pt-table-checksum是在主机执行,但是客户端显示结果需要从从机取数据,不取数据pt-table-checksum怎么会知道两个数据不一致。除非你自己去从机的库查数据。
mysql> select this_crc,master_crc from checksums;
+----------+------------+
| this_crc | master_crc |
+----------+------------+
| c791c26d | c791c26d |
| 890c0f | 890c0f |
| 0 | 0 |
| 0 | 0 |
+----------+------------+
4 rows in set (0.00 sec)replace语句是计算本机的this_crc
update的语句是直接更新 master_crc为master上的校验值这个都是能从binlog里看出来的
在Master机的test库加入
CREATE TABLE `dsns` ( `id` int(11) NOT NULL AUTO_INCREMENT, `parent_id` int(11) DEFAULTNULL, `dsn` varchar(255) NOT NULL, PRIMARY KEY (`id`) );
– 写入从库信息
INSERT INTO dsns (parent_id,dsn) values(1,'h=192.168.11.64,u=checksums,p=123456,P=3306');
– 如果有多个从库,就插入多条记录.
INSERT INTO dsns (parent_id,dsn) values(1,'h=192.168.11.64,u=checksums,p=123456,P=3307');
执行pt-table-checksum命令时多加下面的参数即可。
--recursion-method=dsn=h=192.168.11.103,D=test,t=dsns