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,欢迎大家关注

Mysql双主双从高可用集群的搭建且与MyCat进行整合的更多相关文章

  1. 通过keepalived搭建MySQL双主模式的高可用集群系统

    1. 配置MySQL双主模式 1.修改my.cnf配置文件 默认情况下,MySQL的配置文件是/etc/my.cnf,在配置文件的[mysqld]段添加如下内容: server-id=1 log-bi ...

  2. centos HA高可用集群 heartbeat搭建 heartbeat测试 主上停止heartbeat服务 测试脑裂 两边都禁用ping仲裁 第三十二节课

    centos   HA高可用集群  heartbeat搭建 heartbeat测试  主上停止heartbeat服务  测试脑裂  两边都禁用ping仲裁  第三十二节课 heartbeat是Linu ...

  3. ElasticSearch高可用集群环境搭建和分片原理

    1.ES是如何实现分布式高并发全文检索 2.简单介绍ES分片Shards分片技术 3.为什么ES主分片对应的备分片不在同一台节点存放 4.索引的主分片定义好后为什么不能做修改 5.ES如何实现高可用容 ...

  4. SpringCloud之Eureka高可用集群环境搭建

    注册中心集群 在微服务中,注册中心非常核心,可以实现服务治理,如果一旦注册出现故障的时候,可能会导致整个微服务无法访问,在这时候就需要对注册中心实现高可用集群模式. Eureka集群相当简单:相互注册 ...

  5. Kubernetes实战:高可用集群的搭建和部署

    摘要:官方只提到了一句"使用负载均衡器将 apiserver 暴露给工作节点",而这恰恰是部署过程中需要解决的重点问题. 本文分享自华为云社区<Kubernetes 高可用集 ...

  6. Kafaka高可用集群环境搭建

    zk集群环境搭建:https://www.cnblogs.com/toov5/p/9897868.html 三台主机每台的Java版本1.8 下面kafka集群的搭建:  3台虚拟机均进行以下操作:  ...

  7. rabbitmq+haproxy+keepalived高可用集群环境搭建

    1.先安装centos扩展源: # yum -y install epel-release 2.安装erlang运行环境以及rabbitmq # yum install erlang ... # yu ...

  8. Hadoop HA 高可用集群的搭建

    hadoop部署服务器 系统 主机名 IP centos6.9 hadoop01 192.168.72.21 centos6.9 hadoop02 192.168.72.22 centos6.9 ha ...

  9. CentOS下RabbitMq高可用集群环境搭建

    准备工作 1,准备两台或多台安装有rabbitmq-server服务的服务器 我这里准备了两台,分别如下: 192.168.40.130 rabbitmq01192.168.40.131 rabbit ...

随机推荐

  1. Mybatis源码解析3——核心类SqlSessionFactory,看完我悟了

    这是昨晚的武汉,晚上九点钟拍的,疫情又一次来袭,曾经熙熙攘攘的夜市也变得冷冷清清,但比前几周要好很多了.希望大家都能保护好自己,保护好身边的人,生活不可能像你想象的那么好,但也不会像你想象的那么糟. ...

  2. Spring笔记(3)

    一.JDBC Template基本使用 1.开发步骤 1.1直接使用template 导入spring-jdbc和spring-tx坐标 <!-- JDBC--> <dependen ...

  3. 电子设备的使用方法-第5版(佳明智能腕表小米手机联想轻薄笔记本群晖存储)我的腾讯QQ电子邮箱地址是 595076941@qq.com - 2021年9月5日

      电子设备的使用方法-第5版   (佳明智能腕表小米手机联想轻薄笔记本群晖存储) 2021年9月5日 我的腾讯QQ电子邮箱地址是  595076941@qq.com 前言 大家好,我叫徐晓亮,今天我 ...

  4. SpringMVC执行流程总结

    SpringMVC 执行流程: 用户发送请求至前端控制器 DispatcherServlet DispatcherServlet 收到请求调用处理映射器 HandlerMapping 处理映射器根据请 ...

  5. idea鼠标双击.log日志文件无法打开

    发现只要再mybatis-config.xml的起别名中加<package name="xxx"/>,就会导致Reader entry: ����   1 n乱码,而R ...

  6. 1.24学习总结——HTML常见标签

    HTML 标签简写及全称 下表列出了 HTML 标签简写及全称: 标签 英文全称 中文说明 a Anchor 锚 abbr Abbreviation 缩写词 acronym Acronym 取首字母的 ...

  7. 利用 Nginx 搭建小型的文件服务器

    利用 Nginx 搭建小型的文件服务器 1.查看 Nginx 配置 android@localhost:/etc/nginx/conf.d$ nginx -hnginx version: nginx/ ...

  8. 十、Abp vNext 基础篇丨权限

    介绍 本章节来把接口的权限加一下 权限配置和使用 官方地址:https://docs.abp.io/en/abp/latest/Authorization 下面这种代码可能我们日常开发都写过,ASP. ...

  9. Java基础系列(35)- 数组声明创建

    数组声明创建 首先必须声明数组变量,才能在程序中使用数组.下面是声明数组变量的语法: dataType[] arrayRefVar; //首选的方法 或 dataType arrayRefVar[]; ...

  10. linux 安装配置 jdk1.8

    一.查看Linux系统是否有自带的jdk: 1.输入:java -version 2.输入:rpm -qa | grep java 检测jdk的安装包,(注意:rpm命令符没有时记得下载一个输入:ap ...