percona mysql 主从_mysql之percona-toolkit安装与主从复制

percona-toolkit是一组高级命令行工具的集合,用来执行各种通过手工执行非常复杂和麻烦的mysql和系统任务,这些任务包括:

1)、检查master和slave数据的一致性

2)、有效地对记录进行归档

3)、查找重复的索引

4)、对服务器信息进行汇总

5)、分析来自日志和tcpdump的查询

6)、当系统出问题的时候收集重要的系统信息

percona-toolkit源自Maatkit 和Aspersa工具,这两个工具是管理mysql的最有名的工具,现在Maatkit工具已经不维护了,请大家还是使用percona-toolkit吧!这些工具主要包括开发、性能、配置、监控、复制、系统、实用六大类,如果能掌握并加以灵活应用,将能极大的提高工作效率。

安装环境如下:centos 5.5 64位,已经编译安装了mysql5.5.18。

主IP为10.1.1.191,从为10.1.1.192

安装过程:

复制代码 代码如下:

yum -y install perl-DBI perl-DBI-MySQL

wget http://www.percona.com/redir/downloads/percona-toolkit/2.1.7/percona-toolkit-2.1.7.tar.gz

tar zxf percona-toolkit-2.1.7.tar.gz

perl Makefile.PL

make

make install

主从数据一致性检测工具:

pt-table-checksum

pt-table-checksum是一个在线验证主从数据一致性的工具,主要用于以下场景:

1. 数据迁移前后,进行数据一致性检查

2. 当主从复制出现问题,待修复完成后,对主从数据进行一致性检查

3. 把从库当成主库,进行数据更新,产生了"脏数据"

4. 定期校验

用法介绍:

pt-table-checksum [OPTION...] [DSN]

参数解释

DSN h='192.168.250.249',u='checksums',p='xxxx',P=3306

-d

指定校验的库,多个库用逗号(,)分隔

--nocheck-replication-filters

忽略replication-do-db规则

--replicate=test.checksums

在test库下创建checksums表,并将数据写入

--recursion-method=none

指定复制检查的方式,默认情况下使用SHOW PROCESSLIST,如果非标准的3306端口,就使用SHOW SLAVE HOSTS的方式,推荐使用dsn方式,手动指定

为了测试效果,将主从表的数据改的不一致:

主上:

select * from a;

+------+

| b |

+------+

| 3 |

+------+

从上:

select * from a;

+------+

| b |

+------+

| 2 |

+------+

然后使用pt-table-checksum测试效果:

pt-table-checksum --nocheck-replication-filters --databases=wang --replicate=test.checksums --host=10.1.1.191 --port 3306 -utest -p123456 --no-check-binlog-format

TS ERRORS DIFFS ROWS CHUNKS SKIPPED TIME TABLE

11-22T18:09:43 0 1 1 1 0 0.264 wang.a

11-22T18:09:43 0 0 1 1 0 0.012 wang.b

从结果可以看出diffs值为1。说明wang库的a表数据不一致。

暂时先到这里,下次再测试使主从数据一致的工具:

pt-table-sync

拖了好多天了,今天补上:

用法介绍:

pt-table-sync [OPTION...] DSN [DSN...]

参数解释

DSN h='192.168.250.249',u='checksums',p='xxxx',P=3306

原理:总是在主上执行数据的更改,再同步到从上,不会直接更改成从的数据,在主上执行更改是基于主上现在的数据,不会更改主上的数据。注意使用之前先备份你的数据,避免造成数据的丢失.执行execute之前最好先换成--print或--dry-run查看一下会变更哪些数据。

首先修改主从数据,使他们不一致:

主:

root@wang 10:25>select * from a;

+-----+------+

| id | b |

+-----+------+

| 2 | 3 |

| 4 | 4 |

| 200 | 100 |

+-----+------+

从:

root@wang 10:29>select * from a;

+-----+------+

| id | b |

+-----+------+

| 2 | 3 |

| 4 | 4 |

| 200 | 2000 |

+-----+------+

然后执行pt-table-sync --print查看一下变更。

pt-table-sync --print -utest -p123456 --sync-to-master h=10.1.1.192,D=wang,t=a

REPLACE INTO `wang`.`a`(`id`, `b`) VALUES ('200', '100') /*percona-toolkit src_db:wang src_tbl:a src_dsn:D=wang,P=3306,h=10.1.1.191,p=...,t=a,u=test dst_db:wang dst_tbl:a dst_dsn:D=wang,h=10.1.1.192,p=...,t=a,u=test lock:1 transaction:1 changing_src:1 replicate:0 bidirectional:0 pid:3481 user:root host:nginx1*/;

然后执行同步修复

pt-table-sync --execute -utest -p123456 --sync-to-master h=10.1.1.192,D=wang,t=a

然后查看主从数据:

主:

root@wang 10:39>select * from a;

+-----+------+

| id | b |

+-----+------+

| 2 | 3 |

| 4 | 4 |

| 200 | 100 |

+-----+------+

从:

root@wang 10:40>select * from a;

+-----+------+

| id | b |

+-----+------+

| 2 | 3 |

| 4 | 4 |

| 200 | 100 |

+-----+------+

备注:如果表没有唯一索引或者主键就无法使用了。>>> 更多内容,请访问:mysql主从复制、mysql主从同步系列教程

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值