这篇文章给大家分享的是有关mysql中如何使用pt-table-checksum和pt-table-sync的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。pt-table-checksum和pt-table-sync是percona-toolkit工具中的功能,用来检测主从数据一致性和修复主从不一致。下面通过一组实验学习这两个功能的使用1、主库创建表并插入数据 CREATE TABLE `NewTable` (`id` int(8) NULL ,`name` varchar(32) NULL ,PRIMARY KEY (`id`)) ;insert into newtable values(1,’leo’);insert into newtable values(2,’mike’);insert into newtable values(3,’jack’);2、从库执行下面语句,让主从不一致 insert into newtable values(4,’lucy’);insert into newtable values(5,’petter’);update newtable set name=’john’ where id =13、测试数据如下 主库:mysql> select * from test.newtable;+—-+——+| id | name |+—-+——+| 1 | leo || 2 | mike || 3 | jack |+—-+——+3 rows in set (0.00 sec)从库:mysql> select * from test.newtable;+—-+——–+| id | name |+—-+——–+| 1 | john || 2 | mike || 3 | jack || 4 | lucy || 5 | petter |+—-+——–+5 rows in set (0.00 sec)4、pt-table-checksum参数介绍、使用 –port= 主库端口–host= 主库IP–databases= 校验的数据库–tables= 校验 的表名,只指定数据库不指定表名,校验数据库下所有表–user= 用户名(该用户在从库上也要有,同时需要权限)–password= 用户密码–replicate 指定checksum存储的库和表–no-check-binlog-format 忽略binlog的格式,如果binlog是ROW或者MIXED不加这个参数都会报错–no-check-replication-filters 忽略复制过滤,如binlog_ignore_db、slave-skip-errors等选项–help 更多更详细的参数请见–help帮助文档校验:[root@trcloud ~]# pt-table-checksum –port=3306 –host=192.168.129.15 –databases=test –tables=newtable –user=root –password=’123456′ –replicate=test.check –no-check-binlog-format –no-check-replication-filters TS ERRORS DIFFS 免费主机域名ROWS CHUNKS SKIPPED TIME TABLE12-13T13:44:07 0 1 3 1 0 0.059 test.newtable注:检查的时候会向表加S锁TS: 完成的检查时间ERRORS:检查时候发生的错误和告警数量DIFFS: 0表示一致,1表示不一致ROWS: 表行数CHUNKS:被划分到表中的块数量SKIPPED: 由于错误跳过的数目TIME: 执行时间TABLE: 表名5、使用pt-table-sync修复不一致 –replicate= 指定pt-table-checksum得到的表h= 主库IPu= 用户名p= 密码–execute 执行修复–print 打印出sql语句–help 更多更详细的参数请见–help帮助文档[root@trcloud ~]# pt-table-sync –replicate=test.check h=192.168.129.15,u=root,p=’123456′ –execute –printDELETE FROM `test`.`newtable` WHERE `id`=’4′ LIMIT 1 /*percona-toolkit src_db:test src_tbl:newtable src_dsn:h=192.168.129.15,p=…,u=root dst_db:test dst_tbl:newtable dst_dsn:h=172.30.249.5,p=…,u=root lock:1 transaction:1 changing_src:test.check replicate:test.check bidirectional:0 pid:19211 user:root host:trcloud*/;DELETE FROM `test`.`newtable` WHERE `id`=’5′ LIMIT 1 /*percona-toolkit src_db:test src_tbl:newtable src_dsn:h=192.168.129.15,p=…,u=root dst_db:test dst_tbl:newtable dst_dsn:h=172.30.249.5,p=…,u=root lock:1 transaction:1 changing_src:test.check replicate:test.check bidirectional:0 pid:19211 user:root host:trcloud*/;REPLACE INTO `test`.`newtable`(`id`, `name`) VALUES (‘1’, ‘leo’) /*percona-toolkit src_db:test src_tbl:newtable src_dsn:h=192.168.129.15,p=…,u=root dst_db:test dst_tbl:newtable dst_dsn:h=172.30.249.5,p=…,u=root lock:1 transaction:1 changing_src:test.check replicate:test.check bidirectional:0 pid:19211 user:root host:trcloud*/;从打印的sql来看,如果从库数据多了使用delete删除,其他情况修复主从不一致使用的是REPLACE INTO。所以表上一定要有主键,不然不仅会报错,也会导致主从同步失败(因为在从库执行REPLACE INTO执行不过去)6、检查主从一致 [root@trcloud ~]# pt-table-checksum –port=3306 –host=192.168.129.15 –databases=test –tables=newtable –user=root –password=’123456′ –replicate=test.check –no-check-binlog-format –no-check-replication-filters TS ERRORS DIFFS ROWS CHUNKS SKIPPED TIME TABLE12-13T13:48:18 0 0 3 1 0 0.108 test.newtable
数据已经正常感谢各位的阅读!关于“mysql中如何使用pt-table-checksum和pt-免费主机域名table-sync”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
这篇文章主要为大家展示了“MYSQL如何实现异常处理”,内容简而易懂,条理清晰,希望能够帮助免费主机域名大家解决疑惑,下面让小编带领大家一起研究并学习一下“MYSQL如何实现异常处理”这篇文章吧。翻遍了MYSQL手册都找不到说明哪个系统变量保存错误码以下异常处…