AI智能
改变未来

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

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的快速搭建》(https://www.cnblogs.com/w84422/p/15394662.html)。

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

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

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

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

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

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

具体的搭建步骤已在上一篇文章详细介绍,这里就不再重复了,可参见我的上一篇文章《Mysql读写分离集群的搭建且与MyCat进行整合》(https://www.cnblogs.com/w84422/p/15401259.html)。

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进行整合》(https://www.cnblogs.com/w84422/p/15401259.html)。

3.5 测试数据同步

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

4. MyCat配置

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

# cd/home/mycat/conf

# vim schema.xml

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

balance 属性 负载均衡类型,目前的取值有 4 种:1. balance=\"0\", 不开启读写分离机制,所有读操作都发送到当前可用的 writeHost 上。2. balance=\"1\",全部的 readHost 与 stand by writeHost 参与 select 语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且 M1 与 M2 互为主备),正常情况下,M2,S1,S2 都参与 select 语句的负载均衡。3. balance=\"2\",所有读操作都随机的在 writeHost、readhost 上分发。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,欢迎大家关注

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » Mysql双主双从高可用集群的搭建且与MyCat进行整合