容灾技术方案讨论
容灾技术方案讨论
目 前 , Cluster ( HA ) 的 技 术 越 来 越 成 熟 ,Cluster 的 部 署 越 来 越
普及 ,Cluster 技术 确实解 决了用 户系统 的高 可用性 问题, 为业务 的
良 性 发 展 提 供 了 稳 定 的 基 石 。 随 着 业 务 的 发 展 , 商 业 环 境 对 服 务 供
应 商 提 出 的 要 求 也 越 来 越 苛 刻 , 这 必 将 使 应 用 系 统 及 其 数 据 对 高 可
用性的要求走上一个新的台阶。
一个本地 Cluster 系统理论上可以提供 99.99%以上的系统高可用
性 , 但 一 旦 发 生 火 灾 、 自 然 灾 害 、 人 为 破 坏 等 意 外 事 件 , 商 家 将 如
何 应 对 呢 ? 如 果 没 有 必 要 的 准 备 和 应 对 手 段 , 这 样 的 一 次 意 外 对 商
家 来 说 将 是 灾 难 性 的 。 这 就 要 求 我 们 防 患 于 未 然 , 尽 早 做 好 必 要 的
准备,以提高自己的抗灾、应对意外的能力。
对 于 IT 部 门 来 讲 , 要 提 高 自 己 的 抗 灾 能 力 , 其 必 要 的 技 术 就 是
建立起一个容灾系统。
一个容灾系统的实现可以采用不同的技术,而容灾系统的划分,
由 其 最 终 要 达 到 的 效 果 来 决 定 。 从 其 对 系 统 的 保 护 程 度 来 分 , 我 们
可以将容灾系统分为:数据容灾和应用容灾。
所 谓 数 据 容 灾 , 就 是 指 建 立 一 个 异 地 的 数 据 系 统 , 该 系 统 是
本 地 关 键 应 用 数 据 的 一 个 实 时 复 制 。 在 本 地 数 据 及 整 个 应 用 系 统 出
现 灾 难 时 , 系 统 至 少 在 异 地 保 存 有 一 份 可 用 的 关 键 业 务 的 数 据 。 该
数 据 可 以 是 与 本 地 生 产 数 据 的 完 全 实 时 复 制 , 也 可 以 比 本 地 数 据 略
微落后,但一定是可用的。
所谓应用容灾,是在数据容灾的基础上,在异地建立一套完整的
与 本 地 生 产 系 统 相 当 的 备 份 应 用 系 统 ( 可 以 是 互 为 备 份 ) 。 建 立 这
第 1 页
样 一 个 系 统 是 相 对 比 较 复 杂 的 , 不 仅 需 要 一 份 可 用 的 数 据 复 制 , 还
要有包括网络、主机、应用、甚至 IP 等资源,以及各资源之间的良
好协调。
这 里 的 技 术 讨 论 , 主 要 涉 及 数 据 容 灾 , 应 用 容 灾 涉 及 的 层 面 太
广,由于没有必要的技术参数,这里暂不作讨论。
数据容灾技术,又称为异地数据复制技术,按照其实现的技术方
式 来 说 , 主 要 可 以 分 为 同 步 传 输 方 式 和 异 步 异 步 传 输 方 式 ( 各 厂 商
在 技 术 用 语 上 可 能 有 所 不 同 ) , 另 外 , 也 有 如 “ 半 同 步 ” 这 样 的 方
式。 半同 步传 输方 式基 本与 同步 传输 方式 相同 ,只 是在 Read 占 I/ O
比 重 比 较 大 时 , 相 对 同 步 传 输 方 式 , 可 以 略 微 提 高 I/O 的 速 度 。 而
根 据 容 灾 的 距 离 , 数 据 容 灾 又 可 以 分 成 远 程 数 据 容 灾 和 近 程 数 据 容
灾 方 式 。 下 面 , 我 们 将 主 要 按 同 步 传 输 方 式 和 异 步 异 步 传 输 方 式 对
数 据 容 灾 展 开 讨 论 , 其 中 也 会 涉 及 到 远 程 容 灾 和 近 程 容 灾 的 概 念 ,
并作相应的分析。
1.1.1 同步数据容灾
同步数据容灾
1.1.1
1. 基于主机逻辑卷磁盘镜像功能的异地磁盘镜像方式;
一. 基于主机逻辑卷的同步数据复制方式
基 于 主 机 逻 辑 卷 的 同 步 数 据 复 制 方 式 以 VERITAS Volume
Replicator ( VVR ) 为 代 表 , VVR 是 集 成 于 VERITAS Volume
Manager(逻辑卷管理)的远程数据复制软件,它可以运行于同步模
式和异步模式。在同步模式下,其实现原理如下图:
第 2 页
当 主 机 发 起 一 个 I/O 请 求 A 之 后 ,必 然 通 过 逻 辑 卷 层 , 逻 辑 卷 管
理层在向本地硬盘发出 I/O 请求的同时,将同时通过 TCP /IP 网络向
异地系统发出 I/O 请求。其实现过程如下:
1. 本地主机系统发出第一个 I/O 请求 A;
2. 主机逻辑卷层会对本地磁盘系统发出 I/O 请求;
3. 本 地 磁 盘 系 统 完 成 I/O 操 作 , 并 通 知 本 地 逻 辑 卷 “ I/O 完
成”;
2’. 在 往 本 地 磁 盘 系 统 I/O 的 同 时 , 本 地 主 机 系 统 逻 辑 卷 会 向 异
地系统发出 I/O 请求 A;
3’. 异地系统完成 I/O 操作,并通知本地主机系统“I/O 完成”
4. 本 地 主 机 系 统 得 到 “ I/O 完 成 ” 的 确 认 , 然 后 , 发 出 第 二 个
第 3 页
I/O 请求 B。
1.1.2 异步数据容灾
异步数据容灾
1.1.2
同步数据容灾一般只能在较短距离内部署(10KM-100KM ),大
于 这 个 距 离 , 就 没 有 实 际 应 用 价 值 了 。 因 为 即 使 在 1000KM 距 离
上 , 4.5M B 的 速 率 足 够 将 数 据 复 制 到 异 地 , 每 个 I/O 的 响 应 时 间 也
会超过 10ms,这种响应速度太慢。
异步数据容灾主要是针对“线路带宽和距离能保证完成数据复制
过 程 , 同 时 , 希 望 异 地 数 据 复 制 不 影 响 生 产 系 统 的 性 能 ” 这 样 的 要
求 下 提 出 来 的 。 考 虑 异 步 数 据 容 灾 , 应 该 注 意 到 以 下 几 个 技 术 条 件
和事实。
1. 带 宽 必 须 能 保 证 将 本 地 生 产 数 据 基 本 上 完 全 复 制 到 异 地 容 灾
端,还要考虑距离对传输能力的影响。
按 照 前 面 的 估 算 : 在 1000 公 里 范 围 内 , 一 条 带 宽 足 够
的 线 路 能 支 持 的 I/O 流 量 最 大 为 ( 数 据 块 大 小 10KM ) :
1.4M B×3600 秒×24 小时=120GB/ 天
2. 异地容灾端数据虽然落后,但必须保证该数据库内在的数据完
整 性 ( 一 致 性 ) 、 可 用 性 , 否 则 , 这 种 数 据 复 制 就 没 有 应 用
价值了。
3. 异地容灾端数据会比本地生产端数据落后一定时间,这个时间
随采用的技术,带宽、距离、数据流特点的不同而不同。
4. 异步容灾基本不影响本地系统性能。
第 4 页
与 同 步 传 输 方 式 相 比 , 异 步 传 输 方 式 对 带 宽 和 距 离 的 要 求 低 很
多 , 它 只 要 求 在 某 个 时 间 段 内 能 将 数 据 全 部 复 制 到 异 地 即 可 , 同 时
异 步 传 输 方 式 也 不 会 明 显 影 响 应 用 系 统 的 性 能 。 其 缺 点 是 在 本 地 生
产 数 据 发 生 灾 难 时 , 异 地 系 统 上 的 数 据 可 能 是 几 分 钟 以 前 的 数 据 ,
即 最 近 几 分 钟 内 的 交 易 会 丢 失 。 ( 注 : 一 个 经 过 仔 细 计 算 和 规 划 的
系统,才能保证其数据丢失只有几分钟。)
通过异步传输模式进行异地数据复制的技术,包括:
1. 基于主机逻辑卷的数据复制方式
2. 基于磁盘系统 I/O 控制器的数据复制方式
而 事 实 上 , 只 有 基 于 主 机 逻 辑 卷 ( Volume ) , 并 采 用 Log 技 术
作 技 术 保 障 的 数 据 复 制 方 式 , 才 是 在 应 用 上 有 实 际 意 义 的 方 式 。 而
目 前 市 场 上 的 基 于 磁 盘 系 统 I/O 控 制 器 的 数 据 复 制 方 式 , 不 能 满 足
前 面 提 到 的 技 术 条 件 二 , 也 即 不 能 保 证 异 地 容 灾 端 数 据 ( 库 ) 的 完
整 性 , 所 以 , 这 种 方 式 是 没 有 应 用 价 值 的 。 目 前 , 基 于 磁 盘 系 统 的
异 步 数 据 复 制 技 术 在 跟 踪 未 复 制 数 据 块 时 , 使 用 “ Bitmap ( 位
图) ”和“ Timestamp( 时间 戳)”技术 ,这 两种方 式在 本地生 产数 据
突然发生灾难时,都不能保证异地容灾数据库的完整性。
基于主机逻辑卷(Volume)的数据复制方式
首先申明:针对这种方式,这以 VERITAS VVR 为例,但并不表
示 所 有 基 于 主 机 进 行 复 制 的 其 它 软 件 采 用 同 样 方 式 , 也 不 保 证 其 它
软件是有应用价值的。
VERITAS VVR ( Volume Replicator ) 通 过 基 于 Volume 和 Log
的 复 制 技 术 , 保 证 在 任 何 时 刻 本 地 系 统 发 生 自 然 灾 难 时 , 在 异 地 的
数据仍是可用的。
VERITAS VVR 在异步模式下采用了 Log 技术来跟踪未及时复制
的 数 据 块 , 这 个 Log 是 一 个 先 到 先 服 务 的 堆 栈 , 每 一 笔 I/O 处 理 都
会 首 先 被 放 进 这 个 Log, 并 按 到 达 先 后 顺 序 被 复 制 到 异 地 服 务 器 系
第 5 页
统。
下图是其工作的结构原理。
从上图,我们可以看到整个 I/O 和复制的过程如下:
1. 本地主机系统发出第一个 I/O 请求 A 到逻辑卷;
2. 逻辑卷对本地磁盘系统发出 I/O 请求;
2’. 在 往 本 地 磁 盘 系 统 I/O 的 同 时 , 逻 辑 卷 向 本 地 磁 盘 系 统 上 的
VVR Log 发出相同的写请求;
3. 本地磁盘系统完成 I/O 操作;并通知逻辑卷“I/O 完成”;
3’. VVR 完成针对这个 I/O 的有关操作,并通知逻辑卷;
4. 逻 辑卷 向 主 机确 认 “ I/O 完 成 ” , 然后 , 主 机系 统 发 出第 二 个
I/O 请求 B。
第 6 页
服 务 器 的 另 一 个 进 程 : VVR 的 进 程 , 负 责 将 Log 队 列 中 的 I/ O
复 制 到 异 地 服 务 器 。 这 个 过 程 和 上 面 的 I/O 过 程 在 时 间 上 无 关 。 如
上图中的标记:“I”和“II”。
I: 本 地 VVR 进 程 从 Log 队 列 中 取 出 最 先 到 达 的 I/O , 复 制 到 异
地服务器
II: 异 地 服 务 器 接 收 到 本 地 服 务 器 VVR 发 出 的 I/O 请 求 , 将 相
应数据写到异地磁盘系统,然后,通知本地系统 VVR 进程,要求下
一个 I/O。
这里,跟踪未及时复制的数据块的 Log 技术是保证异地数据可用
的 必 要 条 件 。 一 个 数 据 库 的 I/O 是 有 严 格 顺 序 的 , 这 个 顺 序 是 保 证
数 据 库 完 整 性 的 必 要 条 件 , 一 个 完 整 性 被 破 坏 的 数 据 库 一 般 是 不 可
用 的 , 比 如 根 本 无 法 启 动 、 打 开 该 数 据 库 , 且 是 无 法 修 复 的 。 本 地
数 据 库 的 完 整 性 是 由 数 据 库 本 身 来 维 护 的 。 当 一 个 数 据 库 被 实 时 复
制到异地时,要保证异地数据库的完整性,必然保证在异地磁盘 I/ O
上 的 I/O 顺 序 和 本 地 I/O 顺 序 完 全 相 同 , 否 则 , 异 地 数 据 库 的 完 整
性就无法保证。
VERITAS VVR 采用 的 I/O 控制 机制是支 持先到 先服务的 Log 技
术 , 因 此 , 不 管 异 地 数 据 比 本 地 数 据 落 后 多 少 时 间 , 都 能 保 证 异 地
数据库数据的一致性。比如:本地系统在 12:00 时发生自然灾难,
由 于 部 分 数 据 未 被 及 时 复 制 到 异 地 , 如 有 10 分 钟 的 数 据 未 完 成 复
制,那么在异地系统上存在 11:50 分钟以前的所有数据,且这个数
据库是可用的。
目 前 的 基 于 磁 盘 系 统 的 异 地 数 据 复 制 技 术 采 用 Bitmap 技 术 和
Timestamp 技 术 , 这 两 种 技 术 都 不 能 保 证 本 地 向 异 地 复 制 数 据 的 顺
序 严 格 和 本 地 I/O 的 顺 序 相 同 , 所 以 , 这 两 种 方 式 都 不 能 保 证 异 地
数据库的完整性。
第 7 页
Bitmap(位图)技术记录未被及时复制的数据块的方法是:对于
每 个 数 据 块 ( 如 32KB ) 用 一 个 Bit 来 对 应 , 某 一 个 Bit 被 置 为
“1”时,表示其对应的数据块已被修改过,正在等待处理(这里是
等 待 被 复 制 ) 。 由 此 可 以 看 出 , 当 有 一 块 以 上 的 数 据 块 未 被 及 时 复
制 时 , 系 统 并 无 法 确 认 哪 一 块 数 据 块 应 该 先 复 制 到 异 地 , 所 以 , 系
统 将 任 选 一 块 , 即 不 按 到 达 的 时 间 先 后 进 行 复 制 。 可 以 看 出 , 这 种
方式不能根本保证异地数据库数据的完整性、一致性。
Timestamp 方式 是对每 个未及 时传送 的数据 块盖上 一个时 间戳。
从 表 面 上 看 , 由 于 时 间 戳 的 关 系 , 好 像 能 确 定 一 个 数 据 块 被 修 改 的
时 间 顺 序 了 。 其 实 不 然 : 当 一 个 未 被 及 时 复 制 的 数 据 块 被 第 2 次 修
改,并盖上新的时间戳时,数据复制的顺序就被破坏了。例如:
现在有 10 块数据块未被复制,编号“1、2、3、4、5、6、7、
8、 9、 10” ; 这 时 , 第 3 块 数 据 被 再 次 修 改 , 并 被 盖 上 一 个 新 的 时
间 戳 “ 11” ; 这 时 , 系 统 会 按 这 样 的 次 序 进 行 复 制 : “ 1、 2、 ( 没
有 3) 、 4、 5、 6、 7、 8、 9、 10、 11” 。 我 们 可 以 看 到 , 在 复 制 进
行到“4~10”之间时,异地数据的完整性被破坏。
事实上,在一个运行繁忙的系统中,出现这种情况机率极高,甚
至 每 时 每 刻 都 处 在 这 种 状 态 之 下 。 所 以 , 本 着 严 格 的 , 对 系 统 可 用
性负责任的态度,我们认为“Timestamp”的技术虽然比 Bitmap 技术
有一定优势,但实际上也无法保证异地数据的完整性和可用性。
1. Bitmap 和 Timestamp 方式的技术弱点:没有 log;
作为磁盘系统内置的数据复制功能,传统的磁盘管理模式没有考
虑 在 磁 盘 系 统 内 部 开 辟 出 一 个 磁 盘 块 给 磁 盘 系 统 控 制 器 本 身 使 用 ,
所以,磁盘系统无法采用 log 模式进行异步数据复制。
2. 磁盘系统保留异步传输模式的目的:复制,但不是容灾复制;
第 8 页