1、主從數(shù)據(jù)庫上安裝pt-table-checksum工具:
wget https://www.percona.com/downloads/percona-toolkit/2.2.17/RPM/percona-toolkit-2.2.17-1.noarch.rpm
rpm -ivh percona-toolkit-2.2.17-1.noarch.rpm #若存在依賴糖荒,可yum安裝
2杉辙、主從數(shù)據(jù)庫分別進(jìn)行授權(quán):
GRANT SELECT, PROCESS, SUPER, REPLICATION SLAVE,UPDATE,INSERT,DELETE ON ptcheck.* TO 'checksums'@'master_ip' IDENTIFIED BY 'check';
3、主庫上創(chuàng)建庫ptcheck捶朵,寫明對(duì)應(yīng)需要校驗(yàn)的從庫及連接信息:
create database ptcheck;use ptcheck;
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=slave_ip,u=checksums,p=check,P=3306");
4蜘矢、創(chuàng)建校驗(yàn)結(jié)果存放表:
CREATE TABLE `checksums` (
`db` char(64) NOT NULL,
`tbl` char(64) NOT NULL,
`chunk` int(11) NOT NULL,
`chunk_time` float DEFAULT NULL,
`chunk_index` varchar(200) DEFAULT NULL,
`lower_boundary` text,
`upper_boundary` text,
`this_crc` char(40) NOT NULL,
`this_cnt` int(11) NOT NULL,
`master_crc` char(40) DEFAULT NULL,
`master_cnt` int(11) DEFAULT NULL,
`ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`db`,`tbl`,`chunk`),
KEY `ts_db_tbl` (`ts`,`db`,`tbl`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
5、開始主從數(shù)據(jù)校驗(yàn)(注意ptcheck庫需要是主從能同步的庫综看,且校驗(yàn)時(shí)主從數(shù)據(jù)庫需要同步無延遲)
pt-table-checksum h='master_ip',u='checksums',p='check',P=3306 --nocheck-replication-filters --replicate=ptcheck.checksums --databases=voole_vrm --tables=vrm_cpmovieinfo --no-check-binlog-format --recursion-method=dsn=D=ptcheck,t=dsns
6品腹、如果DIFFS顯示非零,則主從數(shù)據(jù)不一致红碑,可在從庫上進(jìn)行數(shù)據(jù)差異打游杩浴:
pt-table-sync --replicate=ptcheck.checksums --databases=voole_vrm --sync-to-master h='slave_ip',u='checksums',p='check' --charset=utf8 --print
7、對(duì)于從庫與主庫不一致的數(shù)據(jù)析珊,通過判斷確認(rèn)需要使從庫和主庫這些數(shù)據(jù)一致時(shí)羡鸥,可在從庫上執(zhí)行如下命令恢復(fù)從庫上差異數(shù)據(jù),使主從數(shù)據(jù)實(shí)現(xiàn)一致(修復(fù)數(shù)據(jù)時(shí)請(qǐng)注意賬號(hào)是否有修改權(quán)限):
pt-table-sync --replicate=ptcheck.checksums --databases=voole_vrm --sync-to-master h='slave_ip',u='checksums',p='check' --charset=utf8 --execute