码迷,mamicode.com
首页 > 其他好文 > 详细

pt-table-checksum 针对某个库做数据校验

时间:2016-01-12 15:47:12      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:table   pt   checksum   

背景:

我们现在需要对线上主库(简称A)6个备库中的某个库(简称B)做数据校验;


方式:pt-table-checksum工具


<1> 第一步需要配置dsns,这样可以指定备库校验

在A库上某个库中:

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

INSERT INTO dsns (parent_id,dsn) values(1, "h=B,u=root,p=******,P=****");  



<2> 第二步设定校验脚本

--databases  #这个是指定库
--max-lag=10 #指定库的延迟数 最大不要超过多少
--nocheck-replication-filters #
--no-check-binlog-format #忽略binlog模式
--ignore-tables # 忽略校验的表
--recursion-method=dsn=h=B,D=***,t=dsns #dsns模式下
--chunk-size #默认1000,可以修改低点


执行如下:

pt-table-checksum h=‘A‘,u=‘****‘,p=‘******‘,P=3306 --databases=*** --max-lag=10 --nocheck-replication-filters --no-check-binlog-format --replicate=***.checksums --ignore-tables=album_useralbum,album_photoexif --recursion-method=dsn=h=B,D=***,t=dsns 1>>/tmp/checksum_1.log 2>>/tmp/checksum_1.log


主库error.log:

160111 23:03:11 [Warning] Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. REPLACE... SELECT is unsafe because the order in which rows are retrieved by the
 SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave. Statement: REPLACE INTO `***`.`checksums` (db, tbl, chunk, chunk_index, lower_bo
undary, upper_boundary, this_cnt, this_crc) SELECT ‘qyer‘, ‘plan_onedayevent_h_15‘, ‘11‘, ‘PRIMARY‘, ‘138128303‘, ‘150253579‘, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS(‘#‘, `id`, `
plan_id`, `uid`, `play_time`, `typeid`, `catetypeid`, `pid`, `title`, `type`, `badword_level`, `oneday_id`, `badword`, `starthours`, `startminutes`, `endhours`, `endminutes`, `budgetid`, `textsids`, `hav_c
ron`, `addtime`, `updatetime`, `coord`, `address`, `rafill_reason`, `pid_old`, ……

问题: a. 执行的时候B库延迟可以严格控制在指定的范围内,但其他库延迟会很大;

            b. 想着考虑让其他的库忽略复制checksums表,但改忽略复制表需要重启库;

            c. 因为我们的binlog模式是mixed,所以主库error.log会报一堆错



                                                                                                                                                   -- 王老虎

本文出自 “王老虎” 博客,转载请与作者联系!

pt-table-checksum 针对某个库做数据校验

标签:table   pt   checksum   

原文地址:http://5434718.blog.51cto.com/5424718/1734083

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!