您的位置:首页 > 数据库 > MySQL

MysqL主主复制_模式之日志点复制

2017-12-19 13:42 239 查看
主主复制即在两台MySQL主机内都可以变更数据,而且另外一台主机也会做出相应的变更,可以起到一定的压力分担等作用。

测试两台虚拟机IP分别为: 192.168.136.131、192.168.136.132

做好了安装完Mysql同时启动Mysql服务之后,分别在两台服务器的my.cnf配置文件添加如下参数配置

在131与132服务器增加如下,参数说明忽略。关于主从复制的参数配置在http://www.cnblogs.com/wt645631686/p/6868766.html文章下有详细说明。

server-id = 131
log-bin=mysql-bin
binlog-format=mixed
relay-log=mysql-relay


server-id = 132
log-bin = mysql-bin
binlog-format = mixed
relay-log = mysql-relay


然后分别进入两台mysql客户端分别授权

在131和132的的mysql客户端分别执行

grant replication client,replication slave on *.* to root@'192.168.136.%' identified by 'root'; //授权


执行成功之后,查看一下mysql库里的user表是否多了一条记录,并记得刷新权限



flush privileges; //刷新权限


然后两台服务器分别执行以下命令

show master status;




下一步就是分别把master指向对方,执行以下命令(以132host服务器举例)

change master to
master_host='192.168.136.131',         //在132的客户端执行host为131的,相反就是在131的执行host为132的
master_user='root',
master_password='root',
master_log_file='mysql-bin.000006',    //比如在131的host执行show master status得到的File
master_log_pos=106;             //比如在131的host执行show master status得到的Position


然后分别执行以下命令

start slave;


再查看一下状态,以下是131的执行结果,其中Slave_IO_Running 与 Slave_SQL_Running 的值都必须为YES,才表明状态正常。



然后试着在其中一台服务器创建一个数据库,在另一台查看,OK!通了

虽然服务器配置完成了,但是在业务逻辑上会出现一些问题,比如在一个表中id主键是自增的,如果同时两台服务器执行insert入库操作,那么主键可能会出现重复了。。这样就不太好了。

有的方案说可以配置两台服务器的步幅长度,这样是暂时可以解决的,但是随着服务器的数量增加,那么还需要再次调整。

靠谱的方案还是在业务代码层下手吧。比如,用redis的数目自增,来确定要入库的id,这样就不会出现重复了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: