MySQL 高可用架构在业务层面细化分析研究
转载:http://blog.csdn.net/leyangjun/article/details/50723019
相对于传统行业的相对服务时间9x9x6或者9x12x5,因为互联网电子商务以及互联网游戏的实时性,所以服务要求7*24小时,业务架构不管是应用还是数据库,都需要容灾互备,在mysql的体系中,最好通过在最开始阶段的数据库架构阶段来实现容灾系统。所以这里从业务宏观角度阐述下mysql架构的方方面面。
一,MySQL架构设计—业务分析
(1)读多写少
虚线表示跨机房部署,比如电子商务系统,一个Master既有读也有些写,对读数据一致性需要比较重要的,读要放在Master上面。
M(R)仅仅是一个备库,只有M(WR)挂了之后,才会切换到M(R)上,这个时候M(R)就变成了读写库。比如游戏系统,有很多Salve会挂载后面一个M(R)上面。
(2)读多写少MMS-电商
如果是电子商务类型的,这种读多写少的,一般是1个master拖上4到6个slave,所有slave挂载在一个master也足够了。
切换的时候,把M1的读写业务切换到M2上面,然后把所有M1上的slave挂到M2上面去,如下所示:
(3)读多写少MMSS-游戏
(4)读少写多
意味着读并不会影响写的效率,所以读写都可以放在一个M1(WR),而另外一个不提供读也不提供写,只提供standby冗余异地容灾。
(5)读写平分秋色
读和写差不多,但是读不能影响写的能力,把读写放在M1(WR)上,然后把一部分读也放在M2(R)上面,当然M1和M2也是跨机房部署的。
二:MySQL架构设计—常见架构
(1)强一致性
对读一致性的权衡,如果是对读写实时性要求非常高的话,就将读写都放在M1上面,M2只是作为standby,就是采取和上面的一(4)的读少写多的一样的架构模式。
比如,订单处理流程,那么对读需要强一致性,实时写实时读,类似这种涉及交易的或者动态实时报表统计的都要采用这种架构模式
(2)弱一致性
(3)中间一致性
当然这里会用到3台数据库服务器,也许会增加采购压力,但是我们可以提供更好的对外数据服务的能力和途径,实际中尽可能两者兼顾。
(4)统计业务
比如PV、UV操作、页数的统计、流量的统计、数据的汇总等等,都可以划归为统计类型的业务。
B,还有一种offline统计业务,比如月份报表年报表统计等,这种完全可以把数据放到数据仓库里面或者第三方Nosql里面进行统计。
(5)历史数据迁移
(6)MySQL Sharding
目前这种share disk的方式,除了oracle的业务逻辑层做的非常完善之外其他的解决方案都还不是很完美。
(6.1)垂直拆分
可以横向拆分,可以纵向拆分,可以横向纵向拆分,还可以按照业务拆分。
PS:这种拆分主要针对于不同的业务对表的影响不大,表之间的业务关联很弱或者基本上没有业务关联。拆分的好处是不相关的数据表拆分到不同的实例里面,对数据库的容量扩展和性能提高的均衡来说,都是蛮有好处的。
这种库纵向拆分里面,单独的库db1,表A和表B是强关联的。如下图所示:
有些刚起步的,开始为了快速出产品,就把所以的库所有的表都放在一个实例上,等业务发展后,就面临着数据拆分,这里就会把横向纵向拆分结合起来,一起实现,如下图所示:
比如usern库中,a、b、c表都是强关联的,都有完整的业务逻辑存在,这里只有用户(供应商)纬度是没有关联的,那这个时候就可以把数据以用户的纬度来进行拆分。
(6.2) 水平拆分
水平拆分相对要简单一些,但是难度偏大,会导致分布式的情况、跨数据的情况、跨事务的情况可以分为大概三类,1是历史数据和实时数据拆分,2是单库多表拆分,3是多库多表拆分。
–a根据拆分维度,做mod进行数据表拆分,大部分都是取模的拆分机制,比如hash的16模原则等。
–a跨事务操作:分布式事务,通过预写日志的方式来间接地实现。
? 取模的时候,可以用id的最后4位数据或者3位数字来取模就可以了。
– 优势是Proxy和db实例是在一个网段,这样Proxy与db实例的操作的时间是非常短的。
纵向扩容:一个实例拆分成多个实例,纵向拆分比较简单,修改的东西比较少,拆分的时候要通知到Configure DB或者DES,以免拆分之后查询不到数据或者数据录入不到新的db上面,如下图所示:
横向扩容:比较复杂,在纵向扩容成2个库的基础之上,再一次对库的表进行扩容,所以需要及时通知Configure DB和DES更细库和表的路由连接信息。
转载于:https://blog.51cto.com/mengphilip/1745508
MySQL 高可用架构在业务层面细化分析研究相关推荐
- MySQL 高可用架构在业务层面的应用分析
MySQL 高可用架构在业务层面的应用分析 http://mp.weixin.qq.com/s?__biz=MzAxNjAzMTQyMA==&mid=208312443&idx=1&a ...
- 探索MySQL高可用架构之MHA(6)
探索MySQL高可用架构之MHA(6) -----构建mysql高可用系列(共9篇) 上一篇文章介绍了本次架构的Atlas读写分离! 本篇文章主要介绍本次架构中的keepalive部分! 什么是Kee ...
- 第5章 MySQL高可用架构设计
第5章 MySQL高可用架构设计 数据库复制 复制解决了什么问题????? 非共享架构 二进制日志 binlog工具 查看日志格式 show variables like "binlog_f ...
- Heartbeat+DRBD+MySQL高可用架构方案与实施过程细节 【转】
文章出处:Heartbeat+DRBD+MySQL高可用架构方案与实施过程细节 [转] mysql数据库高可用高扩展性架构方案实施[原] Heartbeat+DRBD+MySQ ...
- 从mysql高可用架构看高可用架构设计
高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间. 假设系统一直能够提供服务,我们说系统的可用性是100%.如果 ...
- 搭建MySQL高可用架构MHA
搭建MySQL高可用架构MHA v1.0 MHA简介 MHA的主要目的是自动化master故障转移和slave自动提升为master,在较短时间(一般为10-30秒)的停机时间,可以避免复制和一致性问 ...
- MySQL高可用架构对比
MMM与MHA以及MGR,高可用架构都有如下的共同点: 对主从复制集群中的Master节点进行监控 自动的对Master进行迁移,通过VIP. 重新配置集群中的其它slave对新的Master进行同步 ...
- MySQL高可用架构-MMM环境部署记录
MMM介绍 MMM(Master-Master replication manager for MySQL)是一套支持双主故障切换和双主日常管理的脚本程序.MMM使用Perl语言开发,主要用来监控和管 ...
- 【DB宝42】MySQL高可用架构MHA+ProxySQL实现读写分离和负载均衡
文章目录 一.MHA+ProxySQL架构 二.快速搭建MHA环境 2.1 下载MHA镜像 2.2 编辑yml文件,创建MHA相关容器 2.3 安装docker-compose软件(若已安装,可忽略) ...
最新文章
- 把tensor转为numpy_如何在TensorFlow中将张量转换为numpy数组?
- Java工具类DateFormatUtils详解
- BI-SqlServer
- 安卓逆向_14 --- 单机和弱联网游戏内购 突破口 和 思路
- linux 日志面试题,Linux运维 | 面试题
- 设置bootstrap modal模态框的宽度和宽度
- (转)linux自动备份oracle数据库并上传到备份服务器 脚本实现
- 蓝牙学习笔记(五)——AC692x_BLE工具make_gatt_services
- 拓端tecdat|R语言中固定与随机效应Meta分析 - 效率和置信区间覆盖
- 元气骑士最新版全武器图鉴【支持搜索】(截至2022年4.0版本)
- Geomesa-HBase索引篇——Z3索引
- 这个彩蛋表明,图灵测试评估的也许不是计算机,而是人类……
- android 仿微信账单生成器手机版式,至尊版清理大师app
- Windows留后门--教程(二)——Windows计划任务后门
- Oracle中TO_DATE用法
- 从删库到跑路or恢复,记一次MySQL数据库文件损坏恢复经历
- 西交计算机科学与技术保研率,西北高校保研率:西交、西工大、西电前三
- NSArray element failed to match the Swift Array Element type错误的解决方法
- DESeq2 install 如何安装R包 RcppArmadillo
- 基于java SDK语音识别技术概述与调研
热门文章
- python正则表达式爬虫_Python爬虫之正则表达式一些常用方法
- linux网络方面命令大全,Linux下必须知道的11个网络命令
- 2能不用cuda_农村建房的新方法,只需要一块地,2天就建好房子,不用还能搬走...
- 5g信号频率是多少赫兹_5G的网速为什么那么快?这得从一个简单的公式说起
- 一个简单示例 利用jawin完成调用window中dll的调用
- 悲情天才沃尔特·皮兹
- 安卓学习笔记42:基于HTTP网络编程
- Java讲课笔记12:static关键字
- Vue + Spring Boot 学习笔记02:引入数据库实现用户登录功能
- php秒数怎么转换为时间格式,php将秒数转换为时间(年、月、日、小时…)