一、双主复制原理
双主复制能实现两个环境互为主从,任何一个环境的变更都能同步到另一个环境,并且两个环境都能提供写入服务。双主环境的原理与主从复制类似,只是双主复制的环境配置时主从服务器都需要开启二进制日志、中继日志,并分别控制两个环境的自增开始值和步长,以避免来自两个环境的数据冲突。
二、搭建环境
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命令重新配置。
还有很多配置参数在本次搭建没有配置,可以一点点配置测试。