上一节我们讲了MySQL(Mariadb)数据库的主从同步的实现过程,链接:https://www.kxxzz.com/xx/350.html。今天我们来讲一下主主同步,那么什么是主主同步呢?首先我们先来回顾一下什么是主从同步?所谓主从同步,就是一台主机,一台备用机,主机做了任何操作都会实时同步到备用机,这是单向同步的。那么主主同步呢,就是指两台或多台主机互为主从关系,相互同步。
比如有两台服务器A和B,如果是主从同步的话,那么A作为主机,B作为备用机,A上面的所有操作都会单向同步到B上。
如果是主主同步,则A是B的主机,B同样也是A的主机,A的操作会同步到B,B的操作也会同步到A,两者相互同步。
主从同步的好处是可以读写分离,比如往主机A上写数据,从B里面读数据,这样就可以减轻A的压力。那么主主同步呢?有什么好处呢?其实很明显,如果是主从同步的话,那么当主机坏掉的时候,要把备用机切换成主机,需要耗费一定的时间。
换个角度,如果是主主同步的话,平时就直接是多台机器当主机,那么就可以做负载均衡,向任意机器写入数据和读取数据都可以。同时也可以做数据备份,这样一来数据的安全就更加有保证。
废话不多说,下面我们正式开始讲解主主同步的实现方式。在之前的主从同步中,我们可以发现,如果我们的数据表有使用自增字段的话,单向同步是完全没有问题的。但是现在主主同步的话就存在这么一个问题,假如我同时向AB服务器插入一条数据,那么自增ID可能就重复了。这个也是主主同步需要解决的最关键问题。当然,这个问题解决起来并不难。
首先我们来安装Mariadb数据库
我的测试环境是Debian 9 + Mariadb数据库,我这里拿2台服务器来做测试
提示:两台服务器的数据库版本要相同
安装Mariadb数据库并设置root密码为123456,两台服务器的安装方法都是一样的
apt install mariadb-server -y
mysql -uroot -e "grant all on *.* to root@'%' identified by '123456';"
mysql -uroot -e "del