zoukankan      html  css  js  c++  java
  • percona工具pt-table-checksum

    利用pt-table-checksum进行数据库同步检查

    rpm方式#wget percona.com/get/percona-toolkit.rpm

    源码方式#wget http://www.percona.com/downloads/percona-toolkit/2.2.1/percona-toolkit-2.2.8.tar.gz

    #yum install perl perl-CPAN perl-DBD-MySQL perl-Time-HiRes

    解压,#perl Makefile.PL;make;make install

    登陆slave和master(两边都要)

    mysql>grant select,create,drop,delete,index,execute,super,process,replication slave on *.* to ptsum@'127.0.0.1' identified by 'ptchecksums';

    mysql>grant select,create,drop,delete,index,execute,super,process,replication slave on *.* to ptsum@'master's IP' identified by 'ptchecksums';

    mysql>grant select,create,drop,delete,index,execute,super,process,replication slave on *.* to ptsum@'slave's IP' identified by 'ptchecksums';

    
    
    在新版本的pt-table-ckecksum不用自己添加checksums表,

    #pt-table-checksum  --nocheck-replication-filters --replicate=test.checksums --databases=a,b,c --no-check-binlog-format h=slave的IP,u=username,p=password,P=port
    命令表示
    不检查复制过滤器,把检查结果写到mysql中test库中的checksums表,检查的库为a,b,c,不检查binlog日志格式,并指定相关相信(地址,用户名,密码与商品)
    如果binlog日志格式为row的话会报错,通过上面--no-check-binlog-format来去除binlog日志检查,以防报错
    此时如果提示Diffs cannot be detected because no slaves were found.  Please read the --recursion-method documentation for information.
    需要添加一个mysql路由记录

    登陆主库

    mysql>CREATE TABLE `test.dsns` ( `id` int(11) NOT NULL AUTO_INCREMENT,`parent_id` int(11) DEFAULT NULL,`dsn` varchar(255) NOT NULL,PRIMARY KEY (`id`));

    mysql>use test

    mysql>insert into dsns values(1,1,'h=slave的IP,u=username,p=password,P=3306');
    在数据库test中新建一张mysql的路由表,记录slave连接方式,
    #pt-table-checksum  --nocheck-replication-filters --replicate=test.checksums --databases=a,b,c --no-check-binlog-format h=master的ip,u=username,p=password,P=3306 --recursion-method dsn=D=test,t=dsns
    命令表示:用。dsn方式进行检查,D指上面存放mysql的路由表的库,t是指表名


    其中一些字段的说明
    TS            :完成检查的时间。
    ERRORS        :检查时候发生错误和警告的数量。
    DIFFS         :0表示一致,1表示不一致。当指定--no-replicate-check时,会一直为0,当指定--replicate-check-only会显示不同的信息。
    ROWS          :表的行数。
    CHUNKS        :被划分到表中的块的数目。
    SKIPPED       :由于错误或警告或过大,则跳过块的数目。
    TIME          :执行的时间。
    TABLE         :被检查的表名。

    --nocheck-replication-filters :不检查复制过滤器,建议启用。后面可以用--databases来指定需要检查的数据库。
    --no-check-binlog-format      : 不检查复制的binlog模式,要是binlog模式是ROW,则会报错。
    --replicate-check-only :只显示不同步的信息。
    --replicate=   :把checksum的信息写入到指定表中,建议直接写到被检查的数据库当中。 
    --databases=   :指定需要被检查的数据库,多个则用逗号隔开。
    --tables=      :指定需要被检查的表,多个用逗号隔开
    h=127.0.0.1    :Master的地址
    u=root         :用户名
    p=123456       :密码
    P=3306         :端口
    dsn=D          :表示用dsn方式进行检查,D为database
    t=dsns         :表示用这张表,
     检查同步后,可以用pt-table-sync进行同步,具体可以看下博客
    http://www.cnblogs.com/2myroad/p/3842774.html
     
     

     

  • 相关阅读:
    python操作redis
    python正则表达式-案例
    hive序列化和反序列化serde
    python配置文件
    Java写入的常用技巧
    Java从string数组创建临时文件
    Java官方操纵byte数组的方式
    python实例方法、静态方法和类方法
    ast.literal_eval(转)
    impala学习笔记
  • 原文地址:https://www.cnblogs.com/2myroad/p/3837997.html
Copyright © 2011-2022 走看看