猎人笔记

像猎人一样捕获ORACLE知识!QQ号:1916066696  群号:367875324

  • 博客访问: 2334756
  • 博文数量: 237
  • 用 户 组: 普通用户
  • 注册时间: 2013-06-16 22:27
个人简介

10年接触数据库,恰逢公司上ERP系统;期间从管理公司的erp数据库到管理公司所有的数据库过程,学习到的不仅仅是做技术,更多的是技术的管理;

ITPUB论坛APP

ITPUB论坛APP



APP发帖 享双倍积分

文章分类

全部博文(237)

文章存档

2017年(12)

2016年(14)

2015年(51)

2014年(138)

2013年(22)

微信关注

IT168企业级官微



微信号:IT168qiye



系统架构师大会



微信号:SACC2013

订阅
热词专题

分类: MySQL

【前言】mysql由于软件本身的灵活性导致了可能主从数据库已经不一致了,但是数据库的主从监控却是正常的,前面已经介绍过pt-table-checksum工具可以检验出主从表中不一致的数据。

解决问题的能力比发现问题的能力更重要。本文档将介绍通过pt-table-sync处理主从数据库不一致的问题;

 

【说明】实验的环境和上次进行校验的环境和测试关联,测试之前请部署好环境;

image

 

【注意事项】pt-table-sync需要在从数据库上面进行执行

 

【使用说明】使用print参数,他会在屏幕显示修复的SQL语句。然后可以手工确认并执行。

脚本【1】  基于checksums信息对Slave 192.168.47.165同步testdb.john表数据

pt-table-sync --print --replicate=test.checksums --databases=test --tables=john --sync-to-master h=192.168.47.165,u=root,p=123456

percona-toolkit src_db:test src_tbl:john src_dsn:P=3306,h=192.168.47.167,p=...,u=root dst_db:test dst_tbl:john dst_dsn:P=3306,h=192.168.47.165,p=...,u=root lock:1 transaction:1 changing_src:1 replicate:0 bidirectional:0 pid:28054 user:root host:mysql02*/;

 

脚本【2】 全量同步修复Slave的testdb.john表数据

[root@mysql02 bin]# pt-table-sync --print  --sync-to-master h=192.168.47.165,P=3306,u=root,p=123456 --database test --tables=john

REPLACE INTO `test`.`john`(`id`) VALUES ('5') /*

percona-toolkit src_db:test src_tbl:john src_dsn:P=3306,h=192.168.47.167,p=...,u=root dst_db:test dst_tbl:john dst_dsn:P=3306,h=192.168.47.165,p=...,u=root lock:1 transaction:1 changing_src:1 replicate:0 bidirectional:0 pid:28054 user:root host:mysql02*/;

 

脚本【3】直接同步主从数据库test

[root@mysql02 bin]# pt-table-sync --print  --sync-to-master h=192.168.47.165,P=3306,u=root,p=123456 --database test


REPLACE INTO `test`.`checksums`(`db`, `tbl`, `chunk`, `chunk_time`, `chunk_index`, `lower_boundary`, `upper_boundary`, `this_crc`, `this_cnt`, `master_crc`, `master_cnt`, `ts`) VALUES ('test', 'john', '1', 0.004643, NULL, NULL, NULL, '42981178', '5', '42981178', '5', '2015-03-10 17:57:56') /*percona-toolkit src_db:test src_tbl:checksums src_dsn:P=3306,h=192.168.47.167,p=...,u=root dst_db:test dst_tbl:checksums dst_dsn:P=3306,h=192.168.47.165,p=...,u=root lock:1 transaction:1 changing_src:1 replicate:0 bidirectional:0 pid:28166 user:root host:mysql02*/;

 

以上的脚本中可以把--print替换成—execute,直接进行主从的数据库修复;

 

【注】用pt-table-sync修复的时候,必须保证被replace的表上有主键或唯一键,否则就会报以下的错误

Can't make changes on the master because no unique index exists at /usr/bin/pt-table-sync line 10655.  while doing test.john on 192.168.47.165

 

总结:pt-table-checksum 和 pt-table-sync 一起构成了mysql主从数据一致监控的两把利器,pt-table-sync在进行--execute的时候需要小心,一般情况都是进行print相应的sql语句,然后再到从数据库执行。

........................................................................................................................................................................

本文作者:JOHN,某上市公司DBA,业余时间专注于数据库的技术管理,从管理的角度去运用技术。

ORACLE技术博客:ORACLE 猎人笔记               数据库技术群:367875324 (请备注ORACLE管理 ) 

........................................................................................................................................................................

阅读(11788) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册