mysql在离线多主自动同步(多主双向+级联复制)

一言以蔽之

架构内各个库均同时开启binlog的master和slave,主主库额外开启级联复制开关。

前言

公司项目需求,要做一个内网用的物品管理的web系统,其中一个要求是要每个单位的本地PC在内网离线状态下(即无法访问总服务器)也能使用系统的服务。项目架构设计的是在线状态时访问总服务器,离线时,用户访问本地服务(是的,我们在每个本地PC上也部署了服务)。
注:
下级单位的本地PC能访问到总服务器时,称为在线,反之称为离线

解读

在离线状态的切换,对于web服务来说没什么影响,毕竟代码是一样的,所以不管部署在哪都一样。区别就是数据库中的数据。这就要求我们的主库,以及每个本机PC上部署的从库,他们之间能实现数据的自主同步。

关于可能的冲突,我们已经在业务层规避掉了。不同的单位,不会update相同的字段。不同的单位,不会在相同的表中insert。所以现在就只用关心mysql的自动同步,以及离线重连的自动续传了。

web设计

1.web后端,我设置了读写分离(只是为了装一下,其实大可不必,毕竟内网并发量不高)
2.在线时,单位的访问,均select本地mysql,update/insert/delete总服务器mysql
3.离线时,单位的访问,均在本地mysql
(这很好实现,不同的域名地址,对应不同的项目,项目内提前设定好数据库router,由用户自主决定访问哪个域名地址即可。实际上,如果断网了,总服务器访问不通,他会自然而然的去访问本机服务的域名地址)

mysql设计

1.同步方式毋庸置疑用的是mysql自带的binlog,mysql版本要选择5.7及以上的版本
2.多主双向:每个本机PC上的mysql,要与总服务器上的mysql保持双主同步。
3.总服务器要开启级联复制,将下级单位PC产生的binlog,同步给其他单位的PC。以便其他单位的PC在离线时可以使用这部分数据

上干货

1.mysql架构图(草稿)
mysql多主双向+级联复制
2.配置
一阶段,先把所有库的master功能启动,同时在库中创建访问账号供其他库使用:
主主库(总服务器)
①在mysql安装路径下找到启动文件my.ini或my.cnf,将如下信息放在启动文件的[mysqld]下:

log_bin=mysql-bin
binlog_format=MIXED
sync_binlog=1
expire_logs_days=7
binlog-do-db=equip_system
slave-skip-errors=

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值