转载自:http://blog.csdn.net/cutesource/article/details/5841783
数据库高可用架构对于我们这些应用端开发的人来说是一个比较陌生的领域,是在具体的数据库产品之上搭建的环境,需要像DBA这样对数据库产品有足够的了解才能有所涉及,虽然不能深入其中,但可以通过一些经典的高可用架构学习其中的思想。就我所了解到的有以下几种:
- MySQL Replication
- MySQL Cluster
- Oracle RAC
- IBM HACMP
- Oracle ASM
MySQL Replication
MySQL Replication就是通过异步复制多个copy以达到提高可用性的目的,常规的复制架构有以下几种:
- Master-Slaves
- Master-Master
- Master-Master-Salves
1)Master-Slaves
Master-Slaves是最常用的提高可用的方法,特别是在互联网应用中,读远远大于写,因此提高读的可用性是首当其中的,Master-Slaves就是让写的操作集中在一台数据库Master上,然后这个Master会把更新的操作复制到其他数据库Slaves上,读的操作都发生在Slaves上,架构图如下所示:
如上图在SlaveC不可用时,读和写都不会中断,等SlaveC恢复后会自动同步丢失的数据,又能重新投入运转,可维护性非常好。但如果Master有问题就麻烦了,因此它只解决了读的高可用性,但不保证写的高可用性。关于Master-Slaves的实战可参考以前的一篇博文构建高性能web之路------mysql读写分离实战
2)Master-Master
为解决上面谈的写的高可用性,MySQL提供了Master-Master的复制架构,如下所示:
一般说来都向MasterA写,MasterA同步数据到MasterB,当MasterA有问题时,会自动切换到MasterB,等MasterA恢复时,MasterB同步数据到MasterA
3)Master-Master-Salves
Master-Master-Salves是结合上面两种方案,是一种同时提供读和写高可用的复制架构,如下图所示:
MySQL Cluster
MySQL Cluster主要由三个部分组成:
- SQL服务器节点
- NDB数据存储节点
- 监控和管理节点
三个部门的组成结构如下图所示:
这样的分层也是由MySQL本身把SQL处理和存储分开的架构相关系的,关于MySQL的架构可见以前的博文设计与开发应用服务器(一)------常见模式
这样一来MySQL Cluster就可以分别在SQL处理和存储两个层次上做高可用的复制策略。在SQL处理层次上,比较容易做集群,因为这些SQL处理是无状态性的,完全可以通过增加机器的方式增强可用性。在存储层次上,通过对每个节点进行备份的形式增加存储的可用性,这类似与MySQL Replication,结构图如下所示:
Oracle RAC
Oracle RAC和MySQL Cluster有些相似,但主要集中在SQL处理层的高可用性,而在存储上体现不多,结构图如下所示:
它的主要优点就是对应用透明,并且通过Heartbeat检测可用性非常高,主要缺点就是存储是共享的,存储上可扩展能力不足。
IBM HACMP
IBM HACMP与Oracle RAC也是类似,主要用于双机互备,运行流程如下所示:
1)作为双机系统的两台服务器(主机A和B)同时运行在Hacmp环境中;
2)服务器除正常运行自机的应用外,同时又作为对方的备份主机;
3)两台主机系统(A和B)在整个运行过程中,通过 “心跳线”相互监测对方的运行情况(包括系统的软硬件运行、网络通讯和应用运行情况等);
4)一旦发现对方主机的运行不正常(出故障)时,故障机上的应用就会立即停止运行,本机(故障机的备份机)就会立即在自己的机器上启动故障机上的应用,把故障机的应用及其资源(包括用到的IP地址和磁盘空间等)接管过来,使故障机上的应用在本机继续运行;
5)应用和资源的接管过程由Ha软件自动完成,无需人工干预;
6)当两台主机正常工作时,也可以根据需要将其中一台机上的应用人为切换到另一台机(备份机)上运行。
Oracle ASM
Oracle ASM主要提供存储的可扩展性,通过自动化的存储管理加上后端可扩展性的存储阵列达到高可用性,结构图如下所示:
因此,可以尝试把Oracle RAC和ASM组合起来使用,同时提供SQL处理和存储的高可用性,这也是MySQL Cluster想达到的效果
分享到:
相关推荐
陈吉平:高可用分布式数据库系统架构实践。陈吉平:高可用分布式数据库系统架构实践。
#资源达人分享计划#
2009 系统架构师大会——陈吉平:高可用分布式数据库系统架构实践ppt讲稿
03 徐海峰-阅文集团-分布式数据库的基石-id中的学问 04-官华-唯品会-实施企业架构转型重构的若干治理问题洞察 05 周航-1号店-1号店搜索架构演化实践 06 何锐邦 腾讯-大数据机器学习应用架构实战 07 王津银-优维科技-...
2009系统架构师大会ppt 开放数据库架构设计专场——陈吉平:高可用分布式数据库系统架构实践 (若要下载大会其他部分,点击 标签“2009系统架构师大会”,即可看到)
《分布式数据库架构及企业实践——基于Mycat中间件》由资深 Mycat 专家及一线架构师、DBA 编写而成。全书总计 8 章,首先简单介绍了分布式系统和分布式数据库的需求,然后讲解了分布式数据库的实现原理,并对市场上...
本文的主要目的是探讨如何使用分布式架构来实现一个高可用性、高性能的网上商城。在这项工作中,我们首先介绍了分布式架构的概念和原理,然后详细讨论了网上商城的设计和实现过程。我们还探讨了一些重要的问题,例如...
在数据库选择上我们使用了网易私有云中的分布式数据库服务(云DDB)其架构图如下云DDB主要包括以下几个组件1.NLB2.SQLProxy3.DBN4.Master5.SYSDBNLB是负载均衡服务,基于LVS打造,负责将应用请求转发到后端SQLProxy,...
#资源达人分享计划#
论分布式数据库的设计与实现 摘要:本文讨论某高校管理信息系统中分布式数据库的设计与实现。该系统架构设计 采用c/s与b/s混合的架构方式。在全局数据与各院系的数据关系中,采用水平分片的方 式;在全局数据与各...
OceanBase 是一款高可用、高性能、水平扩展、兼容 SQL 标准的企业分布式关系型数据库。OceanBase 基于 Paxos 协议以及分布式架构,实现了高可用和线性扩展。OceanBase 数据库运行在常见的服务器集群上,不依赖特殊的...
本人十余年JAVA从业经验,精通JAVA高可用、分布式、高并发系统架构设计。有志于做JAVA职业规划、技术提升的可与我联系,交个朋友~ 本人十余年JAVA从业经验,精通JAVA高可用、分布式、高并发系统架构设计。有志于做...
PhxSQL是由微信后台团队自主研发的一款服务高可用、数据强一致的分布式数据库服务。该服务基于Percona5.6搭建,目标在于解决MySQL在容灾和数据一致性方面的不足,并大幅简化了MySQL容灾切换的运维操作。
该文档为博客我的架构之路附带内容: 讲述了联网架构的前生今世系统架构设计核心之缓存 系统架构设计核心之消息队列 系统架构设计核心之分布式数据库 ...如何设计高可用系统架构 系统设计中的安全 系统设计之案例
#资源达人分享计划#
cloudlite在线TDSQL认证考试考题及答案-70分版(xpanx.com)分布式数据库(Tencent Distributed SQL,TDSQL)是腾讯打造的一款分布式数据库产品,具备强一致高可用、全球部署架构、分布式水平扩展、高性能、企业级安全...
本人十余年JAVA从业经验,精通JAVA高可用、分布式、高并发系统架构设计。有志于做JAVA职业规划、技术提升的可与我联系,交个朋友~ 本人十余年JAVA从业经验,精通JAVA高可用、分布式、高并发系统架构设计。有志于做...
01-mysql-mmm高可用架构-王雄.rar 02-mysql半主从同步-技术分享--余宏刚.rar 03-xtrabackup安装及操作文档-技术分享--王玉晓.rar 04-mysql主从通过mysql-proxy程序实现读写分离.doc 老男孩linux测试读写分离...
大型数据库系统应用设计方法,可扩展性、高可用性及负载均衡,常见问题及其解决方案; 分布式,集群,主从常用常见场景实施方案。