1 前言
众所周知,作为生产系统中极为关键的核心软件,数据库产品的高可用性一直是使用者极为关注的功能点。尤其是在金融这样一个特殊的领域里,无论是从监管的要求来看,还是从业务需求本身来看,都需要提供24*7持续不间断的服务,这就对金融行业中数据库产品的高可用性提出了很高的要求,不但需要应对个别硬件故障的情况,还必须能够应对机房整体故障和城市灾难等极端情况,保证数据库在各种意外情况下都能持续提供服务,即具备机房级容灾能力和城市级容灾能力。本文的主要目的,是总结和回顾一下传统数据库产品常用的高可用及容灾方案,并向读者介绍一下以OceanBase为代表的分布式数据库常用的方案,希望能够起到抛砖引玉的作用,引发读者关于新型分布式架构下高可用及容灾方案的思考。
2 背景介绍
首先,我们回顾一下传统的关系型数据库产品(如Oracle、DB2等)常用的高可用及容灾技术。我们知道,传统数据库产品最初都是单点架构,并不具备高可用设计,更多的是基于高端硬件产品满足“硬件可靠”的假设。随着时间的推移,传统数据库产品先后推出了采用“主从复制”架构的高可用方案,比如Oracle的Data Guard技术和DB2的HADR技术,其主要思路是:在原有的单数据库节点(主节点)之外再增加一个对等的数据库节点(从节点),通过数据库层面的复制技术(通常是日志复制)将主节点产生的数据实时复制到从节点;正常情况下从节点不提供对外服务,当主节点发生故障时,在从节点上执行“切主”动作将从节点变成主节点,继续提供服务。在主从节点的部署方式上,除了本地单机房部署外,往往也支持同城灾备部署和异地灾备部署,因此也就具备了机房级容灾和城市级容灾的能力。很多新兴的数据库产品(如MySQL)也是采用“主从复制”模式来实现高可用及容灾特性。
除了数据库层面的主从复制技术之外,还有一些在底层硬件上实现的高可用方案,比如在主机层面用HACMP技术以应对主机故障,或者在存储层面采取复制技术(比如FlashCopy)来提供数据冗余等。这些技术虽然也可以用来实现高可用和容灾能力,但和应用的整合度不高,会使灾难切换方案变得很复杂,并且会有相对较长的故障恢复时间(RTO),所以通常不是数据库用户的首选。