【oracle灾备方案系列】基于DDS的Oracle灾备方案(一)
1.
引言
在企业信息化进程不断加快的今天,保持业务的持续性是企业用户进行数据存储时必须考虑的重要方面。灾难的出现,
可能导致生产停顿、客户满意度降低,企业的竞争力会因此大打折扣。震惊世界的
“9.11”
事件发生后,全世界都看到了金融、电信等行业用户在灾难中的巨大损失。这样,在灾难后如何快速、正确地恢复业务系统就成为摆在企业面前的一个难题。
证券行业是国民经济的重要环节,同样面临着如何应对灾难,以求防患于未然。今天,中国的证券行业正在面临业务模式的重大变革,在业务日新月异的今天,证券的交易模式也从分散向集中过渡,同时,券商之间的不断兼并和激烈的竞争,也使得信息技术部门格外看重集中交易系统的数据保护。试想一下,如果哪个券商的集中交易系统遭遇灾难而不能恢复的话,那么整个公司将不得不面临被兼并或倒闭的命运。因此,集中交易系统的安全性和抗灾难能力直接关系到券商和股民的切身利益、企业形象。所以尽可能地保证系统的安全是必须重点考虑的。
一个先进的、完善的灾备系统将全力的保护集中交易系统的稳定运行,让券商在业务飞速发展的同时没有后顾之忧。现在,我们很欣喜的看到,很多优秀的证券企业在整合业务的同时就考虑了灾备平台的建设,在思路和行动上都领先于同行业的竞争对手。
与此同时,随着业务的不断深入以及市场竞争的需要,数据应用成为另一个业内的热点,如何高效的利用交易数据,快速的查询、分析数据成为各公司
CTO
关注的问题。
本文根据集中交易系统的现状和灾备方面的规划需要,着重考虑合理地设计和建设一体化数据复制容备保护系统,同时优化数据中心的应用结构,以
DataGrid DDS
产品灾备平台为核心构建企业的第二数据中心和查询应用平台。形成技术方案建议书,供证券公司各级领导及技术人员参考。
2. DataGrid DDS产品介绍
2.1. 概述:
DataGrid DDS
是基于分析
oracle redo log
技术的
Oracle
实时复制工具,具有简单灵活、高性能低成本的特点,部署和使用非常容易,对系统资源和运行环境的要求也非常低。
DataGrid DDS
能够帮助用户在复杂的应用环境下完成容灾备份、异构迁移、业务数据分发、基础数据整合集中等工作。
l
DataGrid DDS
能做什么?
DataGrid DDS
能够满足用户多种业务需求,主要有:
提高系统整体可用性
DataGrid DDS
能够帮助用户提高
Oracle
数据库的可用性,无论是执行计划内停机(如系统升级、备份)还是遇到故障引起的非计划宕机(例如硬件故障、灾难、人为错误等),
DataGrid DDS
都能尽量减少宕机时间。提高可用性能够最大限度地减少数据丢失、经济损失和生产力的降低。
逻辑灾备和灾难恢复
对于大部分公司而言,灾备是一项巨大的工程,意味着高额的资金投入和人力成本。受到传统复制技术的限制,灾备必须拥有专用的硬件支持和专用的光纤传输链路,灾备距离和系统平台还有诸多的限制。此外,由于传统灾备系统的数据库不能随时打开使用,不但风险不能评估,而且巨大的投入也得不到回报。
DataGrid DDS
使用逻辑数据复制技术,传递的是交易信息,因此传输数据量很小,保证了在低带宽环境下实现低延迟的
Oracle
数据异步复制,软件同时支持实时复制容灾和定时复制备份功能,是一种高效且低成本的数据库灾备方式。
DataGrid DDS
使用标准的
IP
网络进行通讯,灾备端的
Oracle
数据库可以部署在本地或远程容灾中心,距离没有限制。此外,由于复制的目的端数据库始终处于打开状态,因此,当生产数据库遇到计划内或非计划停机时,
DataGrid DDS
能够支持前端应用程序快速、无缝的切换到灾备数据库。与其它基于磁盘或文件系统的物理复制技术相比,不但省略了漫长的数据库
recovery
和启动时间,而且能够保证
100%
的切换成功率。
分担数据库负载
DataGrid DDS
逻辑交易复制技术保证了目的端数据库始终处于可用状态,因此对于实时交易处理之外的只读应用,例如批量查询、报表处理、数据备份、统计分析等都可以交给复制的数据库处理。多种应用也不必在同一个交易数据库上争夺资源和时间窗口。生产系统运行和维护的压力得以释放,提高了稳定性,而不同的应用在分布的数据库上也可以得到分别的优化。
业务数据分发
DataGrid DDS
能够完成企业范围内数据分发,从交易数据生产库实时复制到一个或多个本地或异地的数据库。
DataGrid DDS
支持多种数据分发拓扑结构,一对多,多对一,级联复制等。数据分发是一种典型的通过部署多服务器、多数据库来分担负载,提高响应速度的企业应用模式。
跨平台数据迁移
DataGrid DDS
支持跨平台的数据传输,复制的源和目的系统可以在
AIX
、
HP-UX
、
Solaris
、
Linux
之间任意选择。
DataGrid DDS
同时支持
Oracle 9i
和
Oracle 10g
。对于用户来说,不但硬件平台的选择有很大的灵活性,也可以用
DataGrid DDS
来完成异构平台的数据库同步和迁移工作。
实时复制和批量复制
应用的需求影响着用户使用复制工具的模式,对于容灾和查询应用,连续的实时复制保证目的端数据库拥有和生产系统完全一样的数据状态;而对于定时备份、系统升级和定时分析等应用,用户则希望复制软件做到定时或周期性的批量数据迁移。在
DataGrid DDS
中批量复制和实时复制是相互独立又紧密结合的两个部分,通过管理员的操作控制,
DataGrid DDS
完全满足用户在多种应用条件下的需求。
交易统计
DataGrid DDS
在完成实时数据复制的同时,也跟踪到了数据库交易数量的变化,通过
GUI
界面,
DBA
可以随时查询到生产数据库在指定时间段的交易统计结果,通过分析这些数据,
DBA
能够量化生产数据库压力的变化,从而为数据库的扩容和升级提供了依据。
增强分析工具
DataGrid DDS
提供了简单实用的数据库工具包,包括日志分析工具、文件分析工具、导入导出工具等,工具包能帮助有经验的
DBA
更深入的分析处理数据库的问题。
2.2. DataGrid DDS技术原理
2.2.1. DataGrid DDS和Oracle Redo Logs
l
基于日志分析的实时复制技术
DataGrid DDS
通过分析
Oracle redo log
获得实时交易信息,完成
schema
或
table
级别的数据复制。区别于早期的日志分析技术,
DataGrid DDS
对日志的整合和传输以交易为单位,使用该技术,在拥有高性能的同时还能更好的保证数据传输的一致性和完整性。对生产数据库也不会增加负载。
DataGrid DDS
从
Oracle redo logs
里面获取所有的数据库改变信息。通过对信息的分析整合,
DataGrid DDS
将完整的交易信息复制到目的端。
DataGrid DDS
不是等待
Oracle redo log
文件写满之后再处理,而是随时读取其数据块内容,间隔时间可以用参数指定,一般是秒级。
DataGrid DDS
也不会复制
Oracle redo log
的全部内容到目的端数据库,除指定复制对象(数据表)相关的
DML/DDL
操作之外,其他的信息将丢弃处理。
为了避免可能出现的复制错误,用户需要打开数据库的
supplemental logging
和
force logging
参数以便
DataGrid DDS
能获取完整的数据信息。
置于裸设备或文件系统(包括
ocfs
)中的
Oracle redo log
可以被
DataGrid DDS
正常读取。如果用户使用的是
Oracle 10g
,并且将
redo log
保存在
ASM
(一种新的
Oracle
存储格式)中,则需要在裸设备或文件系统上手动创建一组与原有日志同步的
redo log member
,供
DataGrid DDS
复制使用。
l
Online
和
Archived Redo Logs
Oracle
有两种类型的日志:在线日志和归档日志。一般情况下,
DataGrid DDS
从一组在线日志读取信息,因此,不要求
Oracle
数据库必须打开归档日志。但在某些特殊情况下,
online redo log
没来得及分析就被覆盖,此时,如果
Oracle
是归档模式,则
DataGrid DDS
将从归档日志读取需要的信息。
2.2.2. 复制对象和数据定位
l
复制对象的指定
DataGrid DDS
支持两种级别的复制:
1.
用户(
schema
)级复制;
2.
表级复制。
用户级复制表示源端数据库指定用户(
schema
)下的所有表、视图、索引、过程、函数、包、序列等数据对象全部复制到目标端数据库指定的用户下。表级复制表示源端数据库指定用户(
schema
)下的单个表复制到目标端数据库指定用户下的单个表。
在使用
DataGrid DDS
时,用户通过编辑配置文件指定源端和目的端复制对象的映射关系,包括源端对象名,目的端对象名,目的主机编号等。源端和目的端对象名称可以不同,但结构必须一致。软件运行过程中,复制对象的映射参数会驻留内存,
DataGrid DDS
通过日志分析过滤,只处理指定复制对象有关的交易,其它用户或表的操作信息则被丢弃。
l
Rowid mapping
早期的数据库逻辑复制软件要求被复制的数据表有主键索引,通过
where
子句查询的方式来定位
DML
操作的目标行。这种方法在数据修改较多或者表内行数较多的应用环境,特别是
Update
操作频繁的情况下,效率较低。
为了满足海量数据系统的应用要求,
DataGrid DDS
以
Oracle
内部
rowid
为参照进行复制数据定位。系统在初始化过程中会自动创建源端数据行和目的端数据行的
rowid mapping
映射表,为二进制格式,系统根据该映射关系找到
DML
操作的目标行。
Rowid
定位技术在海量数据环境下处理
Update
和
Delete
操作具有较大的性能优势。
2.2.3. 分级存储和交易队列
DataGrid DDS
在数据传输部分使用了分级存储机制,在遇到系统错误引起的复制中断时,例如硬件故障、数据库故障、网络中断或延迟,分级存储机制能完好的保存已经合成的交易信息,避免数据丢失。这些数据以二进制文件格式存储在文件系统的缓存目录下,直到系统故障解决。恢复从缓存文件传输的中断点开始。
l
源端和目的端分级存储
DataGrid DDS
的分级存储分为两级:第一级在复制源端,第二级在复制的目的端。
Redo log
里边的交易的信息被整合成缓存文件后,首先存放到源端的一级缓存目录;然后经过网络通讯进程处理被发送到目的端系统下的二级缓存目录保存;最后由装载进程负责装载到目的端数据库中。
在网络传输出现中断或大量延迟的情况下,
DataGrid DDS
在源端仍然继续读取并分析数据库日志产生的交易信息,这些信息暂时不能发送到目标端系统,不断地积累在源端的缓存目录下,直到通讯恢复。源端缓存保证了故障情况下复制数据的完整性。
目的端的缓存目录将保存交易信息文件直到它们正确的装载到目的端的数据库内,如果因为目的数据库的故障或关闭,装载不能进行,从源端传送过来的数据文件将在目的端缓存目录下保存。数据库恢复后,缓存文件会严格按照交易时间顺序进行装载。
l
文件的格式和大小
交易信息以文件为单位进行传输、缓存和装载,该文件为
DataGrid
独有的二进制格式,其内部的表达方式与
Oracle
内部处理方式相类似,避免了很多复杂的信息转换,因此具有很高的效率。
缓存文件的总量为源端实际产生
redo log
日志量的
1/3~1/4
左右。
DataGrid DDS
不设置缓存空间控制机制,用户可以根据每天交易产生的
Oracle redo log
日志量和以上比例计算需要预留的缓存空间。
l
内存管理和大交易处理
DataGrid DDS
启动后,将在源端和目的端系统上开辟多个内存区供各进程使用,用来驻留参数、传递消息信号、缓存分析交易的中间信息等。内存区的大小由系统参数指定,目的是防止无限制的使用内存引起系统资源紧张或系统崩溃。
在复制源端,如果遇到数据库产生非常大的交易,
DataGrid DDS
会连续分析直到整个交易提交,其间产生的中间信息可能达到
GB
级。在这种情况下,
DataGrid DDS
会自动将这些信息缓存在磁盘上等待处理,磁盘缓存由后台进程自动处理,容量没有限制。
l
交易队列
DataGrid DDS
严格按照
Oracle
数据库内部
SCN
顺序执行交易的复制和装载,保证复制数据的绝对一致性。
DataGrid DDS
在跟踪
redo log
过程中,每隔一个固定的时间(通常是秒级)读取一次日志文件,分析出本次读出数据的内容,同时记录下该段数据的起始和终止
SCN
号。下一次读取
redo log
时,从上一次获取的终止
SCN
位置开始。多个实例的
RAC
模式下,则以
SCN
为参考给每个实例执行的交易进行排队,然后按照排队顺序形成缓存文件。缓存文件也严格按照交易的顺序进行编号、传递。所有的交易在目的端装载的顺序与它们在源端产生的顺序完全相同,这是保证数据完整性和一致性的关键。
2.2.4. 使用和部署DataGrid DDS
l
在线部署
DataGrid DDS
的安装非常简单,不需要特殊的软硬件支持,软件本身完全在
Oracle
数据库的外部,不需要在
Oracle
中增加表空间,不需要在复制的表上添加索引和主键,也不需要停机做基础数据同步工作。
整个安装过程可以在线进行,甚至可以在数据库正常执行交易的过程中执行,因为
DataGrid DDS
不用借助任何第三方工具就可以进行在线的批量数据初始化工作,初始化结束后,无缝切换到增量数据复制过程。这样的功能对于一些需要
7*24
连续运行的系统来说非常重要,因为在安装维护过程中,频繁的停机会给生产系统带来很大的安全隐患和工作难度。
l
跨平台支持和兼容性
使用逻辑复制技术的
DataGrid DDS
,其跨平台能力是用户非常欢迎的。
DataGrid DDS
能够支持不同版本
Unix/Linux
系统下的混合复制,对于具有复杂硬件环境的企业系统来说,异构能力可以节省大量的资源和成本,旧设备得到充分的利用。
不同
Oracle
版本的支持能力也非常有价值,对于一些
7*24
运行的
Oracle9i
数据库来说,
DataGrid DDS
可以帮助它们在线的升级到
Oracle 10g
。
操作系统
|
数据库版本
|
数据类型
|
数据对象
|
AIX
|
Oracle9i
|
NUMBER
|
Table
|
HPUX
|
Oracle9i RAC
|
CHAR
|
View
|
HPUX
(
IA64
)
|
Oracle 10g
|
VARCHAR/VARCHAR2
|
Package
|
Solaris
|
Oracle 10g RAC
|
DATE
|
Package body
|
Linux
|
|
TIMESTAMP
|
Index
|
|
|
BLOB/CLOB
|
Sequence
|
|
|
RAW/LONG RAW
|
Procedure
|
|
|
ROWID
|
Function
|
|
|
|
Trigger
|
表
1
:
DataGrid DDS
支持的系统及对象
l
多种复制模式
DataGrid DDS
支持一对一,一对多,多对一,以及级联复制等多种复制模式。无论在哪种模式下,复制的源和目的系统都是独立的部分,可以单独的使用、维护和优化,这也是逻辑复制技术受到用户青睐的重要原因之一。
一对一的复制常见于灾备应用。
oracle ORACLE Oracle ora ORA Ora
数据库
shujuku 9i 10g 11g database db dbms rdbms sqlserver sybase informix db2 mysql postgres
数据仓库
shujuchangku sql SQL
表
table biao
表空间
tablespace biaokongjian
用户
user yonghu
模式
schema moshi
事物
transaction transactions shiwu
交易
jiaoyi
实例
instance RAC rac OPS ops
实时
shishi
定时
传输
chuanshu
自动
auto
缓存
buffer
内存
磁盘
目录
文件系统
file system
操作系统
OS
内核
kernel
分发
集中
fenfa jizhong
数据
data shuju track merge comm communication
程序
进程
网络
距离
远程
异地
公里
跨
跨平台
行业
异构
成功案例
案例
项目
规划
设计
方案
白皮书
技术
报告
测试报告
文档
验收
竞争分析
测试
迁移
migration qianyi
在线
部署
集成
通信
工程
开放
封闭
服务
service fuwu
模块
模块化
地址
体系结构
延迟
时间
特点
优势
dataguard
高级复制
逻辑复制
物理复制
逻辑容灾
物理容灾
log redolog redo
日志
日志分析
analysis stream streams
流
流复制
保护
baohu
对象
object
类型
type
存储过程
procedure trigger
触发器
序列
sequence
权限
sqlplus
外部表
OMS
物化视图
试图
view
索引
index
提交
commit
回滚
rollback OCI imp exp
导入
导出
select insert update where alter recovery recover mount v$obj
emc SRDF timefinder netapp snapassure mirror
镜像
veritas VVR vxfs netbackup hp truecopy ibm pprc sun hds
快照
复制
阵列
阵列复制
存储
存储复制
data guard DSG dsg Quest Shareplex SHAREPLEX SharePlex rongzai fuzi
容灾
复制
备份
恢复
软件
RUANJIAN ruanjian realsync snapassure goldengate ireflect datamirror toad beifen SAN NAS DAS gzip
rongzai
成本
cost
带宽
网络
ip
压缩
yasuo wangluo daikuan chengben iot logminer
进程
process
打开
open
ods ODS OSS BSS BOSS erp crm
交易系统
jiaoyixitong
管理系统
guanlixitong
监控系统
jiankongxitong
采集系统
caijixitong
支撑系统
zhichengxitong
业务系统
yewuxitong
业务
yewu
核心系统
核心
hexin
中间业务
增值业务
前台
后台
houtai
前置
账务
zhangwu
处理
process
管理
management Java j2ee web GUI EJB C C++ unix Linux
界面
游戏
工具
tools
查询
报表
即席查询
抽取
转换
装载
ETL
功能