教程集 www.jiaochengji.com
教程集 >  数据库  >  mysql  >  正文 使用mk-table-sync的总结

使用mk-table-sync的总结

发布时间:2015-10-04   编辑:jiaochengji.com
mk-table-sync?是maatkit http://www.maatkit.org/里的一个同步主从数据库的利器,执行同步过程中,会同步DELETE,REPLACE,INSERT,UPDATE语句,

mk-table-sync?是maatkit http://www.maatkit.org/里的一个同步主从数据库的利器,执行同步过程中,会同步DELETE,REPLACE,INSERT,UPDATE语句,mk-table-sync?把包含前面几个的语句都执行一遍,举个例子来说,主从库上都有:a表,主库上的数据如下:
id      name
1       aa
2       bb
3       cc
4       dd
5       ee
6       ff

从库上的数据如下:
id      name
1       aa
2       bb
3       hh
4       gg
5       ee

那么mk-table-sync会执行3条语句,同步"6 ff"添加到从库,更新"3 cc","4 gg"到从库,一共3条语句,而不是我们看到的从库只比主库少1条数据,其实同步过程中,执行了3条;

执行同步操作一般:
 

复制代码 代码如下:
mk-table-sync --charset=utf8 --execute --print --no-check-slave -d test -t a \
h=localhost,u='root',p='123456' \
h=192.168.0.24,u='root',p='123456'

注意事项:
1.记得加上--charset选项,否则会造成从库乱码;
2.我们如果想要看下到底哪些数据不同步,可以这样做:
 

复制代码 代码如下:
mk-table-sync --charset=utf8 --print --no-check-slave -d test -t a \
h='127.0.0.1',u='root',p='123456' \
h='192.168.0.24',u='root',p='123456'>result

3.如果有好几个从库的话,建议分开同步,除非几个从库的checksum一样;因为每个从库同步的步调不一定都一致,如果几个从库一块同步的话,很容易造成主键冲突,导致主从同步中断,举个例子来说,建议:
 

复制代码 代码如下:
mk-table-sync --charset=utf8 --execute --print --no-check-slave -d test -t a \
h='127.0.0.1',u='root',p='123456' \
h='192.168.0.24',u='root',p='123456'>result

不建议:
 

复制代码 代码如下:
mk-table-sync --charset=utf8 --execute --print --no-check-slave -d test -t a \
h='127.0.0.1',u='root',p='123456' \
h='192.168.0.24',u='root',p='123456' \
h='192.168.0.25',u='root',p='123456' \
h='192.168.0.26',u='root',p='123456'>result

4.为了减少重复操作,我们也可以一次同步好几个表,比如:
 

复制代码 代码如下:
mk-table-sync --charset=utf8 --execute --print --no-check-slave -d test -t=a,b,c....

您可能感兴趣的文章:
使用mk-table-sync的总结
php中global的用法例解
mysql之percona-toolkit安装与主从复制
h5页面如何调用百度地图获取当前位置(代码)
PHP:数据类型之间的转换与常量的声明和使用
Goroutine 的同步(第三部分)
[译]如果对齐内存的写入是原子性的,为什么我们还需要sync/atomic包
golang WaitGroup源码解析
golang语言异步通信之WaitGroup
commands out of sync

[关闭]
~ ~