太阳城集团

  • / 9
  • 下载费用:30 金币  

基于GOLDENGATE的灾备智能切控制方法.pdf

摘要
申请专利号:

CN201510458516.5

申请日:

2015.07.30

公开号:

CN105068886A

公开日:

2015.11.18

当前法律状态:

授权

有效性:

有权

法律详情: 授权|||著录事项变更IPC(主分类):G06F 11/14变更事项:申请人变更前:上海新炬网络太阳城集团技术有限公司变更后:上海新炬网络太阳城集团技术股份有限公司变更事项:地址变更前:200063 上海市普陀区中山北路2000号中期大厦3楼B变更后:201707 上海市青浦区外青松公路7548弄588号1幢1层R区113室|||实质审查的生效IPC(主分类):G06F 11/14申请日:20150730|||公开
IPC分类号: G06F11/14; G06F17/30 主分类号: G06F11/14
申请人: 上海新炬网络太阳城集团技术有限公司
发明人: 程永新; 林小勇; 温伟灵
地址: 200063上海市普陀区中山北路2000号中期大厦3楼B
优先权:
专利代理机构: 上海科律专利代理事务所(特殊普通合伙)31290 代理人: 袁亚军; 金碎平
PDF完整版下载: PDF下载
法律状态
申请(专利)号:

太阳城集团CN201510458516.5

授权太阳城集团号:

|||||||||

法律状态太阳城集团日:

太阳城集团2018.03.30|||2017.11.24|||2015.12.16|||2015.11.18

法律状态类型:

太阳城集团授权|||著录事项变更|||实质审查的生效|||公开

摘要

本发明公开了一种基于GoldenGate的灾备智能切控制方法,包括如下步骤:在源端和灾备目标端的节点主机上分别部署GoldenGate软件进行数据同步备份;每次切换前,在源端停止RAC监听,获取源端和灾备目标端的节点主机上各实例的SPID,并自动生成KILL脚本停止各实例的SPID;在源端节点主机上循环检测并停止抽取进程和投递进程;在源端节点主机启动反向同步的复制进程;在目标端节点主机循环检测复制进程,停止正向同步的复制进程,并启动反向同步的抽取进程;最后在目标端节点主机上启动投递进程。本发明不但安全可靠,有效避免数据丢失,并且能够在短太阳城集团内完成切换,大大缩短了业务停止生产的太阳城集团。

权利要求书

1.一种基于GoldenGate的灾备智能切控制方法,其特征在于,包括如下步骤:
S1:在源端和灾备目标端的节点主机上分别部署GoldenGate软件进行数据同
步备份;
S2:每次切换前,在源端停止实时应用集群监听,避免应用系统再连接到实例
中;
S3:获取源端和灾备目标端的节点主机上各实例的SPID,并自动生成KILL脚
本停止各实例的SPID,断开会话,保证实例中无活动的业务进程;
S4:在源端节点主机上循环检测抽取进程,以判断数据抽取是否全部完成,完
成了则停止抽取进程;
S5:在源端节点主机循环检测投递进程,以判断数据投递是否全部完成,完成
了则停止投递进程;
S6:在源端节点主机启动反向同步的复制进程,并提前准备好接收反向同步的
数据;
S7:在目标端节点主机循环检测复制进程,以判断数据复制是否全部完成,完
成了则停止正向同步的复制进程,并从当前太阳城集团开始取数启动反向同步的抽取进程;
S8:最后在目标端节点主机上启动投递进程。
2.如权利要求1所述的基于GoldenGate的灾备智能切控制方法,其特征在于,
所述源端节点主机启动反向同步的复制进程后,还启动AEXTCHK备用抽取进程,以
抽取GoldenGate同步以外产生的数据,抽取出来的数据存放在本地,根据用户需求
再确定是否将数据同步到目标端,避免数据丢失。
3.如权利要求1所述的基于GoldenGate的灾备智能切控制方法,其特征在于,
如果源端和灾备目标端的节点主机上存在多个实例,则每次通过脚本执行切换一个
实例。
4.如权利要求1所述的基于GoldenGate的灾备智能切控制方法,其特征在于,
所述步骤S1中源端节点主机上的GoldenGate利用抽取进程和数据库日志获得数据
的增量变化,将增量数据转化为GoldenGate格式并采用10:1的压缩率对数据压缩
后,利用投递进程在容灾链路上直接通过TCP/IP网络传输至灾备目标端节点主机;
所述目标端节点主机上的GoldenGate通过交易重组,分批加载加快数据投递的速度
和效率,在亚秒级实现增量数据的复制。
5.如权利要求1所述的基于GoldenGate的灾备智能切控制方法,其特征在于,
所述步骤S7中目标端节点主机获取灾备目标端最后应用的SCN号,查询该SCN号对
应的太阳城集团点,并从该太阳城集团点开始取数启动反向同步的抽取进程。

说明书

基于GoldenGate的灾备智能切控制方法

技术领域

本发明涉及一种数据库主备系统切换方法,尤其涉及一种基于GoldenGate的灾
备智能切控制方法。

背景技术

在日常维护GOLDENGATE灾备系统时(两端均是ORACLE数据库),经常要
检查生产系统(源端)与灾备系统(目标端)之间的同步是否正常,数据同步是否
一致,两端均一致,才能保持业务高效地生产。通过对生产系统和灾备系统的切换、
回切来验证是最具有说服力的,但往往人工进行切换、回切,需要操作的太阳城集团比较
长,长达30min以上,严重影响业务生产。

现有人工切换的主要问题如下:一、通过人工介入进行操作,操作流程和步骤
较多,而且容易出错,进行一次切换的太阳城集团较长;二、人工切换由于切换操作流程
不当,或检查不到位,容易出现数据丢失;三、一个库存在多个实例时进行切换,
复杂性增加;四、切换完成后往往还有数据在源端修改,应用程序停止得不够彻底,
使得生产系统与灾备系统之间的同步出现问题。

发明内容

本发明所要解决的技术问题是提供一种基于GoldenGate的灾备智能切控制方
法,不但安全可靠,有效避免数据丢失,并且能够在短太阳城集团内完成切换,大大缩短
了业务停止生产的太阳城集团。

本发明为解决上述技术问题而采用的技术方案是提供一种基于GoldenGate的灾
备智能切控制方法,包括如下步骤:S1:在源端和灾备目标端的节点主机上分别部
署GoldenGate软件进行数据同步备份;S2:每次切换前,在源端停止实时应用集群
监听,避免应用系统再连接到实例中;S3:获取源端和灾备目标端的节点主机上各
实例的SPID,并自动生成KILL脚本停止各实例的SPID,断开会话,保证实例中无
活动的业务进程;S4:在源端节点主机上循环检测抽取进程,以判断数据抽取是否
全部完成,完成了则停止抽取进程;S5:在源端节点主机循环检测投递进程,以判
断数据投递是否全部完成,完成了则停止投递进程;S6:在源端节点主机启动反向
同步的复制进程,并提前准备好接收反向同步的数据;S7:在目标端节点主机循环
检测复制进程,以判断数据复制是否全部完成,完成了则停止正向同步的复制进程,
并从当前太阳城集团开始取数启动反向同步的抽取进程;S8:最后在目标端节点主机上启
动投递进程。

上述的基于GoldenGate的灾备智能切控制方法,其中,所述源端节点主机启动
反向同步的复制进程后,还启动AEXTCHK检查进程,以抽取GoldenGate同步以外产
生的数据,抽取出来的数据存放在本地,根据用户需求再确定是否将数据同步到目
标端,避免数据丢失。

上述的基于GoldenGate的灾备智能切控制方法,其中,如果源端和灾备目标端
的节点主机上存在多个实例,则每次通过脚本执行切换一个实例。

上述的基于GoldenGate的灾备智能切控制方法,其中,所述步骤S1中源端节
点主机上的GoldenGate利用抽取进程和数据库日志获得数据的增量变化,将增量数
据转化为GoldenGate格式并采用10:1的压缩率对数据压缩后,利用投递进程在容
灾链路上直接通过TCP/IP网络传输至灾备目标端节点主机;所述目标端节点主机上
的GoldenGate通过交易重组,分批加载加快数据投递的速度和效率,在亚秒级实现
增量数据的复制。

上述的基于GoldenGate的灾备智能切控制方法,其中,所述步骤S7中目标端
节点主机获取灾备目标端最后应用的SCN号,查询该SCN号对应的太阳城集团点,并从该
太阳城集团点开始取数启动反向同步的抽取进程。

本发明对比现有技术有如下的有益效果:本发明提供的基于GoldenGate的灾备
智能切控制方法,不但安全可靠,有效避免数据丢失,并且能够在短太阳城集团内完成切
换,大大缩短了业务停止生产的太阳城集团,具有自动化、智能化、完整性、一致性的特
点。

附图说明

图1为本发明基于GoldenGate的灾备智能切控制流程示意图;

图2为本发明基于GoldenGate的多实例灾备智能切控制架构示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的描述。

图1为本发明基于GoldenGate的灾备智能切控制流程示意图。

请参见图1,本发明提供的基于GoldenGate的灾备智能切控制方法,包括如下
步骤:

S1:在源端和灾备目标端的节点主机上分别部署GoldenGate软件进行数据同步
备份;所述源端节点主机上的GoldenGate利用抽取进程和数据库日志获得数据的增
量变化,将增量数据转化为GoldenGate格式并采用10:1的压缩率对数据压缩后,
利用投递进程在容灾链路上直接通过TCP/IP网络传输至灾备目标端节点主机;所述
目标端节点主机上的GoldenGate通过交易重组,分批加载加快数据投递的速度和效
率,在亚秒级实现增量数据的复制;

S2:每次切换前,在源端停止RAC(RealApplicationClusters,实时应用集群监
听),避免应用系统再连接到实例中;

S3:获取源端和灾备目标端的节点主机上各实例的SPID(SystemProcessID,即
操作系统进程ID),并自动生成KILL脚本停止各实例的SPID,断开会话,保证实例
中无活动的业务进程;

S4:在源端节点主机上循环检测抽取进程,以判断数据抽取是否全部完成,完
成了则停止抽取进程;

S5:在源端节点主机循环检测投递进程,以判断数据投递是否全部完成,完成
了则停止投递进程;

S6:在源端节点主机启动反向同步的复制进程,并提前准备好接收反向同步的
数据;为了避免数据丢失,还可在源端启动AEXTCHK检查进程,以获取GOLDENGATE
同步之外产生的数据,目的为了在生产中其他操作产生的数据仍可获取出来进行同
步;

S7:在目标端节点主机循环检测复制进程,以判断数据复制是否全部完成,完
成了则停止正向同步的复制进程,并从当前太阳城集团开始取数启动反向同步的抽取进程;
目标端节点主机可获取灾备目标端最后应用的SCN号(SystemChangeNumber),查
询该SCN号对应的太阳城集团点,并从该太阳城集团点开始取数启动反向同步的抽取进程;

S8:最后在目标端节点主机上启动投递进程。

为确保生产与灾备系统切换能顺利、快速地实现,本发明可编写一套智能切换
脚本,部署在各个节点中,实现无缝切换。一套脚本包含8个脚本,简介如下:

fetch_session_spid.sh:多实例的RAC,获取当前节点的spid,并生成KILL脚本;

fetch_session_spid_other_node.sh:获取另一节点的spid,并生成KILL脚本;

kill_session_spid.sh:杀进程脚本,包括当前节点和另一节点(通过ssh信任访问);

set_env.sh:设置环境变量,每个节点部署时设置;

stop_listener.sh:使用srvctl停止RAC监听;

stop_source_process.sh:检测并停止抽取、投递进程,并启动AEXTCHK抽取进程,
以检查是否存在GOLDENGATE同步之外的操作;

stop_target_process.sh:检测并停止复制进程;

switch_ogg_SZtoBJ.sh:主脚本,以上脚本均由此脚本调用。

具体的实施方法如下:

1.正反向同步进程均配置好,反向进程处于stop状态;

2.抽取进程使用E开头,抽取进程的参数可参考如下:

EXTRACTxxxxxx

obey/opt/oracle/product/rdbms/11.2.0/ogg/gg_ddb2_param.oby

EXTTRAIL./dirdat/xxxxxx/ss

TRANLOGOPTIONSLOGRETENTIONDISABLED

TRANLOGOPTIONSBUFSIZE2048000

TRANLOGOPTIONSDBLOGREADER,DBLOGREADERBUFSIZE2048000

TRANLOGOPTIONSALTARCHIVELOGDEST+DGDDB2_2

TRANLOGOPTIONSEXCLUDEUSERGOLDENGATE

DDLINCLUDEMAPPED

DDLOPTIONSADDTRANDATA

CACHEMGRCACHESIZE8192MB

BRBRDIR/opt/oracle/ogg/ggddb,BRINTERVAL4h

DISCARDFILE./dirrpt/xxxxxx.dsc,APPEND,MEGABYTES100

DISCARDROLLOVERAT6:00

REPORTCOUNTEVERY1HOURS,RATE

FETCHOPTIONSMISSINGROWABEND

STATOPTIONSREPORTFETCH

WARNLONGTRANS1H,CHECKINTERVAL10m

DYNAMICRESOLUTION

TABLEOWNER.*;

3.投递进程使用D开头,投递进程的参数可参考如下:

extractyyyyyy

passthru

dynamicresolution

rmthost10.254.9.61,mgrport7959,compress

rmttrail/opt/oracle/ogg/ggndb/dirdat/zzzzzz/ss

discardfile./dirrpt/yyyyyy.dsc,append,megabytes1024

discardrolloverat6:00

reportrolloverat6:00

reportcountevery1hours,rate

TABLEowner.*;

4.复制进程使用R开头,复制进程的参数可参考如下:

REPLICATzzzzzz

obey/opt/oracle/product/rdbms/11.2.0/ogg/gg_ndb2_param.oby

assumetargetdefs

SQLEXEC"ALTERSESSIONSETCOMMIT_WRITE=NOWAIT"

SQLEXEC"ALTERSESSIONSETCONSTRAINTS=DEFERRED"

DBOPTIONSDEFERREFCONST

DBOPTIONSSUPPRESSTRIGGERS

--aaaa

--bbbb

--cccc

--dddd

DISCARDFILE./dirrpt/zzzzzz.dsc,APPEND,MEGABYTES1024

DISCARDROLLOVERAT6:00

reperror(default,abend)

reperror(24344,discard)

DDLINCLUDEMAPPED

DDLOPTIONSREPORT

REPORTROLLOVERAT6:00

REPORTCOUNTEVERY1HOURS,RATE

NUMFILES150

APPLYNOOPUPDATES

GROUPTRANSOPS1000

batchsqlopsperqueue5000,opsperbatch5000

MAPOWNER.*,TARGETOWNER.*;

5.使用数据泵或其他方式做一次全量数据的初始化;

6.在目标端增加一个AEXTCHK抽取进程,检查有没有除OGG同步之外的操作;

7.反向同步的配置和上述方式类同;

8.将智能切换脚本部署在每个节点中,建议各节点的路径一致;

9.在set_env.sh中配置好环境变量,每个节点上的配置可能不一样;

10.切换前,先检查数据是否已经同步完成,切换过程脚本会自己去判断,若没有同步
完成,那么它会循环判断,直至数据同步完成;

11.使用root用户执行脚本:shswitch_ogg_SZtoBJ.sh$ORACLE_SID。

如果源端和灾备目标端的节点主机上存在多个实例,则每次通过脚本执行切换
一个实例,采用上述脚本执行方式,能在短太阳城集团内完成切换,约1分钟,大大缩短
了业务停止生产的太阳城集团。请继续参见图2,假设环境如下:1.生产系统是两个节点的
RAC,服务器在深圳,每个节点上存在四个实例;2.灾备系统是两个节点的RAC,服
务器在北京,每个节点上存在四个实例;3.生产系统与灾备系统之间是通过
GOLDENGATE实现的数据同步。采用本发明的控制方法后,生产系统的任何一个与灾
备系统中的任何一个节点,均可实现切换和回切;系统中的任何一个实例,均通过
一套脚本实现。假设dba的业务连接在深圳,那么,执行shswitch_ogg_SZtoBJ.sh
dba1即可将数据库切换至北京端,此时,业务连接至北京端即可使用。

本发明提供的基于GoldenGate的灾备智能切控制方法,不但安全可靠,有效避
免数据丢失,并且能够在短太阳城集团内完成切换,大大缩短了业务停止生产的太阳城集团,具
有自动化、智能化、完整性、一致性的特点。具体优点如下:自动化:每次切换一
个实例,仅需执行一次脚本,所有工作均自动完成。智能化:通过配置参数文件
set_env.sh可实现一个库多个实例的切换,同时大大提高了可迁移性,在其他库上
运用此切换脚本时,只需配置set_env.sh参数文件即可。完整性:整个切换流程,
考虑周全,从监听、进程、抽取、投递、复制均考虑到了,同时还使用添加AEXTCHK
抽取进程,以获取队GOLDENGATE同步之外产生的数据。一致性:脚本切换的整套流
程是完整的,那么可确保数据同步是一致的,同步,若出现切换后还有数据在源端
产生,那么还可通过AEXTCHK进程获取这些数据,故提高了数据一致性的保障。

虽然本发明已以较佳实施例揭示如上,然其并非用以限定本发明,任何本领域
技术人员,在不脱离本发明的精神和范围内,当可作些许的修改和完善,因此本发
明的保护范围当以权利要求书所界定的为准。

关 键 词:
基于 GOLDENGATE 智能 控制 方法
  专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
太阳城集团本文
本文标题:基于GOLDENGATE的灾备智能切控制方法.pdf
链接地址:http://zh228.com/p-6401591.html
太阳城集团我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服客服 - 联系我们

copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备17046363号-1 
 


收起
展开
葡京赌场|welcome document.write ('');