mysql主备怎么同步的的简单介绍

MySQL主备库数据一致性校验及修复

很多时候需要把一个从库提升为主库,但对从库和主库的数据一致性不敢保证,这时我们就可以利用 pt-table-checksum来检查主库数据的一致性,如果存在不一致的数据,我们可以利用pt-table-sync来修复这些不一致的数据。

专注于为中小企业提供网站制作、网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业张北免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了超过千家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

在主(master)上通过执行校验的查询对复制的一致性进行检查,对比主从的校验值,从而产生结果。

下面通过实际的例子来解释该工具如何使用:

主库(10.8.23.209)数据:

从库(10.8.23.208)数据:

从库(10.8.23.210)数据:

很明显主备数据不一致,我们使用工具来检测下:

校验命令参数解释:

校验结果字段解释:

好了,命令以及常用参数都介绍了,一起解释下上面执行的效果,通过DIFFS 是1 就可以看出主从的表数据不一致。怎么不一致呢? 通过指定—replicate=test.checksums 参数,就说明把检查信息都写到了checksums表中。

进入备库(10.8.23.208)中查看checksums表的信息:

进入备库(10.8.23.210)中查看checksums表的信息:

通过上面找到了这些不一致的数据,如何修复呢?利用另外一个工具 pt-table-sync。

高效的同步MySQL表之间的数据,他可以做单向和双向同步的表数据。他可以同步单个表,也可以同步整个库。它不同步表结构、索引、或任何其他模式对象。所以在修复一致性之前需要保证他们表存在。接着上面的复制情况,主库和从库的aaa表数据不一致,需要修复。

参数解释:

命令介绍完了,一起解释下执行的效果:通过(--print)打印出来了修复数据的sql语句,可以手动的去从行执行,让他们数据保持一致性。那能否直接执行?当然可以,通过(--execute)

没发现任何异常,然后检查主从数据的一致性:

主库(10.8.23.209)数据:

从库(10.8.23.208)数据:

从库(10.8.23.210)数据:

OK,数据已经保持一致了。

不过建议还是--print 打印出来的好,这样就可以知道那些数据有问题,可以人为的干预下。

不然直接执行了,出现问题之后不好处理。总之还是在处理之前做好数据的备份工作。

mysql 安装及主主同步

实际是主从配置的扩展,例如有两台机器a1,a2,主从模式为a1(M)-a2(S),双主模式就是a1-a2,然后a2-a1

这样,当任意一台挂掉的时候,其中一台可以完全负担起读和写的任务。

**创建主节点用户供从节点拉取数据用(62-215)

同主

修改用户名密码

账号登陆

同主

(62做从节点从215拉数据的账号)

双主至此配置完成,其实就是先配置a-b,在配置b-a

注意,每次重启mysql服务以后,需要重新执行start slave命令

MySQL 5.7.30 主主同步

在MySQL服务器1中,添加如下配置:

在MySQL服务器2中,添加如下设置:

在这里两台MySQL的配置文件,需要对auto_increment_offset字段,设定不同值。因为如果mysql中有自增长字段,不设定这个参数会起冲突,会报duplicate....的报错。

auto_increment_offset表示自增长字段从那个数开始,他的取值范围是1 .. 65535

auto_increment_increment表示自增长字段每次递增的量,其默认值是1,取值范围是1 .. 65535

做主主同步配置时,需要将两台服务器的auto_increment_increment增长量都配置为2,而要把auto_increment_offset分别配置为1和2,这样可以避免两台服务器同时做更新时,自增长字段的值之间发生冲突。

配置好两台mysql的my.cnf配置文件后,service mysqld restart 重启mysql服务。

在Mysql服务器1中,

在MySQL服务器2中,做如上同样的操作,然后将服务器1的file和position值设定到服务器2中,服务器2的file和position值输入到服务器1中。

在MySQL服务器1中,输如下命令:

在MySQL服务器2中,输如下命令:

范例如下图:

配置完后,分别在两台服务器上输show slave status ;

如果出现如下两个字段都是on的状态,则主主备份搭建完成。

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

在实际测试配置中,由于MySQL服务器2是克隆的MySQL服务器1的,所以start slave 后,show slave status 出现了Slave_IO_Running: No ,然后有如下报错信息。告知是因为两个MySQL服务器的UUID相重复了。

只需要,将basedir,即/use/local/mysql/data中的auto.cnf文件删掉后,重启mysql,就会出现新的auto.cnf文件,里面有新的UUID


分享文章:mysql主备怎么同步的的简单介绍
本文URL:http://myzitong.com/article/dodjcpp.html