了解更多Greenplum相关内容,欢迎访问Greenplum中文社区网站
《深入浅出Greenplum内核》系列直播已经进行到第九场,还有一场就要结束啦!前九场的视频内容可以前往Greenplum中文社区B站频道观看相关视频,相关PPT均已上传Greenplum中文社区网站(cn.greenplum.org)的下载页面,欢迎获取!现在让我们来回顾一下第九场活动《Greenplum高可用理论与实践》的精华内容。
演讲视频:
Greenplum高可用理论与实践
数据库是现代很多与数据相关的程序正常运行的必要组件,数据库的正常运行会直接或间接地影响到程序的可用性,高可用是分布式系统架构设计中必须考虑的因素之一,它通常指,通过设计减少系统不能提供服务的时间。本文将深入了解数据库系统的高可用,并窥探Greenplum是怎样实现高可用的,如何为企业的数据保驾护航。
一、高可用简介
首先我们介绍一下高可用的环境,下图是一个简单的网络应用结构。用户通过互联网访问网络服务器,网络服务器访问的数据库里包含了各种各样的数据。当数据库不可用时,服务器也得不到其需要的数据,则整个服务都会被中断停止。
那么如何避免此类问题呢?如何做到即便数据库出现故障,也依旧能够访问数据库的服务呢?这就是我们今天要讨论的问题。
针对这种问题,一般会有两种方式。
1. 单机做到无故障
即不管发生任何问题,单机都能够正常的工作,或是有极小的概率会发生崩溃。但单机做到无故障,本身会有很大的局限性。
-
缺陷故障的避免非常困难。做到无故障,不但需要避免硬件故障,还需要避免系统软件的缺陷和数据库软件本身的bug。避免所有的这些缺陷故障本身就是一件非常难做到的事情。
-
可用性的极限。随着软件的bug的减少,成本也会随着可用性增加成倍的增加,很有可能会高到难以接受的程度。
-
地理因素。单机只可能部署到同一个机房里,如果发生一些无法避免的天灾人祸,就更不可能做到单机的无故障。
2. 假定单机会出现软硬件故障
面对单机无故障的缺陷,我们往往会希望用多台机器来提供服务,即假设单机出现故障,并且这种错误可以被接受时,用多机去提供数据库服务。此时,只要有一台机器可以工作,整个数据库的服务就不会被中断,可靠性也会大幅提高 。
下面是关于多机提供数据库服务可靠性的一个公式。我们可以看到单机的可用性越高,备用的节点数目越高,则可靠性 越高。
二、高可用的一般性原理
下图中,我们用两个节点来做数据库服务。其中,当上面一个节点发生崩溃时,服务器会访问下面的数据库,则整个网络服务都可以正常运行。
从用户角度来看,采用多机需要满足两点条件。
1. 切换时间足够小,可以接受
如果存在故障的节点,服务器需要被切换到没有故障的数据库上,切换时间需要足够小。如果说切换时间太久,数据库系统也是不可用的。