MySQL集群搭建-主主复制(双主)

18 篇文章 0 订阅
7 篇文章 0 订阅

一、实现原理

  1. 当从库IO线程接受到主库传递来的二进制日志(Binlog)并将之保存为从库的中继日志(relay log),然后从库SQL线程将中继日志(relay log)的事件重做到从库上,实现主从数据同步。
  2. 如果SQL线程发现该事件的server_id与当前从库的server_id相同,则会丢弃该事件,因此如果两台MySQL如何互为主从,不会导致相同的事件被重复执行。

二、设计目标

在一套MySQL复制群集中,通过双主或多主架构,解决一主多从架构的单点故障,减少主从切换的故障处理时间,增加MySQL群集的高可用性。

三、设计架构图

image-20210130233000778

四、双主架构的优缺点

4.1 优点

  1. 主主模式能将读写请求分摊到两个主节点,有效提升服务器使用率;
  2. 主节点发生故障后,能快速进行主从切换;
  3. 当故障节点恢复后,故障节点能通过复制进行数据恢复(应用其他节点数据)和数据同步(将未同步数据发生给其他节点)。

4.2 缺点

  1. 当主节点上MySQL实例发生故障后,可能会存在部分数据(Binlog)未同步到另外的主节点,导致数据丢失(直到故障节点恢复);
  2. 主主模式下,很容易因数据访问控制不当导致数据冲突;
  3. 为提高系统高可用性,双主架构会被扩展成双主多从结构,同样存在主节点发生故障后多个从库选主和恢复复制的问题。

五、集群搭建

5.1 服务器准备

两台已安装MySQL服务器,可参考:https://blog.csdn.net/weixin_41668084/article/details/111630605

序号系统内存CPUIP地址
1CentOS4G4192.168.61.40
2CentOS4G4192.168.61.41

5.2 集群配置

image-20210130235306464
5.2.1 主机-1配置
#任意自然数,保证两台MySQL主机不重复
server-id=1  
 
#开启二进制日志
log-bin=mysql-bin   
 
#步进值auto_imcrement。一般有n台主MySQL就填n
auto_increment_increment=2   
 
#起始值。一般填第n台主MySQL。此时为第一台主MySQL
auto_increment_offset=1   
 
#忽略同步的mysql库,可不设置
binlog-ignore=mysql   
binlog-ignore=information_schema
 
#要同步的数据库,默认所有库
replicate-do-db=author 
5.2.2 主机-2配置
#任意自然数,保证两台MySQL主机不重复
server-id=2  
 
#开启二进制日志
log-bin=mysql-bin   
 
#步进值auto_imcrement。一般有n台主MySQL就填n
auto_increment_increment=2   
 
#起始值。一般填第n台主MySQL。
auto_increment_offset=2   
 
#忽略同步的mysql库,可不设置
binlog-ignore=mysql   
binlog-ignore=information_schema
 
#要同步的数据库,默认所有库
replicate-do-db=author 
5.2.3 登录MySQL,创建相互授权账户
# 40主机,创建授权41主机的账户
mysql> grant replication slave on *.* to '账户'@'192.168.40' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

# 41主机,创建授权40主机的账户
mysql> grant replication slave on *.* to '账户'@'192.168.39' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

5.2.4 重启服务
systemctl restart mysqld
5.2.5 登录MySQL,查看主机状态
mysql>SHOW MASTER STATUS;
image-20210131000924136
5.2.6 相互设置同步的日志节点
change master to master_host='主服务器ip地址',
master_port=3306,master_user='链接主服务器账户',
master_password='链接主服务器角色账户密码',
master_log_file='主服务器file参数',
master_log_pos=主服务器positon参数

5.2.7 启动slave服务,查看状态

# 启动slave服务
start slave;
# 查看slave状态
show slave status\G
image-20210131001712159

配置成功。

以上,请参考!


参考链接

  1. MySQL Replication–双主结构优缺点
  2. 主主复制
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值