我在使用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,连接不上,如何解决?

解决方案 »

  1.   

    pt-table-checksum只是在主库上执行insert语句  然后复制到从库上去  这和从库的端口有什么关系
      

  2.   

    最后显示比较结果,比较主从数据的时候,要从从机的checksums表中取数据,连不上,怎么取数据。
      

  3.   

    只在主机上执行pt-table-checksum就可以了,从来就不需要从从机取东西
      

  4.   

    只在主机上执行pt-table-checksum就可以了,从来就不需要从从机取东西
    pt-table-checksum是在主机执行,但是客户端显示结果需要从从机取数据,不取数据pt-table-checksum怎么会知道两个数据不一致。除非你自己去从机的库查数据。
      

  5.   

    只在主机上执行pt-table-checksum就可以了,从来就不需要从从机取东西pt-table-checksum是在主机执行,从机同步执行replace into 到checksums表,在从机的checksums表会知道哪里数据不一致。这部分数据是放到从机数据库中,pt-table-checksum想显示比较结果,就必须连接从机数据库。我觉得你并没有仔细研究过pt-table-checksum整个运转的机制。
      

  6.   

    只在主机上执行pt-table-checksum就可以了,从来就不需要从从机取东西pt-table-checksum是在主机执行,从机同步执行replace into 到checksums表,在从机的checksums表会知道哪里数据不一致。这部分数据是放到从机数据库中,pt-table-checksum想显示比较结果,就必须连接从机数据库。我觉得你并没有仔细研究过pt-table-checksum整个运转的机制。比较结果不就是在slave机器上执行select语句吗
    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里看出来的
      

  7.   

    已经解决。
    在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