MySQL数据库的集群方案
1.简介
我们一般应用对数据库而言都是“读多写少”,也就说对数据库读取数据的压力比较大,有一个思路就是说采用数据库集群的方案: 其中一个是主库,负责写入数据,我们称之为:写库; 其它都是从库,负责读取数据,我们称之为: 读库;
那么,对我们的要求是:
- 读库和写库的数据一致;
- 写数据必须写到写库;
- 读数据必须到读库;
2.架构
从该系统架构中,可以看出:
- 数据库从之前的单节点变为多节点提供服务
- 主节点数据,同步到从节点数据
- 应用程序需要连接到2个数据库节点,并且在程序内部实现判断读写操作
这种架构存在2个问题:
- 应用程序需要连接到多个节点,对应用程序而言开发变得复杂
这个问题,可以通过中间件解决,如果在程序内部实现,可使用Spring的AOP功能实现
- 主从之间的同步,是异步完成,也就意味着这是 弱一致性
a. 可能会导致,数据写入主库后,应用程序读取从库获取不到数据,或者可能会丢失数据,对于数据安全性要求比较高的应用是不合适的
b. 该问题可以通过PXC集群解决
3.中间件
通过上面的架构,可以看出,应用程序会连接到多个节点,使得应用程序的复杂度会提升,可以通过中间件方式解 决,如下:
从架构中,可以看出:
- 应用程序只需要连接到中间件即可,无需连接多个数据库节点
- 应用程序无需区分读写操作,对中间件直接进行读写操作即可
- 在中间件中进行区分读写操作,读发送到从节点,写发送到主节点
该架构也存在问题,中间件的性能成为了系统的瓶颈,那么架构可以改造成这样:
这样的话,中间件的可靠性得到了保证,但是也带来了新的问题,应用系统依然是需要连接到2个中间件,又为应用 系统带来了复杂度。
4.负载均衡
为了解决以上问题,我们将继续优化架构,在应用程序和中间件之间增加proxy代理,由代理来完成负载均衡的功 能,应用程序只需要对接到proxy即可。为了解决以上问题,我们将继续优化架构,在应用程序和中间件之间增加proxy代理,由代理来完成负载均衡的功 能,应用程序只需要对接到proxy即可。
至此,主从复制架构的高可用架构才算是搭建完成。
5. PXC集群架构
在前面的架构中,都是基于MySQL主从的架构,那么在主从架构中,弱一致性问题依然没有解决,如果在需要强一 致性的需求中,显然这种架构是不能应对的,比如:交易数据。
PXC提供了读写强一致性的功能,可以保证数据在任何一个节点写入的同时可以同步到其它节点,也就意味着可以存 其它的任何节点进行读取操作,无延迟。
架构如下:
6.混合架构
在前面的PXC架构中,虽然可以实现了事务的强一致性,但是它是通过牺牲了性能换来的一致性,如果在某些业务场 景下,如果没有强一致性的需求,那么使用PXC就不合适了。所以,在我们的系统架构中,需要将这两种方式综合起 来,这样才是一个较为完善的架构。
MySQL数据库的集群方案相关推荐
- MySQL集群解决方案(1):MySQL数据库的集群方案
1.系统架构存在的问题 在我们的系统架构中,DBserver方面我们只是使用了单节点服务,如果面对大并发,海量数据的存储,显然单节点的系统架构将存在很严重的问题,所以接下来,我们将实现MySQL的集群 ...
- mysql数据库—PXC集群
1.PXC介绍 Percona XtraDB Cluster(简称PXC) 是基于Galera的MySQL高可用集群解决方案 Galera Cluster是Codership公司开发的一套免费开源的高 ...
- MySQL高可用集群方案优劣对比
转载自: https://www.cnblogs.com/wuxu/p/13161438.html 集群的好处: (1)高可用性:故障检测及迁移,多节点备份: (2)可伸缩性:新增数据库节点便利,方便 ...
- mysql数据库的pxc工具_CentOS7 下 MySQL 数据库 PXC 集群部署操作指导
背景 最近在进行 MySQL 的 PXC 集群搭建使用和研究 前期已完成了一篇记录文章 : [CentOS7 下 MySQL 之 PXC 集群部署[Docker+多机多节点]] 但是,毕竟不是所有人都 ...
- mysql数据库rp集群_MySQL集群入门(PXC)
目标: 1.掌握PXC集群MySQL方案的原理: 2.掌握PXC集群的强一致性: 3.掌握PXC集群的高可用方案: 硬件要求: 1.Win10x64企业版/linux/MacOS: 2.Docker虚 ...
- MySQL跨机房集群方案_Mysql跨机房同步方案
随着用户量的不断累积,Mysql从单实例单节点发展到多实例多节点的主备,再到一个机房几十台Myql实例,但是现在,一个机房也开始慢慢无法承受庞大的数据吞吐,多机房的理念开始构建. 假设现有两个机房,需 ...
- mysql数据库rp集群,使用MySQL-Cluster搭建MySQL数据库集群
1.MySQL集群的作用: - 解决访问节点的单点故障 - 数据存储节点的单点故障 - 解决数据存储节点数据备份问题 2.集群: 使用一组服务器提供相同的服务 3.关于MySQL-Cluster: M ...
- mysql数据库—MAH集群部署
1.MHA的介绍: 由日本DeNA公司youshimaton开发. 是一套优秀的实现MySQL高可用的解决方案. 数据库的自动故障切换操作能做到在0~30秒之内完成. MHA能确保在故障切换过程中最大 ...
- MySQL 数据库主从集群搭建
文章目录 1 准备工作 2 配置主数据库 3 配置从库 4 从库设置只读用户 5 推荐参考资料 1 准备工作 1 选择一个服务器当做主服务器,将服务器上需要的数据进行备份 2 安装从库的 MySQL, ...
最新文章
- 海康威视人证对比设备SDK-C#
- 考研-专业课-数据结构
- cmd做个定时弹窗_揭秘200元山寨苹果耳机!一颗耳边的“定时炸弹”...
- 如何使用React Hook
- python正则匹配_python 正则表达式详解
- 可穿戴计算机硬件技术研究,可穿戴计算机硬件技术应用探究.doc
- oracle 600 session,记一次ORA-600[4042]故障的处理
- c++ public 函数名相同_C++虚函数、重载、覆盖
- Kava Labs已上线Trust Wallet专用桥接器以提供DeFi产品服务
- 程序人生 - 王者荣耀重名代码
- Windows10 隐藏更新小工具
- PC端微信自动发送机器人
- 软件项目经理应具备的素质和条件_一个合格的软件项目经理应该具备哪些条件?...
- 无法定位程序输入点K32Get Module File Name Ex于动态链接库KERNEL32.dll上 的错误解析
- 群体智能优化算法之总结
- 教你寫代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!
- U盘打不开的常见原因有哪些?
- 数组公式和普通公式,差别在于思维方式的不同! 要用看数组的方式看待数据
- android 按钮添加图片并靠左显示
- Win10连接上了wifi,但显示Internet无网络访问权限的解决方法
热门文章
- 硬件学习笔记(器件篇)—— 铝电解电容(四)
- 在线API文档,技术文档工具源码ShowDoc
- bootstrap-drawer 插件
- golang 微信支付全解析
- hdu5775 树状数组
- PLSQL Developer工具介绍与基本使用
- C语言中的前置/后置++、- -
- TensorFlow v2.0实现Word2Vec算法
- 2009年圣诞节100条手机短信
- 基于人工智能的智慧校园助手(springboot+springcloud+redis+vue+vant ui+element ui+mysql+Elasticsearch+RabbitMQ项目)