pt-table-checksum

pt-table-checksum使用实践

我们两清 提交于 2020-02-23 01:45:47
在工作中接触最多的就是mysql replication,由于现在公司也还在使用mysql 5.1.x版本,在复制方面还是比较多的问题,比如主库宕机或者从库宕机都会导致复制中断,通常我们需要进行人为修复(mysql 5.5版本解决大部分问题),或者很多时候需要把一个从库提升为主库,但对从库和主库的数据一致性不能保证一样,所以就利用 pt-table-checksum 工作来检查主从的一致性,以及通过 pt-table-sync 如何修复这些不一致的数据。当然如果你数据量小,slave只是当做一个备份使用,那么出现数据不一致完全可以重做,或者通过其他方法解决。如果数据量非常大,重做就是非常蛋碎的一件事情了。^_^ 工具安装: 1.软件下载: [root@MySQL-01 ~]# wget http://www.percona.com/downloads/percona-toolkit/LATEST/RPM/percona-toolkit-2.2.7-1.noarch.rpm 2.安装该工具依赖的软件包: [root@MySQL-01 ~]# yum install perl-IO-Socket-SSL perl-DBD-MySQL perl-Time-HiRes -y 3.软件安装: [root@MySQL-01 ~]# rpm -ivh percona-toolkit-2.2.7

pt-table-checksum校验与pt-table-sync修复数据

风格不统一 提交于 2020-02-23 01:14:55
1:下载工具包 登录网站下载相应的工具包 https://www.percona.com/downloads/percona-toolkit/LATEST/ 2:安装 (1)yum安装: sudo yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm yum list | grep percona-toolkit 结果集显示以下证明安装成功: percona-toolkit.noarch 3.0.0-rc percona-release-noarch 然后进行安装 sudo yum install percona-toolkit (2)解压安装包: [root@localhost home]# cd toolkit/ [root@localhost toolkit]# ls percona-toolkit-2.2.19.tar.gz [root@localhost toolkit]# tar -xvf percona-toolkit.tar.gz 至此来说已经安装了percona 的toolKit工具包,下面主要测一下pt-table-checksum校验与pt-table-sync,前者主要用于数据的校验,验证主从是否一致

pt-table-checksum解读

旧城冷巷雨未停 提交于 2020-02-23 01:13:51
pt-table-checksum是目前可以说是最好的查看主从一致性的工具 先来个使用例子,有助快速上手使用 在主库执行: mysql>GRANT SELECT, PROCESS, SUPER, REPLICATION SLAVE,CREATE,DELETE,INSERT,UPDATE ON *.* TO 'USER'@'MASTER_HOST' identified by 'PASSWORD'; 注:创建用户,这些权限都是必须的,否则后续执行时会报错,当然,如果不想授予这么多权限,那就需要把权限对应的活先自己干了或者直接在命令行指定,比如如果不想设create权限的话,需要自己指定库和表(具体参看下面的参数介绍:--replicate) shell> ./pt-table-checksum --host='master_host' --user='user' --password='password' --port='port' --databases=databases --tables=tables --recursion-method=processlist 注: (1)在有些情况下,recursion-method如果不设会报错:Diffs cannot be detected because no slaves were found. 其参数有四:processlist

主从校验工具pt-table-checksum和pt-table-sync工作原理

回眸只為那壹抹淺笑 提交于 2019-12-02 03:01:32
  pt-table-checksum和pt-table-sync是常用来做MySQL主从数据一致性校验的工具,pt-table-checksum只校验数据,不能对数据进行同步;pt-table-sync不仅可以检验数据,还可以将不一致的数据同步。 工作原理   两个工具的工作原理基本差不多,分开说明。为了说明简单易懂,抛开了所有内部函数,只是简易的介绍一下工具的工作过程。 pt-table-checksum工作原理 1.单行数据checksum值的计算   首先检查表结构,获取每列的数据类型,把所有类型都转换为字符串,把一整行数据拼接成一个很长的字符串,这行数据计算出一个校验值。就是通过这个值进行主从比较的,如果主从两个值一致,则数据一致,反之亦然。 2.数据块checksum值的计算   对于大表,进行单行的比较,势必工作量很大。数据块的比较就顺势而出,其实和单行拼接的原理类似,整块比较只是把一个数据块作为一个单位,拼接成一个长字符串,计算出校验值。说是数据块,其实是按索引来取值进行比较的。因此对于块计算,就需要表有主键或唯一索引。 3.主从一致性比较   主库上计算的过程sql通过binlog传递到从库进行从库计算,主库的计算结果存储到一个pt.checksums统计表中,然后将表通过binlog日志方式传递到从库。从库根据计算过程sql计算出数据块的校验值,并把值更新到pt

pt-table-checksum和pt-table-sync使用

独自空忆成欢 提交于 2019-11-27 10:17:41
pt-table-checksum和pt-table-sync使用 数据库版本: 5.6.25 pt工具版本:2.2.14 主从关系一:不同机器同一端口 10.10.228.163:4306 ( rescs5) 10.9.33.154 : 4306 rescs6) 主从关系二:同一机器不同端口 10.10.228.163:3306 ( rescs5) 10.10.228.163 : 3307 rescs5) pt-table-checksum 原理 1)、单行数据checksum值的计算 Pt工具先检查表的结构,并且获取表中每一列的数据类型,把所有数据类型都转化为字符串,然后使用concat_ws()函数进行连接,然后使用crc32计算出该行的checksum值。 2)、数据块checksum值的计算 如果一行一行去计算 checksum值,再去和从库比较,效率会很低。pt-table-checksum可以利用表中的索引,将表的数据split成一个个chunk,计算的时候也是以chunk为单位。pt-table-checksum引入了聚合函数BIT_XOR()。它的功能可以理解为将这个chunk内的所有行数据拼接起来,再计算CRC32的值,就得到了这个chunk的checksum值。 3)、pt-table-checksum通过在主服务器上执行检查语句