守护你的数据库:数据库容灾方案介绍(上)——阿里云 MVP张新铭

【MVP时间】线上峰会,一键收藏

《数据库容灾方案介绍》精彩直播

以下是精彩视频内容整理,分享内容分为以下四个方面:
1.数据库容灾的基本原理和方法;
2.主流数据库容灾技术;
3.数据库容灾体系中的陷阱;
4.数据库容灾体系建设。

一、数据库容灾的基本原理和方法

二月底互联网界发生了一次比较严重的删库事件(微盟删库事件),使得300万注册用户、7万付费用户受到影响,市场损失达到了15个亿,涉及到了几百T的数据,由于数据被破坏掉,无法进行常规恢复,数据的恢复周期长达7天,对涉事公司的影响非常大。那么,我们怎么去做好防范工作,避免类似的事情发生或者及时做出应对,使得损失最小化呢?

在做出应对之前,我们要了解数据安全风险都有哪些类型。常见的数据安全风险主要包括硬件故障、软件缺陷、人为问题和环境问题。

  • 硬件故障:硬盘损坏、电脑硬件损坏、交换机故障等;
  • 软件故障:软件Bug、数据库Bug、业务层代码Bug、黑客攻击等;
  • 人为问题:运维或研发等人员误操作,或者恶意破坏;
  • 环境问题:自然灾害、人祸等;

面对这么多潜在的数据安全风险之后,我们怎么去防范呢?常用的措施主要包括以下。

(1)数据库备份

数据库备份是最常用的数据库容灾方法。在备份之前,我们一般会对数据做一些冗余。

数据库有一个很明显的特点就是时时刻刻都有数据在写入,因此在备份数据库的过程中也会有数据写入,造成一些数据不会被备份,就是说我们只是备份了某一个时刻的数据库状态,好像给数据库拍了一个照片,这就是快照备份;因为数据库在变化的时候会不断地产生日志,如果我们对所有的日志进行备份,就可以把数据库的每一次变化都备份下来,不会有数据遗漏,好像给数据库拍了一个视频,在需要的时候我们可以将恢复到任意一个时刻,这种备份方法是日志备份。基于快照备份和日志备份,我们就可以做到任一时间点的数据恢复。

(2)数据库复制

备份就相当于一个静态文件,如果数据库出现故障我们要进行数据的恢复,一般这个时间会比较长,可能是几小时甚至几天的时间才能完成这个工作,而业务系统一般难以承受如此长的故障时间,因此我们可以采用数据库复制的方法。数据库的复制就是我们在数据库建设的时候多个实例,任何操作都会在主实例和备实例上同时进行,这样同一份数据就有两份甚至多份同时存在,那么在主实例出现某些问题,比如宕机、OS重启等,我们可以快速的切换到备实例上,就不会对业务造成影响,达到数据库快速恢复的效果。

(3)计算资源和存储资源容灾

在做系统架构的时候我们还会用到集群的方式,在这种方式中我们的计算资源和存储资源是分离的,那么我们可以在计算资源层面和存储层面分别做相应的容灾技术。比如在存储层面在多份存储、做存储的镜像等;计算层面可以单独做成一个集群,当其中一台服务器出现故障的时候,任何其他一台服务器都可以进行业务接管,来保障业务系统的高可用。

上面介绍的三种方案其实主要是备份和备库,这里我们需要注意的是两者之间是有区别的,并不是做了其中之一就行了,两者在功能上还是有些差异的。备库就好像一个替身,在主库出现问题的时候可以快速切换,但有的问题并不能通过备库来解决,比如主库上发生了误操作把数据删除了,这个操作会同步到和备库,导致备库的数据也被删除;备份是就是对同一数据库数据的多次备份,在出现问题的时候可以用来恢复数据,就好像时间旅行,可以回到过去,取回历史上存在的数据。但是数据恢复的周期可能会比较长。备份和备库两者互相补充,是数据库容灾最基本的两种手段。这里面有如下几个概念在设置容灾方案的时候需要注意:

  • RPO:Recovery Point Object,指的是当数据库在某一个时间点发生故障以后所能恢复的数据与故障点之间的数据差异,用来衡量数据的丢失程度。
  • RTO:Recovery Time Object,指的是数据库出现故障之后恢复所需要的时间,用来衡量业务恢复时间。
  • 业务可用性:指的是一年中业务的持续时间比例,一般用几个9来衡量,比如业务可用性达到4个9,就是可用率99.99%,那么一年中业务的停机时间就是52分钟左右。
  • 数据可用性:指的是数据库中数据的可用比例,一般是要求100%的可用性,因为部分数据的不可用可能对业务造成严重的后果。

二、主流数据库容灾技术

(一)Oracle高可用方案(RAC,DataGuard)

Oracle是一个使用非常广泛的商业数据库,它的高可用方案如下图所示,主要是通过集群加上备库的方式,同时还要有相应的存储资源的备份。需要注意的是在其方案中备库与主库一般是异地存储的,这样子在出现数据库安全风险的时候能将损失降低到最小。

守护你的数据库:数据库容灾方案介绍(上)——阿里云 MVP张新铭

(二)MySQL高可用方案(Replication,Cluster)

守护你的数据库:数据库容灾方案介绍(上)——阿里云 MVP张新铭
MySQL也是一种使用非常广泛的数据库,其容灾技术的高可用方案一般通过复制和集群两种方式,如上图所示。其中MYSQL的复制指的是传统的复制,包括异步复制和半同步复制两种,就是相同的操作会在主库和备库上都进行,当主库主线问题的时候可以切换到备库上,但是在异步复制的情况下数据可能会存在延迟。5.7版本之后,我们可以采用集群方式(InnoDB Cluster),其底层是组复制的形式,其数据复制了多份实例。

(三)SQL Server高可用方案(Mirror,Cluster)

SQL Server是windows下面经常用到的一种数据库,其容灾技术的高可用方案主要有镜像(Mirror)和集群(WSFC)两种方式。镜像的模式与备库方式类似,就是数据存储两份,主库上面的数据会同时传输到镜像实例上。主实例发生异常时,可以启用镜像。SQL Server的集群方式指的是WSFC方式,是windows下的一种集群,在这种模式下它的数据只有一份,存储在共享存储上面,但是服务器是主、备模式的集群,主服务器出现故障的时候可以切换到备份服务器上,不会影响业务的运行,如下图所示。

守护你的数据库:数据库容灾方案介绍(上)——阿里云 MVP张新铭

在SQL Server 2012之后有了一种更加先进的集群方式——AlwaysOn。AlwaysOn实际上是镜像加上集群两种方式集合起来的一种数据库容灾技术,首先它的数据会存储多份,主库的数据会通过日志传输到多个备库上,多个数据库组成一个可用性组;其次,多个数据库会承担不同的角色,比如主数据库承担读写的角色,备库在出现问题的时候再进行切换,某些备库还可以设置只读属性,来承担业务扩展的角色;在服务器层面,其多个节点组成一个windows集群,多节点之间可以进行容灾的切换,如下图所示。

守护你的数据库:数据库容灾方案介绍(上)——阿里云 MVP张新铭

查看《数据库容灾方案介绍(下)》

上一篇:窗口切换(加显示等待)


下一篇:笑联 x mPaaS | 12 个模块,全面小程序化,如何打造真正的一次开发复用多端?