还有一种数据库的架构为双主模式,也就是互为主从,这种设定在企业中虽不常用,但是我们还是需要掌握的。
Master-Master复制的两台服务器,既是master,又是另一台服务器的slave。这样,任何一方所做的变更,都会通过复制应用到另外一方的数据库中。
架构图如下:
2.1 环境准备:
centos系统服务器2台、 两台用户实现Mysql互为主从, 配置好yum源、 防火墙关闭、 各节点时钟服务同步、 各节点之间可以通过主机名互相通信
2.2 准备步骤:
1)iptables -F && setenforce 清空防火墙策略,关闭selinux
2)拿两台服务器都使用yum方式安装Mysql服务, 要求版本一致
3)分别启动两台服务器mysql服务, 确保服务正常
2.3 实现步骤:
2.3.1 配置第一台 master 主服务器
server-id = 1 //配置server-id,让主服务器有唯一ID号
log-bin = mysql-bin //打开Mysql日志,日志格式为二进制
skip-name-resolve //关闭名称解析,(非必须)
relay_log = mysql-relay-bin //打开Mysql日志,日志格式为二进制
read_only = 1
//设置只读权限
log_slave_updates = 1
//使得更新的数据写进二进制日志中
auto_increment_offset = 1 //表示自增长字段从那个数开始
auto_increment_increment = 2 //表示自增长字段每次递增的量
2.3.2 配置第二台 master 主服务器
server-id = 2 //配置server-id,让主服务器有唯一ID号
log-bin = mysql-bin //打开Mysql日志,日志格式为二进制
skip-name-resolve //关闭名称解析,(非必须)
relay_log = mysql-relay-bin //打开Mysql日志,日志格式为二进制
read_only = 1
//设置只读权限
log_slave_updates = 1
//使得更新的数据写进二进制日志中
auto_increment_offset = 2 //表示自增长字段从那个数开始
auto_increment_increment = 2 //表示自增长字段每次递增的量
2.3.3 创建复制账号
因为我们实现的是双主模式,所以我们每一台机器上都要创建复制账号:
2.3.4 查看服务器状态
我们分别查看两台服务器的状态,从而为我们下一步的设置奠下基础:
2.3.5 启动复制线程
我们来分别对两台机器进行的设置:
首先,先对第一台 master 机器进行设置:
MariaDB [(none)]> change master to master_host='192.168.37.222',master_user='slave',master_password='keer',master_log_file='mysql-bin.000003',master_log_pos=245;
MariaDB [(none)]> start slave;
接着,我们来查看一下他的状态:
现在,我们来对第二台 master 进行设置:
MariaDB [(none)]> change master to master_host='192.168.37.111',master_user='slave',master_password='keer',master_log_file='mysql-bin.000002',master_log_pos=245;
MariaDB [(none)]> start slave;
我们来查看一下他的状态:
可以看出,我们的两个机器都设置完毕,接下来,我们就可以来测试一下了。
2.3.5 测试