MySQL集群解决方案(1):MySQL数据库的集群方案
1、系统架构存在的问题
在我们的系统架构中,DBserver方面我们只是使用了单节点服务,如果面对大并发,海量数据的存储,显然单节点的系统架构将存在很严重的问题,所以接下来,我们将实现MySQL的集群,来应对大并发、海量数据存储等问题。
2、MySQL数据库的集群方案
2.1、读写分离架构
2.1.1、说明
我们一般应用对数据库而言都是“读多写少”,也就说对数据库读取数据的压力比较大,有一个思路就是说采用数据库集群的方案: 其中一个是主库,负责写入数据,我们称之为:写库; 其它都是从库,负责读取数据,我们称之为:读库;
那么,对我们的要求是:
1. 读库和写库的数据一致;
2. 写数据必须写到写库;
3. 读数据必须到读库;
2.1.2 架构
从该系统架构中,可以看出:
- 数据库从之前的单节点变为多节点提供服务
- 主节点数据,同步到从节点数据
- 应用程序需要连接到2个数据库节点,并且在程序内部实现判断读写操作
这种架构存在2个问题:
(1)应用程序需要连接到多个节点,对应用程序而言开发变得复杂
- 这个问题,可以通过中间件解决
- 如果在程序内部实现,可使用Spring的AOP功能实现
(2)主从之间的同步,是异步完成,也就意味着这是 弱一致性
- 可能会导致,数据写入主库后,应用程序读取从库获取不到数据,或者可能会丢失数据,对于数据安全性要求比较高的应用是不合适的
- 该问题可以通过PXC集群解决
2.2 中间件
通过上面的架构,可以看出,应用程序会连接到多个节点,使得应用程序的复杂度会提升,可以通过中间件方式解决,如下:
从架构中,可以看出:
- 应用程序只需要连接到中间件即可,无需连接多个数据库节点
- 应用程序无需区分读写操作,对中间件直接进行读写操作即可
- 在中间件中进行区分读写操作,读发送到从节点,写发送到主节点
该架构也存在问题,中间件的性能成为了系统的瓶颈,那么架构可以改造成这样:
这样的话,中间件的可靠性得到了保证,但是也带来了新的问题,应用系统依然是需要连接到2个中间件,又为应用系统带来了复杂度。
2.3 负载均衡
在前面的架构中,都是基于MySQL主从的架构,那么在主从架构中,弱一致性问题依然没有解决,如果在需要强一致性的需求中,显然这种架构是不能应对的,比如:交易数据。
PXC提供了读写强一致性的功能,可以保证数据在任何一个节点写入的同时可以同步到其它节点,也就意味着可以存其它的任何节点进行读取操作,无延迟。
架构如下:
2.5 混合架构
在前面的PXC架构中,虽然可以实现了事务的强一致性,但是它是通过牺牲了性能换来的一致性,如果在某些业务场景下,如果没有强一致性的需求,那么使用PXC就不合适了。所以,在我们的系统架构中,需要将这两种方式综合起来,这样才是一个较为完善的架构。
MySQL集群解决方案(1):MySQL数据库的集群方案相关推荐
- mysql水平拆分 hash_常用的数据库表水平拆分方案
常用的数据库表水平拆分方案 发布时间:2018-09-28 17:50, 浏览次数:391 一,用户中心,以用户数据为例 User(uid, login_name, passwd, sex, age, ...
- mysql集群集成springboot_springboot配置数据库包括集群下 配置
首先准备数据库的必要信息. 查询当前数据库实例名 方法一:select instance_name from v$instance; 方法二:show parameter instance 查询数据库 ...
- mysql部门人员排序设计_MySQL数据库访问性能优化
MYSQL应该是最流行的WEB后端数据库.大量应用于PHP,Ruby,Python,Java 等Web语言开发项目中,无论NOSQL发展多么快,都不影响大部分架构师选择MYSQL作为数据存储. MYS ...
- mysql中文乱码解决方案_Mysql中文乱码解决方案
Mysql中文乱码解决方案 时间:2017-07-11 来源:华清远见JAVA学院 中文乱码问题一直是我们编程过程中比较常见又让人头疼的问题,但是只要按照标准进行配置,就能很好的避免出现中文乱 ...
- mysql处理上百万条的数据库如何优化语句来提高处理查询效率
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...
- 大数据量数据库设计与优化方案
一.数据库结构的设计 如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的编程和维护的难度,而且将会影响系统实际运行的性能.所以,在一个系统开始实施之前,完备的数据库模型的设计是必须的. ...
- 「mysql优化专题」高可用性、负载均衡的mysql集群解决方案(12)
不可避免的是,使用MySQL时随着时间的增长,用户量以及数据量的逐渐增加,访问量更是剧增,最终将会使MySQL达到某个瓶颈,那么MySQL的性能将会大大降低.怎么办?前面已经讲过十一篇优化方案,接下来 ...
- 高可用性、负载均衡的mysql集群解决方案
2019独角兽企业重金招聘Python工程师标准>>> 一.为什么需要mysql集群? 一个庞大的分布式系统的性能瓶颈中,最脆弱的就是连接.连接有两个,一个是客户端与后端的连接,另一 ...
- 高可用性、负载均衡的mysql集群解决方案(data+sql+mgm节点)
高可用性.负载均衡的mysql 集群解决方案 制作人:Dason QQ:623466642 博客:http://dason.blog.51cto.com/ 一.mysql 的市场占有率 二.mysql ...
最新文章
- 2021年大数据HBase(十七):❤️HBase的360度全面调优❤️
- Java日志的心路历程
- java编程实践开发项目,帮你突破瓶颈
- 1 State Hook
- 30 校准_校准or质控,傻傻分不清楚
- Rsync(远程同步):Linux中Rsync命令的10个实际示例
- powershell 安装mvn_Maven 安装好之后,命令行执行 `mvn -v` 提示“'mvn' 不是内部或外部命令,也不是可运行的程序 或批处理文件。”...
- 快速切换目录软件推荐——autojump
- 备份网站服务器文件路径,网站数据自动备份方法
- js dojo 保存txt文件
- C#基础5.1:StringBuilder和StopWatch类
- 企业如何选择SSL证书?
- 利用PPT要怎样制作文字弹幕特效
- 编程比赛三大赛制介绍(ACM赛制、OI赛制、IOI赛制)
- 【CANdelaStudio编辑CDD】-0.3-CDD中Fault Memory里DTC Column与Autosar Dem对应关系
- 从函数型数据到光滑函数
- JAVA 多态,封装,继承
- 怎么一键拼图?快速拼图这样做
- 用Spring Boot开发API请求详解--API开发
- json-handle使用