一种基于OGG方式进行数据迁移的研究

2015-08-22 17:05贾海军
软件 2015年5期

贾海军

摘要:近年来,随着110指挥中心的业务发展,接、处警数据量急剧上升,老旧数据库服务器已经不满足实际工作需要,亟需将大量数据迁移到一台高性能数据库服务器上,同时也要满足数据不丢失、操作简单、停机时间短等实际要求。Oracle GoldenGate(OGG)是一种基于日志的结构化数据复制软件,它通过解析源数据库在线日志或归档日志获得数据的增删改变化,再将这些变化应用到目标数据库,实现源数据库与目标数据库同步。

关键词:Oracle GoldenGate;数据库;数据迁移

中图分类号:TP311 文献标识码:A DOI:10.3969/j.issn.1003-6970.2015.05.031

0 引言

110接处警指挥应用系统是110报警服务台中的重要组成部分,系统主要由接警、处警、反馈和数据库系统组成,其中数据库系统使用Oracle数据库。由于系统常年不间断运行,积累了大量接处警数据,系统硬件性能已经不满足应用需求,多次出现故障致使110程序卡机,给110系统正常运行带来重大隐患。同时,鉴于各业务部门数据共享需求增加,需要实时抽取数据库数据,也给110数据库造成巨大压力。为了解决上述问题,我们计划将现有的110接处反数据库系统迁移到新的高性能服务器上,建立新的接处反数据库系统,将其和原有的数据库系统和备库系统以GoldenGate方式进行数据同步,形成一对多的数据同步模式,其中包括110主业务库,110备库,110查询统计业务库和数据推送中间库等多层次数据同步的架构。并在迁移过程中重新存储表及索引的数据,以解决表碎片,高水位等问题,针对大表将创建分区表以解决数据库的性能问题。

1 设计思路

由于是同构迁移,比较常用的数据库迁移方式如下:

通过迁移方案的对比,我们选择了停机时间最小回退简单且能对表及索引进行重组的GoldenGate数据库迁移方案。

采用这种方式的好处是:

一、业务连续性得到保证:原有数据库不需要停机,业务不需要中断。

二、应用测试可以随时进行:新的数据库可以随时进行业务测试,看业务系统与新平台数据库之间是否有需要修改的地方。

三、业务切换瞬间完成:待一切测试工作完成,只需要将应用程序指向新数据库,就可以完成数据库的升级和迁移。

2 Oracle GoldenGate(OGG)技术简介

Oracle GoldenGate是一种非插入性的基于日志的结构化数据复制软件,它通过解析源数据库在线日志或归档日志获得数据的增删改变化,再将这些变化应用到目标数据库,实现源数据库与目标数据库同步、双活。

GoldenGate主要包含Manager进程、Extract进程、Pump进程、Replicat进程。

Manager进程是GoldenGate的控制进程,它主要作用有以下几个方面:启动、监控、重启GoldenGate的其他进程,报告错误及时间,分配数据存储空间,发布阀值报告等。

Extract进程运行在数据库源端,负责从源端数据表或日志中捕获数据。Extract进程利用其内在的checkpoint机制,周期性地检查并记录其读写的位置,通常是写入到本地的trail文件。这种机制是为了保证如果Extract进程终止或者操作系统宕机,重启Extract进程后,GoldenGate能够恢复到以前的状态,从上一个断点处继续往下运行,而不会有任何数据损失。

Pump进程运行在数据库源端,其作用非常简单。如果源端使用了本地trail文件,那么Pump进程就会把Trail文件以数据块的形式通过TCP/IP协议发送到目标端。Pump进程本质是Extract进程的一种特殊形式,如果不使用Trail文件,那么Extract进程在抽取完数据后,直接投递到目标端。

与Pump进程相对应的叫Server Collector进程,这个进程不需要引起我们关注,因为在实际操作过程中无需对其进行任何配置,它运行在目标端,任务就是把Extract/Pump进程投递过来的数据块重新组装成Trail文件。

Replicat进程运行在目标端,是数据投递的最后一站,负责读取目标端Trail文件中的内容,并将解析其解析为DML或DDL语句,然后应用到目标数据库中。

3 迁移方案

3.1 源数据库的准备

1、数据库版本,Patch检查

查源库的数据库版本号,以及该数据库所实施的Patch,以保证迁移后的数据库与源库保持一致。

2、数据库检查

对源库进行GoldenGate安装前的检查,检查内容包括:

1)、不支持的数据类型。2)、当前运行的JOB。3)、当前运行的触发器。4)、回收站的功能是否关闭。5)、是否存在无主键,无唯一约束的表。6)、sequence检查。

3、数据库备份

检查数据库备份情况,确认数据库的备份是否有效,并根据数据库备份的实际情况,制定数据库迁移前的数据库备份策略与方法。

3.2 目标数据库的准备

新数据库服务器配置为Oraclelog RAC数据库,Oracle版本为10.2.0.4。数据库的存储逻辑卷管理将使用Oracle的ASM。

3.3 应用层的准备

由于数据库进行了迁移,且相应的主机名以及IP地址都可能发生改变,故应用系统以及连接到数据库的相关应用系统都要做相应数据连接的修改,使业务程序能够随时连接到新的RAC数据库。

3.4 切换逻辑与流程设计

由于涉及到两套数据库的数据切换,因此,需要根据业务特点,仔细设计切换操作的流程和顺序,提供可靠的回退机制。

3.5 创建Linux RAC数据库

在两台服务器上安装Oracle RAC数据库,其版本以及相关Patch将与110报警服务窗口系统的数据库保持一致。数据库文件将放置在由OracleASM管理的存储上。

1、Linux服务器的配置步骤如下:

(1)为两台服务器配置存储空间

主机层需要准备硬盘空间,以存放数据库数据文件,存储归档文件以及GoldenGate数据抓取文件。

(2)在服务器上安装Linux操作系统。

(3)配置主机参数和网络环境。

2、Oracle 10g RAC安装步骤如下:

(1)两台服务器上安装Oracle10g集群软件;

(2)两台服务器上安装Oracle数据库软件;

(3)为安装的Oracle 10g集群软件实施相关补丁;

(4)在Oracle RAC数据库上创建ASM;

(5)在Oracle RAC数据库上创建RAC数据库。

3、Oracle 10g RAC分区表的建立。

(1)在新安装的数据库按照源库创建相应的用户;

(2)在新安装的数据库按照源库创建相应的表,并根据用户的需求把110接处警指挥应用系统的业务表进行分区优化和索引重建。

3.6 GoldenGate软件安装和配置

在源数据库服务器上(Linux RAC)和目标数据库服务器上(Linux RAC)分别安装GoldenGate软件。为了保证GoldenGate软件在RAC数据库上能够切换,请将RAC数据库上的Goldengate软件安装在共享存储上。

1、数据库准备

(1)在两个数据库上创建数据库用户ggs;

(2)配置数据库为SUPPLEMENTAL和FORCE LOGGING;

(3)清空数据库回收站;

(4)关闭10g回收站功能;

(5)在两套主机安装GoldenGate软件;

(6)设置LD LIBRARY PATH环境变量;

(7)配置checkpoint表;

(8)数据库打开归档。

2、GoldenGate配置

(1)配置GLOBALS文件;

(2)配置MGR;

(3)配置extract进程;

(4)配置pump进程;

(5)配置replicat进程。

3.7 目标数据库初始化,进行源库到目标库的同步

1、启动源库(Linux RAC)上的extract和pump进程;

2、获取并记录源库(Linux RAC)当前的SCN号;

3、数据导出:以FLASHBACK SCN为参数,使用expdp导出源库(linuxRAC)数据;

4、数据导入:在目标库(linux RAC)上使用impdp导入数据;

5、禁用目标库(lilnux RAC)trigger和job;

6、以aftercsn参数,启动目标库(linux RAC)的replicate进程;

7、观察进程状态以及数据复制情况。

3.8 业务系统在RAC数据库上进行验证和测试

1、确认数据同步已经完成(并正在继续);

2、在目标数据库上(Linux RAC)进行数据验证和对比;

3、在目标数据库上(Linux RAC)进行业务测试。

3.9 业务系统正式迁移到RAC数据库

经验证数据同步正常,将数据库切换至新环境。

1、停止连接源库(Linux RAC)上的应用;

2、停止源库(linux RAC)上的extract、pump进程;

3、确认目标库上replicate进程达到EOF状态,停止目标库(linux RAC)上replicate进程;

4、目标库(linux RAC)上重建sequence;

5、禁用源库(linux)上trigger和job;

6、启动目标库(linuxRAC)上的extract、pump进程;

7、启用目标库(linux RAC)上trigger和job;

8、启动源库(Linux RAC)上的replicat进程;

9、启动连接目标库(linuxRAC)上的应用,进行数据验证。

4 回退方案

当原数据库迁移到新环境的数据库后,

如果由此次迁移影响业务正常进行,且短时间内未找到解决办法。将数据库由连接目标库(linux RAC)上的应用切换回源库(Linux RAC)。

数据库层要做相应配置,使其能够满足GoldenGate运行要求。

1、停止连接目标库(hnux RAC)上的应用;

2、停止目标库(linux RAC)上的extract、pump进程;

3、停止源库(Linux RAC)上的replicat进程;

4、源库(Linux RAC)重建sequence;

5、禁用目标库(1imux RAC)上trigger和job;

6、启动源库(Linux RAC)的extract、pump进程;

7、启用源库(Linux RAC)的trigger和job;

8、启动目标库(linux RAC)上的replicate进程;

9、启动连接源库(Linux RAC)的应用,进行数据验证。

5 结语

Oracel数据库在业内应用非常广泛,老旧服务器的硬件升级更新也是每名数据库管理员面临的实际问题。如何安全快捷方便地对大型数据库进行迁移,是一个需要长期研究的课题。本文针对具体工程实践,提出了一种切实可行的工作思路,并在实施中进行了验证,取得了很好的效果,对数据迁移中涉及到的数据安全性、业务连续性、易用性、可回退性等都做了周密的考虑,具有一定的可移植性。