工具名称
pt-table-checksum
pt-table-sync
一.pt-table-checksum操作步骤
1. 安装pt-table-checksum之前要先安装DBI,DBD-mysql,IO-Socket-SSL这三个包
2. 在主库建立checksum的账号,checksums,需要的权限有SELECT, PROCESS, SUPER, REPLICATION SLAVE,从库也可以建立主库访问的从库的账号,如果没有这个账号也不影响校验的结构
3. 执行方式
-
pt-table-checksum --nocheck-replication-filters h='10.1.10.4',u='checksums',p='123',P=3306 -d zhanghao --tables=tb --create-replicate-table --replicate=test.checksums --no-check-binlog-format
4.几点需要注意的地方
a.--nocheck-replication-filters:忽略从库replication-do-db规则
b.如果binlog_format =mixed 需要加上该格式--no-check-binlog-format
c. 如果是5.5以下的版本会报错Variable 'innodb_lock_wait_timeout' is a read only variable需要修改一下pt-table-checksum的源代码,把改变innodb_lock_wait_timeout这个值的语句去掉
d.在大表的情况下要注意chunk-size的大小,可以修改源码,精确控制chunk-size的大小
5.原理就不介绍了,是从binlog的方式实现
对于端口号不是3306,或者是有一主多从的情况
-
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=replica_host,u=checksums,p=password,P=3306");
-
-
--recursion-method=dsn=h=10.50.2.70,D=test,t=dsns
二.pt-table-sync
1.同步库或者表
-
pt-table-sync --execute --sync-to-master --user=root --password=xxx h=192.168.3.92(从库IP) --database test [--table=tb]
2.根据pt-table-checksum的结果同步库或者表
-
pt-table-sync --execute --replicate test.chksum --user=root --password=123 --sync-to-master h=10.1.10.70,D=zhanghao,t=tb1
3.从服务器的数据同步到主服务器(小心操作)
-
pt-table-sync --execute --user=root --password=123 h=10.1.10.70[从IP],D=zhanghao,t=tb1 h=10.1.10.4[主IP]
常用的主要就是上面几种情况
阅读(1825) | 评论(0) | 转发(0) |