加入收藏 | 设为首页 | 会员中心 | 我要投稿 江门站长网 (https://www.0750zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 安全 > 正文

云数据库高可用解决方案技术解析

发布时间:2021-01-13 07:06:56 所属栏目:安全 来源:网络整理
导读:副标题#e# 《云数据库高可用解决方案技术解析》要点: 本文介绍了云数据库高可用解决方案技术解析,希望对您有用。如果有疑问,可以联系我们。 高可用英文翻译为”High Availability”,从字面上理解就是要做到服务的full-time的持续可用,但老实说,要做到ful
副标题[/!--empirenews.page--]

《云数据库高可用解决方案技术解析》要点:
本文介绍了云数据库高可用解决方案技术解析,希望对您有用。如果有疑问,可以联系我们。

高可用英文翻译为”High Availability”,从字面上理解就是要做到服务的full-time的持续可用,但老实说,要做到full-time是不现实的,因为能够影响系统服务可用性的因素实在是太多了,除了软件BUG、硬件故障外还包括系统所依赖的一些第三方服务(如运营商提供的带宽),甚至还包括天灾人祸等;因此我理解所谓的高可用意味着”更少的停服时间”,而工业界也有一套测量系统可用性的标准,即大家所熟知的SLA(Service Level Agrement),也就是几个9的可用性(如下表):

在工业应用场景中,如当下做在线服务的各大互联网公司,号称7*24小时的不间断服务,想想如果只是达到一个9的可用性将会是一种什么样的灾难;而要做到5个9的可用性就意味着全年只有一次服务宕机,而且得在5分钟左右就恢复,其中的难度也是不言而喻的,我想只是采用技术手段不足以做到,还需要通过一整套完备严谨的工程管理防范及配套工具、优秀工程运维人员等.

云计算号称互联网公司的水和电,高可用犹如云服务商的生命线,而云数据库作为该领域的一项重要服务更是接受着不同维度的考验,因为云端成千上万个用户数据库实例所面临的问题会更加五花八门;下面将先介绍Mysql领域几个典型的高可用解决方案,分析其中的关键技术及适用场景,并在此基础上介绍和分享UDB的高可用方案.

1.高可用数据库关键技术点

数据库服务和很多工业服务在高可用技术方案是相通的,为了实现高可用首先实现服务的”冗余”,即服务的集群化,如果服务有冗余备份,宕机后还有其它备份服务(热备和冷备)可以顶上,所以实现数据库服务的”冗余”也是高可用数据库的核心准则;而有了”冗余”备份后还不够,如果每次宕机都需要人工恢复切换至备份服务,恢复时间得不到保证,同时人为的故障恢复过程中可能会引入新的风险(人为事故),从而降低了服务的可用性,因此必须还具备”自动故障转移”功能.而数据库服务相比于其它系统的高可用,在以上两个关键技术点的实现上会更加的困难,因为传统RDMS对数据和事务的持久性和稳定性是要求非高的,从也提高了对冗余数据的一致性的要求和实现难度.

2.高可用Mysql典型解决方案

下图是Oracle官方对Mysql几种典型高可用方案及可用性的总结,由于时间相对较早并且随着近几年分布式一致性协议在工业界的实践和发展,Mysql高可用方案又有了全新的发展方向以及相对成熟的方案,下面将一并罗列和解析.

(1)Mysql Replication 就是通过Mysql原生的复制技术来实现数据的冗余,该方案也是最易实现和通用的方案,相关的原理介绍网上介绍很多,这里不再详细赘述,实现原理主要是通过2PC来实现本地BINLOG和本地数据的一致性,并再此基础上通过两个线程(IO线程和SQL线程)来实现远端数据和本地数据的同步,根据数据一致性程度不同复制技术又可以分为异步复制、半同步复制以及同步复制,另外在此冗余技术之上,一般会搭配使用MysqlProxy、keepalived、MHA等第三方软件来实现自动容灾,此技术方案如果不做一定优化,可用性一般不到2个9.

(2)Mysql Fabric 是Oracle官方提供的一种Mysql高可用方案,通过数据分片下的读写分离模式,该方案的可用性达到2个9.

(3)DRBD磁盘复制,分布式块设备复制(Distributed Relicated Block Deivce,DRBD),是一种基于软件、基于网络的块复制存储解决方案,主要用于对服务器之间的磁盘、分区、逻辑卷等进行数据镜像,当用户将数据写入本地磁盘时,还会将数据发送到网络中另一台主机的磁盘上,这样的本地主机(主节点)与远程主机(备节点)的数据就可以保证实时同步,当本地主机出现问题,远程主机上还保留着一份相同的数据,可以继续使用,保证了数据的安全,该方案缺点是IO性能影响严重,可用性不到3个9.

(4)Solaris Clustering,该方案代表这另一种技术方向,即以共享存储为基础,实现数据库服务器和存储设备的解耦,这样数据库服务器之间的冗余与数据无关,而数据的冗余则通过SAN共享储存或者分布式存储系统来实现,当然Solaris Clustering除此之外还提供了操作系统、硬件等各个层面的监控机制,该方案的可用性达到接近4个9,但是实现代价大,价格昂贵.

(5)Mysql Cluster是官方提供的一个开源方案,其将Mysql的集群分为SQL节点和数据节点,数据节点通过一种内存中的存储引擎来实现自动sharding和复制,虽然该方案号称接近5个9的可用性,但是缺点也是很多,如对内存消耗大,使用成本高,牺牲了过多的SQL语言特性,配置复杂等.

(6)基于PAXOS分布式一致性协议的方案,Paxos 协议主要多数派投票的方式,来就分布式系统中某个值达成一致,该算法被业界认为唯一的分布式一致性算法,包括其在内衍生出来的分布式一致性算法(如Raft等)也在很多肯多开源分布式系统得到应用.Paxos与MySQL相结合可以实现在分布式的MySQL数据库最终一致性从而保证高可用,而使用分布式算法用来解决MySQL数据库数据一致性的问题的方法,也越来越被人们所接受,一系列产品如PhxSQL、MariaDB Galera Cluster、Percona XtraDB Cluster等越来越多的被应用到生产环境,而最近Oracle官方所推出的MySQL Group Replication的GA,更使其在Mysql高可用领域成为了一种民用技术;因此使用分布式协议和多副本来解决数据库一致性问题已经成为了主流的方向.但是此类方案还出于初级阶段,不够成熟,同时分布式一致性协议由于网络开销的原因在性能上还有待提高和优化.

3.高可用数据库案例分享–UDB

为了实现云数据库服务的高可用,UDB基于半同步复制技术采用双主的热备架构,为了实现故障自动转移,并在此基础上实现了Proxy模块,该模块不仅负责数据业务的转发,同时还监控后端DB的健康状况,双主数据一致性检测,并在后端DB宕机情况下,在不影响数据一致性的情况下,完成数据业务切换,整个架构及容灾过程如下图:

云数据库

UDB宕机容灾

也许从架构上看很简单,一主一备的架构没有什么新意,但是深入到细节中会发现有很多问题和难点,或者说这些问题都围绕这一个目标,如何保证数据一致性.

(编辑:江门站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!