当前是信息社会,数据库的重要性不言而喻。本文从普通用户而不是厂家(不谈 RPO、RTO、MDT、MTBF、MTTR 等等专业术语)角度出发来审视和比较各种数据库容灾技术,希 望能帮助广大用户在选购方案时少被忽悠、少走弯路、避免不必要的经济损失和系统事故。


对于广大用户来说,最关心的是下列两点:

  • 是否具有两份逻辑一致的数据:如果某容灾方案具有两份‘逻辑一致’的数据,那在故障发生时,用户数据就是安全的,系统的可用性也有保障的。具有两份‘逻辑一致’的数据,这是一个合格容灾方案必须具备的。请注意,这里谈的是‘逻辑数据’,而不是‘物理数据’,究竟什么是逻辑数据,什么是物理数据,请耐心往下阅读。
  • 有没有负载均衡读写分离:负载均衡读写分离,尤其是 OLTP 和 OLAP 的分离,是业界公认的提高数据库性能的有效手段之一

当前市场上,和 ORACLE、SQLSERVER 有关的容灾技术大致有下列这些:

1. RAID I 

pg库容灾方案 数据库容灾技术_负载均衡

                                                                             图 1 RAID I 原理示意图

  1. 一个 DB 实例(图中粗红色椭圆)
  2. 一份逻辑数据(图中中等粗红色椭圆)
  3. 两份物理数据(图中细红色椭圆)
  4. 没有负载均衡读写分离

2. 双机热备

pg库容灾方案 数据库容灾技术_数据_02

                                                                        图 2  双机热备原理示意图

  1. 一个 DB 实例(图中粗红色椭圆)
  2. 一份逻辑数据(图中中等粗红色椭圆)
  3. 两份物理数据(RAID)(图中细红色椭圆)
  4. 没有负载均衡读写分离

3. 双机双柜

pg库容灾方案 数据库容灾技术_读写分离_03

                                                                                  图 3  双机双柜原理示意图

  1. 一个 DB 实例(图中粗红色椭圆)
  2. 一份逻辑数据(图中中等粗红色椭圆)
  3. 两份物理数据(图中细红色椭圆)
  4. 没有负载均衡读写分离

4. 存储双活

pg库容灾方案 数据库容灾技术_pg库容灾方案_04

                                                                              图 4  存储双活原理示意图

  1. 一个 DB 实例(图中粗红色椭圆)
  2. 一份逻辑数据(图中中等粗红色椭圆)
  3. 两份物理数据(图中细红色椭圆)
  4. 没有负载均衡读写分离

5. Oracle RAC

pg库容灾方案 数据库容灾技术_负载均衡_05

                                                                       图 5 Oracle RAC 原理示意图

  1. 两个 DB 实例(图中粗红色椭圆)
  2. 一份逻辑数据(图中中等粗红色椭圆)
  3. 两份物理数据(RAID)(图中细红色椭圆)
  4. 有负载均衡读写分

6. Oracle DG

pg库容灾方案 数据库容灾技术_pg库容灾方案_06

                                                             图 6 Oracle DG 原理示意图

  1. 两个 DB 实例(图中粗红色椭圆)
  2. 两份逻辑数据(图中中等粗红色椭圆)
  3. 两份物理数据(图中细红色椭圆)
  4. 手工负载均衡读写分离、目标端可查询

7.SQL Server 镜像

pg库容灾方案 数据库容灾技术_数据_07

                                                        图 7 SQL Server 镜像原理示意图

  1. 两个 DB 实例(图中粗红色椭圆)
  2. 两份逻辑数据(图中中等粗红色椭圆)
  3. 两份物理数据(图中细红色椭圆)
  4. 没有负载均衡读写分离、目标库不能访问

8. SQL Server AlwaysOn

pg库容灾方案 数据库容灾技术_负载均衡_08

                                               图 8 SQL Server AlwaysOn 原理示意图

  1. 两个 DB 实例(图中粗红色椭圆)
  2. 两份逻辑数据(图中中等粗红色椭圆)
  3. 两份物理数据(图中细红色椭圆)
  4. 手工负载均衡读写分离、目标端可查询

9.DBTwin 双活集群

pg库容灾方案 数据库容灾技术_数据_09

                                                              图 9 DBTwin 双活集群原理示意图

  1. 两个 DB 实例(图中粗红色椭圆)
  2. 两份逻辑数据(图中中等粗红色椭圆)
  3. 两份物理数据(图中细红色椭圆)
  4. 全自动的负载均衡读写分离

综合比较如下:

序号

容灾技术名称

DB 实例

逻辑数据集

物理数据集

负载均衡读写分离

1

RAID I

一个

一份

两份、物理一致

2

双机热备

一个

一份

两份、物理一致

3

双机双柜

一个

一份

两份、物理一致

4

存储双活

一个

一份

两份、物理一致

5

Oracle RAC

两个

一份

两份、物理一致

6

Oracle DG

两个

两份,逻辑一致

两份、物理一致

有、手工

7

SQL Server 镜像

两个

两份,逻辑一致

两份、物理一致

8

SQL Server AlwaysOn

两个

两份,逻辑一致

两份、物理一致

有、手工

9

DBTwin 双活集群

两个

两份,逻辑一致

两份、物理一致

有、自动

综上所述,当故障发生时,如果某个方案具有‘两份实时一致的逻辑数据’,则该方案无疑是最理想的;如果只有一份逻辑数据,虽然物理数据有两份,但是由于物理数据只保持了扇区或块甚至卷级别的‘物理一致’,缺乏数据库事务逻辑保护,因此最终的数据库完整性仍然是有风险的。

从用户数据安全性程度考虑,下面为从高到低的排序:

  1. 最高:两份实时一致的逻辑数据。
  2. 次高:两份逻辑数据,但是存在短时的数据延迟。
  3. 第三:一份逻辑数据,但是存在两份物理数据。
  4. 最低:一份逻辑数据,同时也只有一份物理数据。