WHCSRL 技术网

Mysql双主双从高可用集群的搭建且与MyCat进行整合

目录

1.概述

2. 场景介绍 

3. Mysql 双主双从集群的搭建

3.1 服务器B(主1)与服务器A(从1)的主从搭建

3.2 配置服务器C(主2)做为 服务器B(主1)的从

3.3 配置服务器B(主1)做为 服务器C(主2)的从

3.4 服务器C(主2)与服务器D(从2)的主从搭建

3.5 测试数据同步 

4. MyCat配置

4.1 在之前的基础上修改MyCat配置

4.2 重启MyCat

4.3 测试高可用

5. 综述

6. 个人公众号


1.概述

老话说的好:瞻前顾后、患得患失只会让我们失败,下定决心,干就完了。

言归正传,之前我们聊了Mysql的一主一从读写分离集群的搭建,虽然一主一从或一主多从集群解决了并发读的问题,但由于主节点只有一台,如果主节点宕机了,则数据库的写操作便无法完成,从而无法做到高可用。

因此,今天我们来聊一下Mysql双主双从的集群搭建,双主双从的原理很简单,相当于有两个一主一从,然后两个主节点再互为主从,互相复制数据,然后借助MyCat的机制,先把一台主作为写库,另一台主和两台从作为读库,当作为写库的主宕机后,另一台主则作为写库提供服务,从而实现高可用。如下图所示:

2. 场景介绍 

服务器A IP:192.168.1.22  (Mysql从1)(MyCat)

服务器B IP:192.168.1.12  (Mysql主1)

服务器C IP:192.168.1.15  (Mysql主2)

服务器D IP:192.168.1.16  (Mysql从2)

所有服务器都已安装了Mysql,且初始化完成,关于Mysql在CentOS7的安装,可参见我的另一篇文章《MyCat的快速搭建》(MyCat的快速搭建_追风人的博客-CSDN博客)。

服务器B作为 主1,服务器A 作为 服务器B 的 从。

服务器C作为 主2,服务器D 作为 服务器C 的 从。

服务器B 和 服务器C 互为主从。

MyCat 已安装在服务器A上。MyCat的安装也可参见我的另一篇文章《MyCat的快速搭建》。

3. Mysql 双主双从集群的搭建

3.1 服务器B(主1)与服务器A(从1)的主从搭建

具体的搭建步骤已在上一篇文章详细介绍,这里就不再重复了,可参见我的上一篇文章《Mysql读写分离集群的搭建且与MyCat进行整合》(Mysql读写分离集群的搭建且与MyCat进行整合_追风人的博客-CSDN博客)。

3.2 配置服务器C(主2)做为 服务器B(主1)的从

3.2.1 传输服务器B(主1)的数据到 服务器C(主2)

# scp dbdump.db root@192.168.1.15:/home

注:上一篇文章《Mysql读写分离集群的搭建且与MyCat进行整合》中已介绍了如何备份服务器B的数据,请参见此文章。 

3.2.2 在 服务器C(主2)还原 服务器B(主1)的 mysql 数据

# cd /home

# mysql < dbdump.db -uroot -p

3.2.3 修改 服务器C(主2)配置文件

# vim /etc/my.cnf

3.2.4 重启服务器C(主2)的 Mysql 服务

# systemctl restart mysqld

3.2.5 在 服务器C(主2)上设置主从同步配置

# mysql -u root -p

mysql> change master to
master_host='192.168.1.12',
master_user='repl',
master_password='Zhuifengren@123456',
master_log_file='zhuifengren_log.000001',
master_log_pos=1432;

mysql> start slave;

3.3 配置服务器B(主1)做为 服务器C(主2)的从

接下来,反过来,让主1也成为主2的从,做到互为主从

3.3.1 在 服务器C(主2)上创建同步账号并授权

# mysql -u root -p

mysql> create user 'repl'@'%%' identified by 'Zhuifengren@123456';

mysql> grant replication slave on *.* to 'repl'@'%%';

mysql> flush privileges;

3.3.2 在 服务器C(主2)上找到 log-bin 的位置

# mysql -u root -p

mysql> show master status;

3.3.3 在 服务器B(主1)上设置主从同步配置

# mysql -u root -p

mysql> change master to
master_host='192.168.1.15',
master_user='repl',
master_password='Zhuifengren@123456',
master_log_file='zhuifengren_log.000001',
master_log_pos=7300;

mysql> start slave;

3.4 服务器C(主2)与服务器D(从2)的主从搭建

具体的搭建步骤与 3.1 类似,就不再重复介绍了,可参见我的上一篇文章《Mysql读写分离集群的搭建且与MyCat进行整合》(Mysql读写分离集群的搭建且与MyCat进行整合_追风人的博客-CSDN博客)。

3.5 测试数据同步 

分部在 服务器B(主1) 和 服务器C(主2) 做数据的增、删、改操作,查看是否所有的服务器数据都跟着同步。

4. MyCat配置

4.1 在之前的基础上修改MyCat配置

# cd /home/mycat/conf

# vim schema.xml

dataHost 标签中 balance 属性的含义如下:(摘抄自 MyCat 官网的权威指南)

  1. balance 属性 负载均衡类型,目前的取值有 4 种:
  2. 1. balance="0", 不开启读写分离机制,所有读操作都发送到当前可用的 writeHost 上。
  3. 2. balance="1",全部的 readHost 与 stand by writeHost 参与 select 语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且 M1 与 M2 互为主备),正常情况下,M2,S1,S2 都参与 select 语句的负载均衡。
  4. 3. balance="2",所有读操作都随机的在 writeHost、readhost 上分发。
  5. 4. balance="3",所有读请求随机的分发到 wiriterHost 对应的 readhost 执行,writerHost 不负担读压力, 注意 balance=3 只在 1.4 及其以后版本有,1.3 没有。

4.2 重启MyCat

# cd /home/mycat/bin

# ./mycat stop

# ./mycat start

4.3 测试高可用

在集群正常的情况下,使用MyCat进行读写操作。

将服务器B(主1)的Mysql服务停止,使用MyCat进行读写操作,看是否正常。

5. 综述

今天聊了一下 Mysql双主双从高可用集群的搭建,以及 MyCat 如何整合 Mysql 双主双从集群,希望可以对大家的工作有所帮助。

欢迎帮忙点赞、评论、转发、加关注 :)

关注追风人聊Java,每天更新Java干货。

6. 个人公众号

追风人聊Java,欢迎大家关注

推荐阅读