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. centos7系统上pgsql的一些报错解决方法

    1.2021-07-15 # 问题: 登录时服务器拒绝连接 psql -h 192.168.1.112 # 解决方法:修改配置文件 pg_hba.conf ,将该主机加进白名单 vi pg_hba.c ...

  2. Win10 下安装Ubuntu 21.04桌面版 双系统 并设置win10为默认启动系统 详细教程

    @ 目录 〇.写在前面 〇 - Plus:如何进入BIOS 〇 - Plus - Plus:U盘启动快捷键 一.磁盘分区:Win10划分未分配空间 二.下载Ubuntu 21.04镜像 三.安装U盘启 ...

  3. Salesforce LWC学习(三十六) Quick Action 支持选择 LWC了

    本篇参考: https://developer.salesforce.com/docs/component-library/documentation/en/lwc/lwc.use_quick_act ...

  4. K8s 系列(四) - 浅谈 Informer

    1. 概述 进入 K8s 的世界,会发现有很多的 Controller,它们都是为了完成某类资源(如 pod 是通过 DeploymentController, ReplicaSetControlle ...

  5. OSS对象存储的文件上传、解冻、下载与查看

    上传文件 cp命令用于上传.下载.拷贝文件. # 语法 ./ossutil cp [-r] file_url cloud_url # 例如 ossutil64 cp -r /remote/closed ...

  6. Asp.Net 5上传文件 (Core API方式)

    参考文档 首先在控制器中注入IWebHostEnvironment IWebHostEnvironment提供有关正在运行应用程序的Web托管环境的信息. 属于命名空间Microsoft.AspNet ...

  7. Docker 容器间的单向连接

    Docker 容器间的单向连接 前言 a. 本文主要为 Docker的视频教程 笔记. b. 环境为 CentOS 7.0 云服务器 c. 上一篇:Dockerfile 自动制作 Docker 镜像( ...

  8. PHP的LZF压缩扩展工具

    这次为大家带来的是另外一个 PHP 的压缩扩展,当然也是非常冷门的一种压缩格式,所以使用的人会比较少,而且在 PHP 中提供的相关的函数也只是对字符串的编码与解码,并没有针对文件的操作.因此,就像 B ...

  9. 在eclipse上配置tomcat(包括解决找不到server,配置8.0以上版本)

    下载安装eclipse普通eclipse最多只支持到tomcat v 7,要想使用8以上的tomcat,就需要下载最新版本的Eclipse IDE,安装时 选择 Eclipse IDE for Ent ...

  10. pip3 install beautifulsoup4 出现错误 There was a problem confirming the ssl certificate

    chenhuimingdeMacBook-Pro:groceryList Mch$ sudo pip3 install beautifulsoup4 The directory '/Users/Mch ...