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文章下有详细说明。
然后分别进入两台mysql客户端分别授权
在131和132的的mysql客户端分别执行
执行成功之后,查看一下mysql库里的user表是否多了一条记录,并记得刷新权限
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/04/2a7a9256c67e671c4de0022f3bb840c9.png)
然后两台服务器分别执行以下命令
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/04/5917676f2b7d7d6df0f05558584bff6e.png)
下一步就是分别把master指向对方,执行以下命令(以132host服务器举例)
然后分别执行以下命令
再查看一下状态,以下是131的执行结果,其中Slave_IO_Running 与 Slave_SQL_Running 的值都必须为YES,才表明状态正常。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/04/8e1f7fd264c7a113c342751ad5a1ffc2.png)
然后试着在其中一台服务器创建一个数据库,在另一台查看,OK!通了
虽然服务器配置完成了,但是在业务逻辑上会出现一些问题,比如在一个表中id主键是自增的,如果同时两台服务器执行insert入库操作,那么主键可能会出现重复了。。这样就不太好了。
有的方案说可以配置两台服务器的步幅长度,这样是暂时可以解决的,但是随着服务器的数量增加,那么还需要再次调整。
靠谱的方案还是在业务代码层下手吧。比如,用redis的数目自增,来确定要入库的id,这样就不会出现重复了。
测试两台虚拟机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表是否多了一条记录,并记得刷新权限
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/04/2a7a9256c67e671c4de0022f3bb840c9.png)
flush privileges; //刷新权限
然后两台服务器分别执行以下命令
show master status;
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/04/5917676f2b7d7d6df0f05558584bff6e.png)
下一步就是分别把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,才表明状态正常。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/04/8e1f7fd264c7a113c342751ad5a1ffc2.png)
然后试着在其中一台服务器创建一个数据库,在另一台查看,OK!通了
虽然服务器配置完成了,但是在业务逻辑上会出现一些问题,比如在一个表中id主键是自增的,如果同时两台服务器执行insert入库操作,那么主键可能会出现重复了。。这样就不太好了。
有的方案说可以配置两台服务器的步幅长度,这样是暂时可以解决的,但是随着服务器的数量增加,那么还需要再次调整。
靠谱的方案还是在业务代码层下手吧。比如,用redis的数目自增,来确定要入库的id,这样就不会出现重复了。
相关文章推荐
- mysql之 mysql 5.6不停机主主搭建(活跃双主基于日志点复制)
- mysql之 mysql 5.6不停机主主搭建(活跃双主基于日志点复制)
- Mysql主从复制_模式之日志点复制
- mysql主主模式无法启动日志同步进程问题处理
- MYSQL的主从和主主复制模式
- 【MySQL】MySQL搭建主主复制(双主复制/DUAL Master)环境
- 企业级-Mysql双主互备高可用负载均衡架构(基于GTID主从复制模式)
- MySQL5.6 GTID模式 同步复制跳过报错解决方法
- MySQL基于GTID模式的主从复制设置
- Mysql主主复制
- MySQL主主复制
- MySQL互为主从复制以及主主互备
- Mysql主主复制构架配置
- mysql binlog日志的三种模式
- mysql复制环境清理二进制日志
- 构建Mysql主主复制架构
- mysql主主同步模式
- Keepalive实现Mysql主主复制,高可用群集
- mysql在线将基于日志的复制和基于事务的复制互换
- mysql主主复制+keepalived实现高可用