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

文档序号:9349821阅读:399来源:国知局
基于GoldenGate的灾备智能切控制方法
【技术领域】
[0001]本发明涉及一种数据库主备系统切换方法,尤其涉及一种基于GoldenGate的灾备智能切控制方法。
【背景技术】
[0002]在日常维护G0LDENGATE灾备系统时(两端均是ORACLE数据库),经常要检查生产系统(源端)与灾备系统(目标端)之间的同步是否正常,数据同步是否一致,两端均一致,才能保持业务高效地生产。通过对生产系统和灾备系统的切换、回切来验证是最具有说服力的,但往往人工进行切换、回切,需要操作的时间比较长,长达30min以上,严重影响业务生产。
[0003]现有人工切换的主要问题如下:一、通过人工介入进行操作,操作流程和步骤较多,而且容易出错,进行一次切换的时间较长;二、人工切换由于切换操作流程不当,或检查不到位,容易出现数据丢失;三、一个库存在多个实例时进行切换,复杂性增加;四、切换完成后往往还有数据在源端修改,应用程序停止得不够彻底,使得生产系统与灾备系统之间的同步出现问题。

【发明内容】

[0004]本发明所要解决的技术问题是提供一种基于GoldenGate的灾备智能切控制方法,不但安全可靠,有效避免数据丢失,并且能够在短时间内完成切换,大大缩短了业务停止生产的时间。
[0005]本发明为解决上述技术问题而采用的技术方案是提供一种基于GoldenGate的灾备智能切控制方法,包括如下步骤:S1:在源端和灾备目标端的节点主机上分别部署GoldenGate软件进行数据同步备份;S2:每次切换前,在源端停止实时应用集群监听,避免应用系统再连接到实例中;S3:获取源端和灾备目标端的节点主机上各实例的SPID,并自动生成KILL脚本停止各实例的SPID,断开会话,保证实例中无活动的业务进程;S4:在源端节点主机上循环检测抽取进程,以判断数据抽取是否全部完成,完成了则停止抽取进程;S5:在源端节点主机循环检测投递进程,以判断数据投递是否全部完成,完成了则停止投递进程;S6:在源端节点主机启动反向同步的复制进程,并提前准备好接收反向同步的数据;S7:在目标端节点主机循环检测复制进程,以判断数据复制是否全部完成,完成了则停止正向同步的复制进程,并从当前时间开始取数启动反向同步的抽取进程;S8:最后在目标端节点主机上启动投递进程。
[0006]上述的基于GoldenGate的灾备智能切控制方法,其中,所述源端节点主机启动反向同步的复制进程后,还启动AEXTCHK检查进程,以抽取GoldenGate同步以外产生的数据,抽取出来的数据存放在本地,根据用户需求再确定是否将数据同步到目标端,避免数据丢失。
[0007]上述的基于GoldenGate的灾备智能切控制方法,其中,如果源端和灾备目标端的节点主机上存在多个实例,则每次通过脚本执行切换一个实例。
[0008]上述的基于GoldenGate的灾备智能切控制方法,其中,所述步骤SI中源端节点主机上的GoldenGate利用抽取进程和数据库日志获得数据的增量变化,将增量数据转化为GoldenGate格式并采用10:1的压缩率对数据压缩后,利用投递进程在容灾链路上直接通过TCP/IP网络传输至灾备目标端节点主机;所述目标端节点主机上的GoldenGate通过交易重组,分批加载加快数据投递的速度和效率,在亚秒级实现增量数据的复制。
[0009]上述的基于GoldenGate的灾备智能切控制方法,其中,所述步骤S7中目标端节点主机获取灾备目标端最后应用的SCN号,查询该SCN号对应的时间点,并从该时间点开始取数启动反向同步的抽取进程。
[0010]本发明对比现有技术有如下的有益效果:本发明提供的基于GoldenGate的灾备智能切控制方法,不但安全可靠,有效避免数据丢失,并且能够在短时间内完成切换,大大缩短了业务停止生产的时间,具有自动化、智能化、完整性、一致性的特点。
【附图说明】
[0011]图1为本发明基于GoldenGate的灾备智能切控制流程示意图;
[0012]图2为本发明基于GoldenGate的多实例灾备智能切控制架构示意图。
【具体实施方式】
[0013]下面结合附图和实施例对本发明作进一步的描述。
[0014]图1为本发明基于GoldenGate的灾备智能切控制流程示意图。
[0015]请参见图1,本发明提供的基于GoldenGate的灾备智能切控制方法,包括如下步骤:
[0016]S1:在源端和灾备目标端的节点主机上分别部署GoldenGate软件进行数据同步备份;所述源端节点主机上的GoldenGate利用抽取进程和数据库日志获得数据的增量变化,将增量数据转化为GoldenGate格式并采用10:1的压缩率对数据压缩后,利用投递进程在容灾链路上直接通过TCP/IP网络传输至灾备目标端节点主机;所述目标端节点主机上的GoldenGate通过交易重组,分批加载加快数据投递的速度和效率,在亚秒级实现增量数据的复制;
[0017]S2:每次切换前,在源端停止RAC (Real Applicat1n Clusters,实时应用集群监听),避免应用系统再连接到实例中;
[0018]S3:获取源端和灾备目标端的节点主机上各实例的SPID (System Process ID,即操作系统进程ID),并自动生成KILL脚本停止各实例的SPID,断开会话,保证实例中无活动的业务进程;
[0019]S4:在源端节点主机上循环检测抽取进程,以判断数据抽取是否全部完成,完成了则停止抽取进程;
[0020]S5:在源端节点主机循环检测投递进程,以判断数据投递是否全部完成,完成了则停止投递进程;
[0021]S6:在源端节点主机启动反向同步的复制进程,并提前准备好接收反向同步的数据;为了避免数据丢失,还可在源端启动AEXTCHK检查进程,以获取G0LDENGATE同步之外产生的数据,目的为了在生产中其他操作产生的数据仍可获取出来进行同步;
[0022]S7:在目标端节点主机循环检测复制进程,以判断数据复制是否全部完成,完成了则停止正向同步的复制进程,并从当前时间开始取数启动反向同步的抽取进程;目标端节点主机可获取灾备目标端最后应用的SCN号(System Change Number),查询该SCN号对应的时间点,并从该时间点开始取数启动反向同步的抽取进程;
[0023]S8:最后在目标端节点主机上启动投递进程。
[0024]为确保生产与灾备系统切换能顺利、快速地实现,本发明可编写一套智能切换脚本,部署在各个节点中,实现无缝切换。一套脚本包含8个脚本,简介如下:
[0025]fetch_sess1n_spid.sh:多实例的RAC,获取当前节点的spid,并生成KILL脚本;
[0026]fetch_sess1n_spid_other_node.sh:获取另一节点的 spid,并生成 KILL 脚本;
[0027]kill_sess1n_spid.sh:杀进程脚本,包括当前节点和另一节点(通过ssh信任访问);
[0028]set_env.sh:设置环境变量,每个节点部署时设置;
[0029]stop_listener.sh:使用 srvctl 停止 RAC 监听;
[0030]stop_source_process.sh:检测并停止抽取、投递进程,并启动AEXTCHK抽取进程,以检查是否存在G0LDENGATE同步之外的操作;
[0031]stop_target_process.sh:检测并停止复制进程;
[0032]switch_ogg_SZtoBJ.sh:主脚本,以上脚本均由此脚本调用。
[0033]具体的实施方法如下:
[0034]1.正反向同步进程均配置好,反向进程处于stop状态;
[0035]2.抽取进程使用E开头,抽取进程的参数可参考如下:
[0036]EXTRACT xxxxxx
[0037]obey/opt/oracle/product/rdbms/11.2.0/ogg/gg_ddb2_param.0by
[0038]EXTTRAIL./dirdat/xxxxxx/ss
[0039]TRANL0G0PT10NS L0GRETENT10N DISABLED
[0040]TRANL0G0PT10NS BUFSIZE 2048000
[0041]TRANL0G0PT10NS DBLOGREADER, DBLOGREADERBUFSIZE 2048000
[0042]TRANL0G0PT10NS ALTARCHIVELOGDEST+D⑶DB2_2
[0043]TRANL0G0PT10NS EXCLUDEUSER G0LDENGATE
[0044]DDL INCLUDE MAPPED
[0045]DDLOPT1NS ADDTRANDATA
[0046]CACHEMGR CACHESIZE 8192MB
[0047]BR BRDIR/opt/oracle/ogg/ggddb, BRINTERVAL 4h
[0048]DISCARDFILE./dirrpt/xxxxxx.dsc, APPEND, MEGABYTES 100
[0049]DISCARDR0LL0VER AT 6:00
[0050]REP0RTC0UNT EVERY I HOURS, RATE
[0051]FETCH0PT
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1