mysql 数据一致性检测 pt-table-checksum

工具pt-table-checksum
1从库设置report_host,report_port,并开启start slave

2 主库建立test表,并插入数据,此时从库也进行正常插入
insert into test values(111,222);

3 主库上执行
pt-table-checksum --nocheck-replication-filters --no-check-binlog-format --replicate=cnt.checksums --databases="abc" h=10.10.10.101,u=slave,p="123456",P=3306
结论:DIFFS 为0,一致性无误
            TS ERRORS  DIFFS     ROWS  CHUNKS SKIPPED    TIME TABLE
02-11T15:27:13      0      0        0       1       0   0.012 abc.code_dbinfo
02-11T15:27:13      0      0     9177       4       0   0.055 abc.abc_seller_distribution_ref
02-11T15:27:13      0      0     1398       1       0   0.014 abc.abc_seller_info
02-11T15:27:14      0      0    77342       1       0   1.083 abc.abc_seller_order_kpi_hours
02-11T15:27:14      0      0        4       1       0   0.018 abc.sys_dept
02-11T15:27:14      0      0       13       1       0   0.011 abc.sys_dict
02-11T15:27:15      0      0        0       1       0   0.011 abc.sys_expense
02-11T15:27:15      0      0       49       1       0   0.012 abc.sys_login_log
02-11T15:27:15      0      0       65       1       0   0.012 abc.sys_menu
02-11T15:27:15      0      0        2       1       0   0.012 abc.sys_notice
02-11T15:27:15      0      0      102       1       0   0.012 abc.sys_operation_log
02-11T15:27:15      0      0      126       1       0   0.011 abc.sys_relation
02-11T15:27:15      0      0        6       1       0   0.011 abc.sys_role
02-11T15:27:15      0      0       31       1       0   0.012 abc.sys_user
02-11T15:27:15      0      0        1       1       0   0.011 abc.test

 

##参数

--no-check-replication-filters 表示不需要检查 Master 配置里是否指定了 Filter。 默认会检查,如果配置了 Filter,如 replicate_do_db,replicate-wild-ignore-table,binlog_ignore_db 等,在从库checksum就与遇到表不存在而报错退出,所以官方默认是yes(--check-replication-filters)但我们实际在检测中时指定--databases=,所以就不存在这个问题,干脆不检测。

--no-check-binlog-format 不对binlog的格式进行检查

--replicate= :把checksum的信息写入到指定表中,建议直接写到被检查的数据库当中。

--replicate-check-only 只显示主从不一致部分,此参数不会生成新的checksums数据,只会根据checksums表已经有的数据来显示

--databases=,-d:要检查的数据库,逗号分隔。 --databases-regex 正则匹配要检测的数据库,--ignore-databases[-regex]忽略检查的库。Filter选项。

--tables=,-t:要检查的表,逗号分隔。如果要检查的表分布在不同的db中,可以用--tables=dbname1.table1,dbnamd2.table2的形式。

同理有--tables-regex,--ignore-tables,--ignore-tables-regex。--replicate指定的checksum表始终会被过滤。

4 从库上人为删除test数据
Delete from abc.test

5 主库上检测
pt-table-checksum --nocheck-replication-filters --no-check-binlog-format --replicate=cnt.checksums --databases="abc" h=10.10.10.101,u=slave,p="123456",P=3306
结论:DIFFS 在test表上为1,表示有误,不一致
            TS ERRORS  DIFFS     ROWS  CHUNKS SKIPPED    TIME TABLE
02-11T15:26:53      0      0        0       1       0   0.014 abc.code_dbinfo
02-11T15:26:53      0      0     9177       4       0   0.060 abc.abc_seller_distribution_ref
02-11T15:26:53      0      0     1398       1       0   0.015 abc.abc_seller_info
02-11T15:26:54      0      0    77342       1       0   1.087 abc.abc_seller_order_kpi_hours
02-11T15:26:54      0      0        4       1       0   0.012 abc.sys_dept
02-11T15:26:54      0      0       13       1       0   0.011 abc.sys_dict
02-11T15:26:54      0      0        0       1       0   0.012 abc.sys_expense
02-11T15:26:54      0      0       49       1       0   0.012 abc.sys_login_log
02-11T15:26:54      0      0       65       1       0   0.012 abc.sys_menu
02-11T15:26:54      0      0        2       1       0   0.012 abc.sys_notice
02-11T15:26:54      0      0      102       1       0   0.012 abc.sys_operation_log
02-11T15:26:54      0      0      126       1       0   0.011 abc.sys_relation
02-11T15:26:54      0      0        6       1       0   0.012 abc.sys_role
02-11T15:26:54      0      0       31       1       0   0.012 abc.sys_user
02-11T15:26:54      0      1        1       1       0   0.011 abc.test

6 从库上人为插入数据
insert into test values(111,222);

7主库检测pt-table-checksum --nocheck-replication-filters --no-check-binlog-format --replicate=cnt.checksums --databases="abc" h=10.10.10.101,u=slave,p="123456",P=3306
结论:一致
            TS ERRORS  DIFFS     ROWS  CHUNKS SKIPPED    TIME TABLE
02-11T15:27:13      0      0        0       1       0   0.012 abc.code_dbinfo
02-11T15:27:13      0      0     9177       4       0   0.055 abc.abc_seller_distribution_ref
02-11T15:27:13      0      0     1398       1       0   0.014 abc.abc_seller_info
02-11T15:27:14      0      0    77342       1       0   1.083 abc.abc_seller_order_kpi_hours
02-11T15:27:14      0      0        4       1       0   0.018 abc.sys_dept
02-11T15:27:14      0      0       13       1       0   0.011 abc.sys_dict
02-11T15:27:15      0      0        0       1       0   0.011 abc.sys_expense
02-11T15:27:15      0      0       49       1       0   0.012 abc.sys_login_log
02-11T15:27:15      0      0       65       1       0   0.012 abc.sys_menu
02-11T15:27:15      0      0        2       1       0   0.012 abc.sys_notice
02-11T15:27:15      0      0      102       1       0   0.012 abc.sys_operation_log
02-11T15:27:15      0      0      126       1       0   0.011 abc.sys_relation
02-11T15:27:15      0      0        6       1       0   0.011 abc.sys_role
02-11T15:27:15      0      0       31       1       0   0.012 abc.sys_user
02-11T15:27:15      0      0        1       1       0   0.011 abc.test
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值