一、双主复制原理

       双主复制能实现两个环境互为主从,任何一个环境的变更都能同步到另一个环境,并且两个环境都能提供写入服务。双主环境的原理与主从复制类似,只是双主复制的环境配置时主从服务器都需要开启二进制日志、中继日志,并分别控制两个环境的自增开始值和步长,以避免来自两个环境的数据冲突。

二、搭建环境

       vmware虚拟机,centos7,mariadb 10.2.14

       服务器一IP:192.168.160.9

       服务器二IP:192.168.160.10

三、搭建步骤

1、安装mariadb

      分别在两个服务器上安装好mariadb,和安装单实例数据库没有差别,安装步骤直接略过。我的实验环境是直接通过虚拟机克隆获得的。

2、配置第一个服务器的配置文件

     编辑配置文件:vi /etc/mysql/my.cnf

     配置内容如下:

server-id = 1
log-bin=mysql-bin
binlog_format=mixed
binlog-ignore-db = mysql
binlog-ignore-db = information_schema
binlog-ignore-db = performance_schema
relay-log = /app/data/relay-bin
expire_logs_days  = 100 
auto_increment_increment= 2 

auto_increment_offset  = 1 

3、配置第二个服务器的配置文件

     编辑配置文件:vi /etc/mysql/my.cnf

     配置内容如下:

server-id = 2
log-bin=mysql-bin
binlog_format=mixed
binlog-ignore-db = mysql
binlog-ignore-db = information_schema
binlog-ignore-db = performance_schema
relay-log = /app/data/relay-bin
expire_logs_days  = 100 
auto_increment_increment= 2
auto_increment_offset  = 2

      与第一个服务器相比,不同的就是server-id 和自增字段的初始值auto_increment_offset,其他配置都相同

4、在两个服务器上分别创建同步账户

     服务器一:grant replication slave,replication client on *.* to 'tom09'@'192.168.160.10' identified by '123456'

     服务器二:grant replication slave,replication client on *.* to 'tom10'@'192.168.160.9' identified by '123456'

5、在两个服务器上分别查看当前二进制状态

      服务器一:


服务器二:


6、在两个服务器上分别设置开始同步

服务器一:

change master to master_host='192.168.160.10',master_user='tom10',master_password='123456',master_log_file='mysql-bin.000009',master_log_pos=3178;

start slave;

服务器二:

change master to master_host='192.168.160.9',master_user='tom09',master_password='123456',master_log_file='mysql-bin.000011',master_log_pos=6117;

start slave;

7、查看同步状态

     在两个服务器上分别执行show slave status\G,如果都出现Slave_IO_Running: Yes和Slave_SQL_Running: Yes两个状态,则说明环境搭建成功

8、验证

     在两个服务器上新建数据库、新建表、新增数据、修改数据、删除数据、删除表等操作,都能反应到另一环境,说明环境搭建成功。

9、备注

      如果在访问服务器出现问题,可以用stop slave、reset slave命令重新配置。

      还有很多配置参数在本次搭建没有配置,可以一点点配置测试。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐