MySQL数据库的集群方案
读写分离结构(主从)
读多写少,也就是对数据库读取数据的压力比较大。
其中一个是主库,负责写入数据,成为写库;其他都是从库,负责读取数据,成为读库。
对我们的要求:
- 读库和写库的数据一致;
- 写数据必须写到写库;
- 读数据必须到读库;
集群方案与单节点的差异:
- 数据库从之前的单节点变为多节点提供服务;
- 主节点数据,同步从节点数据;
- 应用程序需要连接2个数据库节点,并且在程序内部实现判断读写操作;
这种方案的缺点:
- 应用程序需要连接到多个节点,对应用程序而言变得复杂;
- 这个问题可以通过中间件解决;
- 如果在程序内部实现,可使用Spring的AOP功能实现;
- 主从之间的同步,是异步完成,也就意味着是 弱一致性;
- 可能会导致数据写入主库后,应用程序读取从库获取不到数据,或者可能会丢失数据,对于数据安全性要求比较高的应用是不合适的;
- 该问题可以通过PXC集群解决;
中间件
应用程序会连接到多个节点,使得应用程序的复杂度提升,可以通过中间件方式解决。
- 应用程序只需要连接到中间件即可,无需连接多个数据库节点;
- 应用程序无需区分读写操作,对中间件直接进行读写操作即可;
- 在中间件中进行区分读写操作,读操作发送到从节点,写操作发送到主节点;
这种方式的架构也存在问题,中间件的性能成为系统的瓶颈,但是可以使用多个中间件部署的方式进行缓解。
这样的话,中间件的可靠性得到了保证,但是也带来了新的问题,应用系统依然需要连接2个中间件,增加了应用系统的复杂度。
负载均衡
为了解决以上问题,我们将继续优化架构,在应用程序和中间件之间增加proxy代理,由代理来完成负载均衡的功能,应用程序只需要对接到proxy即可。
PXC集群架构
在前面的架构中,都是基于MySQL主从的架构,那么在主从机构中,弱一致性问题依然没有解决,如果在需要强一致性的需求中,显然这种架构是不能应对的,比如:交易数据。
PCX提供了读写强一致性的功能,可以保证数据在任何一个节点写入的同时可以同步到其他节点,也就意味着可以从其他的任何节点进行读取操作,无延迟。
混合架构
在前面的PXC架构中,虽然可以实现了事务的强一致性,但是它是通过牺牲了性能换来的一致性,如果在某些业务场景下,如果没有强一致性的需求,那么使用PXC就不合适了。所以,在我们的系统架构中,需要将这两种方式综合起来,这样才是一个完善的架构。
主从复制原理
MySQL主(master)从(slave)复制的原理:
- master将数据改变记录到二进制日志(binary log)中,即配置文件log-bin指定的文件(这些记录叫做二进制日志时间,binary log events);
- slave将master的binary log events拷贝到它的中继日志(relay log);
- slave重新执行中继日志中的事件,将改变反映它自己的数据(数据重演);
主从配置需要注意的地方:
- 主DB server和从DB server数据库的版本一致;
- 主DB server和从DB server数据库数据结构、数据一致;
- 主DB server开启二进制日志,主DB server和从DB server的server_id都必须唯一;
MySQL数据库的集群方案的更多相关文章
- MySQL数据库企业集群项目实战(阶段三)
MySQL数据库企业集群项目实战(阶段三) 作者 刘畅 时间 2020-10-25 目录 1 架构拓扑图 1 1.1 方案一 1 1.2 方案二 2 ...
- MySQL高可用集群方案
一.Mysql高可用解决方案 方案一:共享存储 一般共享存储采用比较多的是 SAN/NAS 方案. 方案二:操作系统实时数据块复制 这个方案的典型场景是 DRBD,DRBD架构(MySQL+DRBD+ ...
- Mysql数据库搭建集群---实现主从复制,读写分离
参考博客:https://blog.csdn.net/xlgen157387/article/details/51331244 A. 准备:多台服务器,且都可以互相随意访问root用户,都可以随意进 ...
- 京东分布式MySQL集群方案介绍
背景 数据库作为一个非常基础的系统,任何一家互联网公司都会使用,数据库产品也很多,有Oracle.SQL Server .MySQL.PostgeSQL.MariaDB等,像SQLServer/Ora ...
- 分布式MySQL集群方案的探索与思考
转载:http://www.infoq.com/cn/articles/exploration-of-distributed-mysql-cluster-scheme?utm_campaign=rig ...
- 转载自infoq:MYSQL的集群方案
分布式MySQL集群方案的探索与思考 2016-04-29 张成远 “本文整理自ArchSummit微信大讲堂张成远线上群分享内容 背景 数据库作为一个非常基础的系统,任何一家互联网公司都会 ...
- 【MySQL】MySQL-主从复制-集群方案-数据一致性问题解决方案 && MySQL备份的各种姿势
1.写性能如何保证:分库分表 2.读性能如何保证:主从结构,实时备份 3.一致性问题怎么解决: 3.1.微博案例:Redis缓存,热数据查询走Redis,主从的延迟通过Redis消除 3.2.支付宝的 ...
- 多图文,详细介绍mysql各个集群方案
目录 多图文,详细介绍mysql各个集群方案 一,mysql原厂出品 二,mysql第三方优化 三,依托硬件配合 四,其它 多图文,详细介绍mysql各个集群方案 集群的好处 高可用性:故障检测及迁移 ...
- mysql各个集群方案的优劣
集群的好处 高可用性:故障检测及迁移,多节点备份. 可伸缩性:新增数据库节点便利,方便扩容. 负载均衡:切换某服务访问某节点,分摊单个节点的数据库压力. 集群要考虑的风险 网络分裂:群集还可能由于网络 ...
- MySQL高可用集群MHA方案
MySQL高可用集群MHA方案 爱奇艺在用的数据库高可用方案 MHA 是目前比较成熟及流行的 MySQL 高可用解决方案,很多互联网公司正是直接使用或者基于 MHA 的架构进行改造实现 MySQL 的 ...
随机推荐
- must be reducible node 错误
"must be reducible node"错误通常是由于使用了无法转换为表达式树的代码或表达式. 场景再现:在项目中使用GroupBy的时候,对字段进行了类型转换,接下来正常 ...
- sql求每家店铺销量前三的sku, 附python解法
背景 有一张表: date store_id sku sales 2023-01-01 CK005 03045 50 date 代表交易日期,store_id代表门店编号,sku代表商品,sales代 ...
- Arrays.asList() 示例
1 package Test.others; 2 3 import java.util.Arrays; 4 import java.util.Collections; 5 import java.ut ...
- Linux tinyhttpd编译总结
编译环境:ubuntu16.04 x64 直接make编译tinyhttpd弹出如下错误和打印信息 其中报出两个错误信息,一个是cannot find -lsocket,另外一个就是pthread_ ...
- Windows防病毒Defender 排除病毒误报
开发的软件安装后,windows上提示病毒,默默被系统删除了. 一开始以为是自己软件的签名问题,后面发现,将被隔离的文件还原,文件的签名是存在的. 这是微软denfender的误报,为啥会报病毒呢? ...
- Python OOP之继承封装多态
面向对象的三大特征 继承 封装 多态 继承 子类可以使用父类定义的内容或者行为 继承的实现 父类,基类,超类,被继承的类,Base Class,Super Class 子类:有继承行为的类 所有类都必 ...
- SSM整合之基础xml文件以及基础理解
文章目录 前言 什么是SSM框架 实例 pom依赖 Spring 文件配置 最后 展示代码 总结 前言 最近在学习SSM框架,就去找了一些视频来看,写一篇整合的文章,文章包括一些整合的依赖,以及创建的 ...
- Linux期末佛脚指南
Linux的期末佛脚复习 常用文件操作命令 touch (创建文件) cat (查看文件内容) head (查看文件开头) tail (查看文件结尾) cp (复制文件) mv (移动文件) ls ( ...
- 【CSS】使元素在父元素中居中显示的几种方法
在页面元素布局时经常会有把元素居中的需求,大多都是用弹性盒或者定位,下面来说一下使用方法 一.使用边距进行固定位置 这种方法需要把父元素和子元素的宽度固定,然后利用二者宽高之差添加边距移动元素的位置 ...
- 分布式搜索引擎Elasticsearch基础入门学习
一.Elasticsearch介绍 Elasticsearch介绍 Elasticsearh 是 elastic.co 公司开发的分布式搜索引擎. Elasticsearch(简称ES)是一个开源的分 ...