1.简介

我们一般应用对数据库而言都是“读多写少”,也就说对数据库读取数据的压力比较大,有一个思路就是说采用数据库集群的方案: 其中一个是主库,负责写入数据,我们称之为:写库; 其它都是从库,负责读取数据,我们称之为: 读库;

那么,对我们的要求是:

  • 读库和写库的数据一致;
  • 写数据必须写到写库;
  • 读数据必须到读库;

2.架构


从该系统架构中,可以看出:

  • 数据库从之前的单节点变为多节点提供服务
  • 主节点数据,同步到从节点数据
  • 应用程序需要连接到2个数据库节点,并且在程序内部实现判断读写操作

这种架构存在2个问题:

  • 应用程序需要连接到多个节点,对应用程序而言开发变得复杂
    这个问题,可以通过中间件解决,如果在程序内部实现,可使用Spring的AOP功能实现
  • 主从之间的同步,是异步完成,也就意味着这是 弱一致性
    a. 可能会导致,数据写入主库后,应用程序读取从库获取不到数据,或者可能会丢失数据,对于数据安全性要求比较高的应用是不合适的
    b. 该问题可以通过PXC集群解决

3.中间件

通过上面的架构,可以看出,应用程序会连接到多个节点,使得应用程序的复杂度会提升,可以通过中间件方式解 决,如下:

从架构中,可以看出:

  • 应用程序只需要连接到中间件即可,无需连接多个数据库节点
  • 应用程序无需区分读写操作,对中间件直接进行读写操作即可
  • 在中间件中进行区分读写操作,读发送到从节点,写发送到主节点

 该架构也存在问题,中间件的性能成为了系统的瓶颈,那么架构可以改造成这样:

这样的话,中间件的可靠性得到了保证,但是也带来了新的问题,应用系统依然是需要连接到2个中间件,又为应用 系统带来了复杂度。

4.负载均衡

为了解决以上问题,我们将继续优化架构,在应用程序和中间件之间增加proxy代理,由代理来完成负载均衡的功 能,应用程序只需要对接到proxy即可。为了解决以上问题,我们将继续优化架构,在应用程序和中间件之间增加proxy代理,由代理来完成负载均衡的功 能,应用程序只需要对接到proxy即可。


至此,主从复制架构的高可用架构才算是搭建完成。

5. PXC集群架构

在前面的架构中,都是基于MySQL主从的架构,那么在主从架构中,弱一致性问题依然没有解决,如果在需要强一 致性的需求中,显然这种架构是不能应对的,比如:交易数据。

PXC提供了读写强一致性的功能,可以保证数据在任何一个节点写入的同时可以同步到其它节点,也就意味着可以存 其它的任何节点进行读取操作,无延迟。

架构如下:

6.混合架构

在前面的PXC架构中,虽然可以实现了事务的强一致性,但是它是通过牺牲了性能换来的一致性,如果在某些业务场 景下,如果没有强一致性的需求,那么使用PXC就不合适了。所以,在我们的系统架构中,需要将这两种方式综合起 来,这样才是一个较为完善的架构。

MySQL数据库的集群方案相关推荐

  1. MySQL集群解决方案(1):MySQL数据库的集群方案

    1.系统架构存在的问题 在我们的系统架构中,DBserver方面我们只是使用了单节点服务,如果面对大并发,海量数据的存储,显然单节点的系统架构将存在很严重的问题,所以接下来,我们将实现MySQL的集群 ...

  2. mysql数据库—PXC集群

    1.PXC介绍 Percona XtraDB Cluster(简称PXC) 是基于Galera的MySQL高可用集群解决方案 Galera Cluster是Codership公司开发的一套免费开源的高 ...

  3. MySQL高可用集群方案优劣对比

    转载自: https://www.cnblogs.com/wuxu/p/13161438.html 集群的好处: (1)高可用性:故障检测及迁移,多节点备份: (2)可伸缩性:新增数据库节点便利,方便 ...

  4. mysql数据库的pxc工具_CentOS7 下 MySQL 数据库 PXC 集群部署操作指导

    背景 最近在进行 MySQL 的 PXC 集群搭建使用和研究 前期已完成了一篇记录文章 : [CentOS7 下 MySQL 之 PXC 集群部署[Docker+多机多节点]] 但是,毕竟不是所有人都 ...

  5. mysql数据库rp集群_MySQL集群入门(PXC)

    目标: 1.掌握PXC集群MySQL方案的原理: 2.掌握PXC集群的强一致性: 3.掌握PXC集群的高可用方案: 硬件要求: 1.Win10x64企业版/linux/MacOS: 2.Docker虚 ...

  6. MySQL跨机房集群方案_Mysql跨机房同步方案

    随着用户量的不断累积,Mysql从单实例单节点发展到多实例多节点的主备,再到一个机房几十台Myql实例,但是现在,一个机房也开始慢慢无法承受庞大的数据吞吐,多机房的理念开始构建. 假设现有两个机房,需 ...

  7. mysql数据库rp集群,使用MySQL-Cluster搭建MySQL数据库集群

    1.MySQL集群的作用: - 解决访问节点的单点故障 - 数据存储节点的单点故障 - 解决数据存储节点数据备份问题 2.集群: 使用一组服务器提供相同的服务 3.关于MySQL-Cluster: M ...

  8. mysql数据库—MAH集群部署

    1.MHA的介绍: 由日本DeNA公司youshimaton开发. 是一套优秀的实现MySQL高可用的解决方案. 数据库的自动故障切换操作能做到在0~30秒之内完成. MHA能确保在故障切换过程中最大 ...

  9. MySQL 数据库主从集群搭建

    文章目录 1 准备工作 2 配置主数据库 3 配置从库 4 从库设置只读用户 5 推荐参考资料 1 准备工作 1 选择一个服务器当做主服务器,将服务器上需要的数据进行备份 2 安装从库的 MySQL, ...

最新文章

  1. 海康威视人证对比设备SDK-C#
  2. 考研-专业课-数据结构
  3. cmd做个定时弹窗_揭秘200元山寨苹果耳机!一颗耳边的“定时炸弹”...
  4. 如何使用React Hook
  5. python正则匹配_python 正则表达式详解
  6. 可穿戴计算机硬件技术研究,可穿戴计算机硬件技术应用探究.doc
  7. oracle 600 session,记一次ORA-600[4042]故障的处理
  8. c++ public 函数名相同_C++虚函数、重载、覆盖
  9. Kava Labs已上线Trust Wallet专用桥接器以提供DeFi产品服务
  10. 程序人生 - 王者荣耀重名代码
  11. Windows10 隐藏更新小工具
  12. PC端微信自动发送机器人
  13. 软件项目经理应具备的素质和条件_一个合格的软件项目经理应该具备哪些条件?...
  14. 无法定位程序输入点K32Get Module File Name Ex于动态链接库KERNEL32.dll上 的错误解析
  15. 群体智能优化算法之总结
  16. 教你寫代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!
  17. U盘打不开的常见原因有哪些?
  18. 数组公式和普通公式,差别在于思维方式的不同! 要用看数组的方式看待数据
  19. android 按钮添加图片并靠左显示
  20. Win10连接上了wifi,但显示Internet无网络访问权限的解决方法

热门文章

  1. 硬件学习笔记(器件篇)—— 铝电解电容(四)
  2. 在线API文档,技术文档工具源码ShowDoc
  3. bootstrap-drawer 插件
  4. golang 微信支付全解析
  5. hdu5775 树状数组
  6. PLSQL Developer工具介绍与基本使用
  7. C语言中的前置/后置++、- -
  8. TensorFlow v2.0实现Word2Vec算法
  9. 2009年圣诞节100条手机短信
  10. 基于人工智能的智慧校园助手(springboot+springcloud+redis+vue+vant ui+element ui+mysql+Elasticsearch+RabbitMQ项目)