MySQL主从复制(6)双主复制
一、双主复制介绍
双主复制是一种特殊的MySQL主从复制架构,两个数据库服务器既是主库(Master)又是从库(Slave)。每个服务器都可以接受写入操作,并将这些更改复制到另一个服务器,当一个节点发生故障时,应用也可以切换到另一个节点继续提供服务。但是双主架构下会有很大概率出现数据冲突的问题,所以这种方案基本都不会再使用了。如果真有不得已的场景需要这样用,业务层面需要确定每个节点写入的数据是不冲突的,比如DB1的写入都在MasterA完成、DB2的写入都在Master2完成。
二、双主复制配置
1、主节点A配置
· 主库A配置文件相关参数
vi /etc/my.cnf log-slave-updates = 1 #由于可能发生身份切换,所以打开该选项,作为从库也会记录binlog replicate_same_server_id = 0 #避免循环写入问题 auto_increment_increment=2 #自增主键步长,通常有几个主库就写几,避免主键冲突 auto_increment_offset=1 #设置自增主键起始值,第一个主库为1,第二个主库为2,以此类推
· 主库A为主库B授权
mysql > grant replication slave on *.* to 'repl'@'192.168.1.102' identified by '123456';
2、主节点B配置
· 主库B配置文件相关参数
vi /etc/my.cnf log-slave-updates = 1 replicate_same_server_id = 0 auto_increment_increment=2 auto_increment_offset=2 #主键起始值,这里应该是2了
· 主库B为主库A授权
mysql > grant replication slave on *.* to 'repl'@'192.168.1.101' identified by '123456'; #102为另外一台主的地址
3、主库A配置主从,位置信息要在主库B服务运行后show master status查看
mysql > change master to master_host='192.168.1.102',master_user='repl',master_password='123456',master_log_file='master-bin.000002',master_log_pos=604,master_port=3306
4、主库B配置主从,位置信息要在主库A服务运行后show master status查看
mysql > change master to master_host='192.168.1.101',master_user='repl',master_password='123456',master_log_file='master-bin.000002',master_log_pos=604,master_port=3306
5、两台机器启动从服务,如果配置成功的话在任意一台写入数据都可以同步到另一台机器
mysql > start slave
二、Keepalived配置
1、在两台数据库服务器上编译安装Keepalived
./configure --prefix=/usr/local/keepalived
make
meke install
2、创建Keepalived配置文件
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
vi /etc/keepalived/keepalived.conf
global_defs {
# 全局设置,主要是主备切换时发送邮件通知,可以直接注释
# notification_email {
# acassen@firewall.loc
# }
# notification_email_from Alexandre.Cassen@firewall.loc
# smtp_server 192.168.145.1
# smtp_connect_timeout 30
# router_id LVS_DEVEL
# vrrp_skip_check_adv_addr
# vrrp_strict
# vrrp_garp_interval 0
# vrrp_gna_interval 0
}
vrrp_instance mysql { #实例名称随便取
state MASTER #标记该节点是master还是backup,但并不起实际作用,为了防止脑裂抢占IP可以都设置为backup
interface eth0 #配置VIP绑定的网卡,这里使用和外网通信的网卡
virtual_router_id 51 #取1-255之间的值,主备需要相同,这样才能成为一个组
priority 100 #权重,数值高的主机是master,这是影响主备的关键
nopreempt #非抢占模式,需要设置state为backup
advert_int 1 #主备之间通讯的间隔秒数,用于判断主节点是否存活
authentication {
auth_type PASS #进行安全认证的方式,PASS或者AH方式,推荐PASS
auth_pass 1111 #PASS的密码
}
virtual_ipaddress {
192.168.145.200 #VIP地址,最多可以写20个,keepalive启动后会自动配置该处VIP
}
virtual_server 192.168.145.200 { #访问VIP所转发到的后端节点配置
delay_loop 6
protocol TCP
lb_algo rr
lb_kind DR
real_server 192.168.145.101 3306{ #后端节点1
weight 1 }
real_server 192.168.145.102 3306{ #后端节点2
weight 1 }
}
}
3、启动Keepalived后观察VIP是否绑定成功即可
版权声明:本文章版权归数据库运维网(www.ywdba.cn)所有。如需引用本站内容,请注明来源及作者。
评论