详解数据库高可用架构之路

   数据库高可用架构对于我们这些应用端开发的人来说是一个比较陌生的领域,是在具体的数据库产品之上搭建的环境,需要像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有问题就麻烦了,因此它只解决了读的高可用性,但不保证写的高可用性。

  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 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想达到的效果。

时间: 2024-10-02 02:43:01

详解数据库高可用架构之路的相关文章

美团点评数据库高可用架构的演进与设想

MMM 在2015年之前,美团点评(点评侧)长期使用MMM(Master-Master replication manager for MySQL)做数据库高可用,积累了比较多的经验,也踩了不少坑,可以说MMM在公司数据库高速发展过程中起到了很大的作用. MMM的架构如下: 如上所示,整个MySQL集群提供1个写VIP    (Virtual IP)和N(N>=1)个读VIP提供对外服务.每个MySQL节点均部署有一个Agent(mmm-agent),mmm-agent和mmm-manager保

详解MySQL高可用MMM搭建方案及架构原理_Mysql

先来看看架构,如下图: 部署 1.修改hosts 在所有的服务器中执行相同的操作. vim /etc/hosts 192.168.137.10 master 192.168.137.20 backup 192.168.137.30 slave 192.168.137.40 monitor 2.添加mysql用户 只需要在所有的数据库端执行即可,监控端不需要. GRANT REPLICATION CLIENT ON *.* TO 'mmm_monitor'@'192.168.137.%' IDEN

【干货】阿里资深技术专家丁宇谈双11高可用架构演进之路

近日Velocity China 2016在京举行,会上阿里中间件技术部资深技术专家丁宇(花名叔同)发表了题为<零点之战–阿里双11高可用架构演进之路>的演讲.丁宇从2009年开始,参加了每年的阿里双11技术保障工作, 最近两年他分别以共享平台事业部双11项目负责人,和集团双11项目稳定性总负责人的身份参与其中. 阿里巴巴平台的业务规模在过去的8年呈指数级增长,给双11所带来的技术挑战是世界性的,特别是如何在零点峰值到来时确保系统的稳定性.零点技术挑战的本质是用有限的成本去实现最大化的集群整体

数据库高可用实战:化繁为简搭建一套轻量级架构

作者介绍 吴虞,SQL专家云团队成员,擅长解决SQL SERVER数据库性能.高可用.负载均衡等问题.   说到高可用,看官们会想到很多方案,也许是自亲身经历过系统从单机变成高可用的痛苦过程,也许有的看官只是在自己的虚机上搭建过测试的玩具.本文以我自己的真实经历给大家讲述,不管怎样,实战和测试玩耍还是很大区别的,可能你觉得搭建一套高可用方案很简单,配置下就OK了,但在真正的复杂系统中一切就没那么轻松了!    本文主要讲述升级并搭建AlwaysOn高可用的过程,以实施的思路为主.文中并没有搭建集

八年来我们到底经历了什么?——中间件专家带你“重走”双11高可用架构演进之路

双11的技术挑战 双11技术挑战的本质使用用有限的成本去是实现最大化的用户体验和集群整体吞吐能力,用最合理的代价解决零点峰值,支撑好业务的狂欢.阿里做双11已经有八年之久了,八年来双11的交易额增长200倍,交易峰值增长400多倍,系统复杂度和大促支撑难度以指数级攀升:并且经过多年的发展,双11技术实现链条中的变量不断增加,如峰值的增量和系统架构的变化.交易峰值的组成.拆单比.每个业务入口的访问量等,这些变量也给系统带来了不确定性.回顾这八年的双11零点之战,它推动了阿里的技术进步.推动了架构优

【Redis】Sentinel 高可用架构

一 前言    Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案,当用Redis做Master-slave的高可用方案时,假如master宕机了,Redis本身(包括它的很多客户端)都没有实现自动进行主备切换,而Redis-sentinel本身也是一个独立运行的进程,它能监控多个master-slave集群,发现master宕机后能进行自懂切换.它的主要功能有: 1 不时地监控redis是否按照预期良好地运行; 2 如果发现某个redis节点运行出现状况,能够通知另外一

高可用架构-- MySQL主从复制的配置

环境 操作系统:CentOS-6.6-x86_64-bin-DVD1.iso MySQL版本:mysql-5.6.26.tar.gz 主节点IP:192.168.1.205     主机名:edu-mysql-01 从节点IP:192.168.1.206     主机名:edu-mysql-02 主机配置:4核CPU.4G内存   依赖课程 <高可用架构篇--第13节--MySQL源码编译安装(CentOS-6.6+MySQL-5.6)>   MySQL主从复制官方文档 http://dev.

公开课发布《MySQL体系结构及常见高可用架构》

0.导读 某电信运营商数据库高级主管杭星老师分享<MySQL体系结构及常见高可用架构>. 1.活动总结 上周四晚上,知数堂培训邀请到某南方电信运营商数据库高级主管杭星老师分享<MySQL体系结构及常见高可用架构>主题.让我们对MySQL的基础体系架构以及常见MySQL高可用.MySQL自动化运维有了更进一步认识. 本次分享的音视频.PPT相关资料已经上传到百度云盘,链接: https://pan.baidu.com/s/1pL53JMr ,欢迎转存及转发(扫描下方二维码识别) 知数

利用Docker轻松实现云原生应用 - 高可用架构设计

本文为利用Docker和容器服务轻松实现云原生应用系列的第一篇 高可用架构设计(本文) Spring Boot + Redis分布式会话 最近对应用迁云的讨论很多,很多用户对云环境中的应用架构和运维方式还不了解.直接利用云服务器替换自有物理机并不是使用云的正确姿势. Cloud Native Application(云原生应用)是当下一个热门名词,简单而言就是针对云计算的特性,来设计应用架构,并优化应用的交付.运维流程.Linux基金会旗下的云原生计算基金会 CNCF(Cloud Native