双主双从是在一主一从基础上发展过来的高可用性双保险配置,和一主一从的区别并不是很大,主要注意的是双主中的my.cnf的配置
一。网络拓扑图
二. 搭建准备
在各台集群机上安装好mysql,并打开mysql的binlog日志.
#> vi /usr/my.cnf
# 在[mysqld]中添加:
#设置binlog的路径和名字
log-bin=/var/logs/mysql/slave1-bin
#设置binlog的目录管理文件的路径和名字.名字可以修改,但是存放路径不要轻易修改。
log-bin-index=slave1-bin.index
#配置binlog的保存时间为10天
expire_logs_day=10
三. my.cnf配置
#>vi /usr/my.cnf
[mysqld]
# auto_increment,控制自增列AUTO_INCREMENT的行为用于MASTER-MASTER之间的复制,防止出现重复值,auto_increment_increment=n有多少台服务器,n 就设置为多少
auto_increment_increment=2
#auto_increment_offset=1设置步长,这里设置为1,这样Master的auto_increment字段产生的数值是:1, 3, 5, 7, …等奇数ID
#注意此值的设置,不同的master设置不应该一样,否则就容易引起主键冲突,譬如master的offset=1,则masterB的offset=2,masterC的offset=3
auto_increment_offset=1
#此参数是配置从服务器的更新是否写入二进制日志,这个选项默认是不打开的,注意,在双主的模式中,此参数一定要设置,否则在masterB上进行了更新数据,在masterA和slaveB-1上会更新,但是在slaveA-1上不会更新
log-slave-updates
#经过1日志写操作就把日志文件写入硬盘一次(对日志信息进行一次同步)。n=1是最安全的做法,但效率最低。默认设置是n=0。
sync_binlog=1
四. 创建用户
在masterA 和masterB 上分别创建访问用户
#>mysql -uroot -uroot
mysql> create user mysync;
myslq> GRANT REPLICATION SLAVE ON *.* TO 'mysync'@'%' IDENTIFIED BY 'q123456';
五. 配置准备
在masterA 和masterB上刷新binlog日志
mysql>
reset slave;
reset master;
stop slave;
show mster status;
show slave status \G;
四. 在slave上配置master服务
#>mysql -uroot -uroot
mysql>
change master to master_host='192.168.2.99',
master_user='mysync',
master_password='q123456',
master_log_file='slave1-bin.000001',
master_log_pos=120;
*此处需要注意。如果以masterA 为例,则需要在masterB和slaveA-1上进行此操作,而slaveB-1上不需要进行;同样的,如果以masterB为例,则需要在mastarA和slaveB-1的mysql上执行此段代码,注意要根据各自对应替换对应的地方
五. 启动slave服务
在各个服务器中分别启动 slave服务
mysql> start slave;
六. 验证slave status 和检查是否成功
mysql>show show slave status \G;