GoldenGate安装部署及解决方案_第1页
GoldenGate安装部署及解决方案_第2页
GoldenGate安装部署及解决方案_第3页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、GoldenGate 安装部署及解决方案目录GoldenGate 安装部署及解决方案 错误 ! 未定义书签。1、GoldenGate 简介. 错误!未定义书签。2、文档约定和说明 . 错误 !未定义书签。3、GoldenGate 软件安装 错误 !未定义书签。GoldenGate 软件安装包下载 错误 ! 未定义书签。Windows 下安装 错误 ! 未定义书签。Linux 和 Unix 下安装 错误 ! 未定义书签。4、GoldenGate 同步基本配置 错误 !未定义书签。oracle 之间同步和 GoldenGate 基础 错误 ! 未定义书签。oracle 与 db2 同步 错误 !

2、未定义书签。oracle 与 sybase 同步 错误 ! 未定义书签。5、GoldenGate 同步方案 错误 !未定义书签。使用 GoldenGate 初始化加载. 错误 !未定义书签。一对多数据同步(广播复制). 错误!未定义书签。多对一数据同步(集中复制). 错误!未定义书签。数据转换和过滤 . 错误 !未定义书签。关于目标端高数据安全性下的GoldenGate 配置方案 错误 ! 未定义书签。GoldenGate 双向复制( active-active ) 错误 ! 未定义书签。6、GoldenGate 数据同步性能测试 错误 !未定义书签。测试中主要监测数据和监测方式 . 错误 !

3、未定义书签。测试脚本和 GoldenGate 配置 . 错误 ! 未定义书签。测试步骤 . 错误 !未定义书签。性能测试结果 . 错误 !未定义书签。7、GoldenGate 推荐配置 错误 !未定义书签。添加必要的环境参数 . 错误 !未定义书签。BATCHSQ参数 错误!未定义书签。数据库用户密码加密 . 错误!未定义书签。trail 再压缩 错误 ! 未定义书签。8、GoldenGate Troubleshooting . 错误 ! 未定义书签。一些常用的进程信息和日志的查看方式 错误 ! 未定义书签。解析 trail 文件 . 错误!未定义书签。附: GoldenGate 新版本的一个

4、特性 错误 ! 未定义书签。参考文档 . 错误!未定义书签。1、GoldenGate 简介GoldenGate 软件是一种基于日志的结构化数据复制软件,它通过解析源数据库在线日 志或归档日志获得数据的增删改变化, 再将这些变化应用到目标数据库, 实现源数据库与目 标数据库 实时 同步( real-time data synchronize )、双活 ( active-active high availability )。 GoldenGate 软件可以在异构的 IT 基础结构(包括几乎所有常用操作系统 平台和数据库平台)之间实现大量数据亚秒一级的实时复制,其复制过程简图如下:主产系统U标系统如

5、上图所示,GoldenGate的数据复制过程如下:利用捕捉进程(Capture Process) 在源系统端读取 Online Redo Log 或Archive Log,然后进行解析,只提取其中数据的变化如增、删、改操作,并将相关信息转换为Golde nGate自定义的中间格式存放在队列文件(trail )中。再利用传送进程将队列文件通过TCP/IP传送到目标系统。捕捉进程在每次读完log中的数据变化并在数据传送到目标系统后,会写检查点(checkpoint ),记录当前完成捕捉的log位置,检查点的存在可以使捕捉进程在中止 并恢复后可从检查点位置继续复制;目标系统接受数据变化并缓存到Gol

6、denGate队列当中,队列为一系列临时存储数据变化的文件,等待投递进程读取数据;Golde nGate投递进程从队列中读取数据变化并创建对应的SQL语句,通过数据库的本地接口执行,提交到数据库成功后更新自己的检查点,记录已经完成复制的位置,数据的复制过程最终完成。由此可见,GoldenGate是一种基于软件的数据复制方式,它从数据库的日志解析数据的变化(数据量只有日志的四分之一左右)。GoldenGate将数据变化转化为自己的格式,直接通过TCP/IP网络传输,无需依赖于数据库自身的传递方式,而且可以通过高达9:1的压缩率 实现大量数据的复制,并且目标端数据库是活动的对数据进行压缩,可以大大

7、降低带宽需求。在目标端,Golde nGate可以通过交易重组、分批GoldenGate提供了灵活的应用方案,基于其先进、灵活的技术架构可以根据用户需求 组成各种拓扑结构,如图所示:单向复制双向复制点对点 多业务中心广播复制数据分发集中复制数据仓库、灾备多级复制层次化金业数崔Golde nGate可以提供可靠的数据复制,主要体现在下面三点:(1 )保证事务一致性Golde nGate在灾备数据库应用复制数据库交易的顺序与在生产中心数据库上的顺序相同,并且按照相同的事务环境提交,确保在目标系统上数据的完整性和读一致性,为实时查询和事务处理创造了条件。(2)检查点机制保障数据无丢失GoldenGa

8、te的抽取和复制进程使用检查点机制记录完成复制的位置。对于抽取进程,其检查点记录当前已经抽取日志的位置和写队列文件的位置;对于投递进程,其检查点记录当前读取队列文件的位置。检查点机制可以保证在系统、网络或GoldenGate进程故障重启后数据无丢失。(3)可靠的数据传输机制Golde nGate用应答机制传输交易数据,只有在得到确认消息后才认为数据传输完成,否则将自动重新传输数据,从而保证了抽取出的所有数据都能发送到备份端。数据传输过程中支持128位加密和数据压缩功能。Oracle公司的GoldenGate产品,可以在异构的IT基础结构之间实现大量数据的秒一级 的数据捕捉、转换和投递。目前最新

9、版本为。Golde nGate可以支持几乎所有常用操作系统如和数据库平台,如下表所示:操作系统数据库MS NT, 2000, XP, Linux. Sun Solaris,Oracle, DB2, MS SQL Server, MySQL,HP-UX, IBM AIX, HP Non Stop, TRU64, IBMEn scribe, SQL/MP, SQL/MX, Sybase,z/OS,OS/390Teradata, 其他ODBC兼容数据库2、文档约定和说明为统一表示命令和便于查看,对格式作如下约定:GG_HOME表示从操作系统命令行(cmd)进入GoldenGate安装路径下执行命令。

10、GGSCI表示在GoldenGate命令环境中执行命令。SQL表示在数据库下执行 SQL语句/*/表示配置文件内容,/*不包含在内。 表示自定义参数,如自定义表名tablename特性,两者基本无差别; GoldenGate 命令行中的操作均是在 mgr 主进程 running 时进行, 当然, GoldenGate 安装部分除外。补充说明:该文档主要介绍 GoldenGate 基本使用、 GoldenGate 的各类解决方案,以及以往本人在 使用测试中总结的经验, 文中的例子和执行的命令都是参照官方文档并亲自测试执行过。 但 因个人能力所限, 错漏之处再所难免, 文档中也不可能覆盖 Gold

11、enGate 的方方面面。 而且, 因为 GoldenGate 本身提供了大量的参数,也不可能在这里一一列举,本文档中只举例了常 用的一些参数命令,关于各个参数的具体使用语法和作用,还请参照官方文档 Oracle GoldeGate Reference Guide 。3、GoldenGate 软件安装在不同的操作系统和平台上安装 GoldenGate ,需要在官网下载对应的版本。 32 位系统 和 64 位系统的安装介质虽然不同,但是在同一OS 上安装方式是一样的。GoldenGate 需要解析数据库的日志文件,所以安装位置必须要能访问到日志文件(在 线日志和归档文件) ,并具有相应的权限。G

12、oldenGate 软件安装包下载经常有人问我 GoldenGate 的下载地址,所以在这里专门说明一下。GoldenGate 软件的官方下载地址: 目前只有这个地址能下到对应 32 位操作系统的安装介质。首页如下:Welcome to the Oracle1?'已丁口 download any Oracle product that is 匚urrently available to li匚ense, choose a language or 匚门tiriu色 to export validatioi网页开头点击这个 Continue进入下载。然后下方选择同意协议之类的,点首次进入需

13、要登记一些个人信息,如名字、公司等,Continue进入搜索。搜索时如下选择:Select a Product PackOracle Fusion MiddlewarePlatform Liriuic 5(86点GO然后选择对应版本的Oracle GoldenGate 下载。GoldenGate安装包一般只有几 十兆的大小,下载还是很快的。GoldenGate除了同步软件这块,还有其他相关的产品,比如Oracle GoldenGateDirector ,用于集中图形化管理和监控;Oracle GoldenGate Veridata,用于两端同步数据质量检验。在本文档中暂不介绍。Windows下

14、安装(1) 安装 Microsoft Visual C + 2005 SP1发行包(注意Win dows操作系统需要首先下载安装Microsoft Visual C + 2005 SP1该软件也分32位和64位)。( 2)绿色安装 GoldenGate下载对应平台版本的 GoldenGate安装包,解压。然后进入操作系统命令行(cmd),进入 GoldenGate 解压路径下,执行:GG_HOME >ggsci - 进入 GoldenGate 命令窗口模式GGSCI> CREATE SUBDIRS - 建立子目录GGSCI>edit param mgr - 配置 Golden

15、Gate 主进程参数由于第一次执行该命令, 会提示创建 mgr 参数文件, 点“是” 并在文本中输入如下参数:/*PORT 7801-GoldenGate 主进程端口号DYNAMICPORTLIST 7802-7820 -GoldenGate 为进程间通讯动态分配的端口段,注意这里如果分配的 端口端少于 extract-replicat 进程对的话,会导致部分进程因通讯 失败而出错。保存,生成的参数文件保存在 GG_HOME dirprm 下然后可以启动 GoldenGate 主控制进程:GGSCI>start mgrGGSCI>info all - 查看进程状态如果进程MANAG

16、E状态显示为RUNNINGS表示主进程已在运行。至此软件安装完成。( 3)管理 GoldenGate 服务在WINDOW下还可以将 GoldenGate主进程作为系统服务进行管理,如下配置:GGSCI> edit param ./globals- 配置全局参数,注意前面的 ./ 表明与其他参数文件位置不同,该参数文件是直接位于 GoldenGate 安装路径下的输入:MGRSERVNAME <name>GoldenGate主进程端口号,<name=为自定义的系统服务名 然后退出GGSC命令行:GGSCI>exitGG_HOME > in stall adds

17、ervice addeve nts-创建服务,完成后可以直接进服务进行管理WINDOW删除 GoldenGate 服务:GG_HOME > install deleteevents deleteservice- 对应删除服务操作或者在注册表删除:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices 一般服务会以相同的名字在这里显示一个主健,直接删除相关的键值便可Linux 和 Unix 下安装(1)检查必需的 lib 包下载对应平台版本的 GoldenGate ,解压。在解压路径下执行:rootGG_HOME > # ldd ggsci

18、将列出所有需要的 lib 和当前缺少的。 GoldenGate 在 Linux 和 Unix 下安装,需要安装ORACLE勺lib环境以及$ORACLE_HOME/lib下的几个包,所以必须安装在 Oracle之后,而且 确保在环境变量中加入:export LD_LIBRARY_PATH=$ORACLE_HOME/lib(2)绿色安装 GoldenGate在解压路径下执行 ./ggsci 进行接口命令行,rootGG_HOME > # ./ggsci - 进入 GoldenGate 命令窗口模式GGSCI> CREATE SUBDIRS - 建立子目录GGSCI>edit p

19、aram mgr-配置 GoldenGate 主进程参数由于第一次执行该命令, 会提示创建 mgr 参数文件, 点“是” 并在文本中输入如下参数:PORT 7801 -GoldenGate 主进程端口号DYNAMICPORTLIST 7802-7820 -GoldenGate 为进程间通讯动态分配的端口段,注意这里如果分配的 端口端少于 extract-replicat 进程对的话,会导致部分进程因通讯 失败而出错。*/保存,生成的参数文件保存在 GG_HOME dirprm 下然后可以启动 GoldenGate 主控制进程:GGSCI>start mgrGGSCI>info al

20、l - 查看进程状态如果进程MANAGE状态显示为RUNNINGS表示主进程已在运行。至此软件安装完成。和Windows下安装的主要区别是需要确认必需的lib包,进入GGSCI接口命令行后的操作都是一致的。4、GoldenGate 同步基本配置GoldenGate 支持目前大部分主流数据库,这也是它的优势之一。下面列举了Oracle 、Db2、Sybase 之间的同步。同步测试的准备工作中,有一部分是共通的,如下:(1)在源端和目标端建立相同结构的两个表,建立主键。保证复制的对象在一开始是一 致的。(2)保证没有相关对象的触发器(会导致数据冲突的那些)或设置失效。(3)数据库需要开启必须的日志

21、模式。不同数据库的配置差异主要在这一步。据库用户给 GoldenGate 用以连接数据库。备注:分配给 GoldenGate的用户一般情况下并不需要完全的DBA权限,在官方文档上有详细的权限需求说明,但是完全按照那个配置比较繁琐。额外的,如果数据库使用ASM寸,需要sysdba权限。oracle 之间同步和 GoldenGate 基础Oracle 数据库设置首先安装好 ORACLE设置好 ORACLE_SID ORACLE_HOME环境变量。当然,推荐的做 法是在每个进程配置文件里都加上指定的环境变量参数,在后面优化配置中进行说明。Oracle 数据库需要开启归档日志,并开启最小附加日志模式。

22、SQL> select supplemental_log_data_min from v$database;- 查看是否开启了最小附加日志模式SQL> alter database add supplemental log data;- 开启最小附加日志模式实际生产应用中,最好同时打开ORACLE勺强制日志模式,以防止源数据库因直接路径加载忽略 redo 生成而导致这部分数据无法同步:SQL> select force_logging from v$database;SQL> Alter database force logging;光开启最小附加日志模式还不够,还需要

23、打开表级的补全日志,可以在GoldenGate 中使用 add trandata 命令强制重做日志记录主键值,以保证在目标端能成功复制:GGSCI> dblogin userid ddw,password ddw -GoldenGate 中登录 OARCL数据库GGSCI>add trandata ddw.<tablename> - 表名可以使用通配符GGSCI> add trandata ,nokey,cols(sampletime, objectid)- 无主键指定字段补全的示例也可以在数据库中打开:SQL> alter table <tablen

24、ame> add supplemental log data (primary key) columns;千万不要小看这步日志设置, 其实在 GoldenGate 的配置中, 这步是最容易出错的环节。如果开启DDL复制做冗灾备份,最好直接在数据库级别打开补全日志:SQL>alter database add supplemental log data (primary key,unique,foreign key) columns;检查一下,全是 YES就0K了(整个数据库级别补全)SQL> select supplemental_log_data_min, suppleme

25、ntal_log_data_pk,supplemental_log_data_ui from v$database;关于 0racle 补全日志补充说明0racle 日志( redo log )一般用于实例恢复和介质恢复,但是如果需要靠日志还原完整的DML操作信息(比如 Logmnr、Streams和这里的Goldengate ),默认记录的日志量还不 够。比如一个 UPDATE勺操作,默认redo只记录了 rowid以及被修改的字段信息,但这里 GoldenGate还原这个事务,因为不是根据rowid而是SQL层面根据唯一键值来定位记录,所以还需要将主键或者其他字段的信息附加到日志中去。 要

26、往日志中增加这些额外字段信息 的操作,就是开启补全日志,即 Add Supplemental Logging 。打开补全日志,会使数据库 的日志量增加,所以只打开需要的级别和对象即可。0racle 补全日志可以在数据库级别设置,也可以在表级别设置。在数据库级别中,补 全日志按补全的信息量,对应好几个级别:1) 最小附加日志( Minimal supplemental logging ):是开启 logmnr 的最低日志 要求,提供了行链接( chained rows )和多种数据存储(比如聚簇表、索引组 织表)的信息。在 Oracle 之后的版本中,默认都不开启。( 2) 主键补全( Prim

27、ary key supplemental logging ):在日志中补全所有主键列。 如果表中无主键,则补全一个非空唯一索引列;如果非空唯一索引键也没,那么会补全除了 LOB和LONG类型字段以外的所有列,这时就和下面的所有补全一样了。( 3) 唯一键补全( Unique key supplemental logging ):当唯一键列或位图索引列 被修改时,在日志中补全所有唯一键列或位图索引列。打开唯一键补全也会同 时打开主键补全。注意这个级别是需要条件触发的。( 4) 外键补全( Foreign Key supplemental logging ):当外键列被修改时,将在日 志中补全所有

28、外键列。这个级别也是需要条件触发的。(5) 所有补全( All supplemental logging ):在日志中补全所有字段(排除 LOB 和LONG类型)。这里对于补全日志的详细操作语句不做一一说明。数据库级别中的 5 个类型中, 除了最小附加日志级别, 都可以在表级进行设置。 除此之 外,表级还可以明确指定需要补全的列。Oracle 表级补全日志需要在最小补全日志打开的情况下才起作用,即若一个数据库没 有开最小补全日志或之前drop supplemental log data操作则即便指定了表级补全日志,实际在重做日志输出的过程中描述的记录仍只记录 rowid 和相关列值。 而要关闭

29、最小补全日 志,也必须首先关闭数据库级别的其他补全级别后,才能关闭。所以在 GoldenGate 中,对于 Oracle 数据库的日志补全要求, 至少是打开最小附加日志 和主键补全。主键补全只要在需要同步的表上开启即可。当然GoldenGate 的 add trandata语法中也可以指定补全的列,这和 Oracle 表级补全日志的功能完全一致。毕竟,日志还是 由数据库生成的, GoldenGate 并不能直接控制日志的生成方式和规则,只能根据所捕获的 数据库的日志规则而来。不同的数据库,日志补全的规则也会不同。dml同步一对一的实时同步简单配置同步流程如图:RMTHOST <targe

30、t>NetworkRepiicatrmttrail <remote trail>REPLICAT TARGETOB<rep><dsn_2>(1) 源数据库端添加提取进程(extract process )GGSCI> add extract extl,tranlog,begin now-新增抽取进程extl,基于日志方式,立即生效需要注意的是,GoldenGate中的进程名最长只能8个字符。注意,如果是在 RAC环境下,需要再加上 THREADS <n指定提取的日志 THREADGGSCI> add extract extl,tran

31、log,begin now , THREADS <n>GGSCI> edit param extl-生成并编辑同名配置文件/*extract extluserid ddworcl,password ddwrmthost mgrport 7801-抽取进程名-连接本机DB的帐号密码-目标数据库服务器地址和GG服务端口号rmttrail d:toolsGGgg10gdirdatrl-远程队列的位置(下一步建的东西)dynamicresolution- 优化参数,动态分析表结构gettruncatestable ;- 抓取 truncate 数据- 需要抽取的表,可以使用通配符然后

32、给这个提取进程创建远端队列,即图中的RMTTRAIL:GGSCI> add rmttrail d:toolsGGgg10gdirdatrl extract extl需要注意的是, 这里最后的名称 rl (可以自定义, 字母或数字)是指以后生成的 trail 文件都会以 rl 开头,如 rl000001 ,这个文件头名称最长只能 2 个字符 。如果需要在文件级 别区分队列,建议将队列创建于于不同的目录下。开启这个提取进程:GGSCI> start extlGGSCI> info all -查看所有进程状态此时 extl 进程 running 则表示已成功运行,这时开始会在前面指

33、定的目标端队列位置生成 trail 文件。如果进程出错,可以使用 view report extl 查看错误信息。( 2)目标数据库端添加复制应用进程( replicat process ) 在目标端 GoldenGate 命令行中配置复制进程:GGSCI>add replicat repl exttrail d:toolsGGgg10gdirdatrl,beginnow,nodbcheckpoint-新增复制进程,使用对应的队列rl ,即刻开始,使用文件检查点replicat repluserid ddworcl,password ddwassumetargetdefsreperror

34、 default,discard- 复制进程名- 目标数据库的帐号密码- 两台数据库数据结构一致则使用此参数- 如果复制数据出错则忽略GGSCI>edit param repl - 配置复制进程参数gettruncates-复制 truncate 操作map , target ;-映射关系,注意target前必须留一个空格-map , target , keycols (n ame), where (TYPE1 = "1")-加两横杠在配置文件中进行注释;keycols指定唯一键;where筛选数据开启复制进程:GGSCI>start replinsert ,u

35、pdate, delete至此,一个最简单的同步配置完成,对于源数据库相应表的 和truncate 操作都将通过日志捕获并同步到目标数据库。使用 datapump加入datapump后的数据传输的流程:EXTTRAIL ctoul traH >EXTRACTF1«:xtrac 亠SOURCEDB - -EXTRACT <dsn 1>s>>ReplicatL JRMTTRAILREPLICAT w TARGETDB<r-ep>RMTHOSTiNetwark这里的datapump与ORACLE0g推出的数据泵不是一个概念。在GoldenGate中

36、,datapump相当于一个次级提取进程(secondary extract )。在上面演示的同步流程中,提取进程直接 将提取的redo信息经过处理后放置到了目标端服务器上,当两者之间的网络出现故障时, 会因无法生成trail文件而导致提取进程崩溃,错误提示类似如下:2010-11-12 10:01:21 GGS ERROR 150 TCP/IP error 10061 ( 由于目标机器积极拒绝, 无法连接。 ); retries exceeded.2010-11-12 10:01:21 GGS ERROR 190 PROCESS ABENDING.而加入 datapump 后,主提取进程(即

37、第一个 extract )首先将 trail 生成在本地,然 后 datapump 读取本地 trail 再发送到目标服务器,即便网络故障,主提取进程仍然能随着 事务生成 trail 文件,而 datapump 则会暂时停止传输,等待网络通畅后在将堆积的本地 trail 文件发送至目标服务器,从而实现了断点传输的功能。 在实际应用中,每一个同步流 程都应该配置 datapump 以应对网络问题。加入 datapump 的配置:将前面 extl 参数文件中的rmthost mgrport 7801rmttrail d:toolsGGgg10gdirdatrl替换为- 本地队列文件生成位置/* e

38、xttrail d:toolsGGgg10gdirdatl1 */配置 datapump 进程:GGSCI> ADD EXTRACT pump1, EXTTRAILSOURCE <local_trail>, BEGIN <time>-<local_trail>即是对应 extl 配置文件中定义的 d:toolsGGgg10gdirdatl1GGSCI> edit param pump1 /* extract pump1userid ddw, password ddw rmthost mgrport 7801rmttrail d:toolsGGgg

39、10gdirdatr1PASSTHRU|NOPASSTHR-U- 直通模式或普通模式gettruncatestable ;*/ 直通模式用在两边表名、列名一致,可以直接映射的情况,不需要额外配置;普通模式可以配置表名列名 自定义映射, 可以加 FILTER、transformation 等,需要配置一个数据定义文件 ( data-definitionsfile )然后修改原先为提取进程配置远端队列位置:GGSCI> delete rmttrail d:toolsGGgg10gdirdatrl extract extlGGSCI> add rmttrail d:toolsGGgg10

40、gdirdatrl extract pump1然后启动extl和pump进程就OK了。使用数据定义文件GoldenGate 数据定义文件( data-definitions file ),主要用于不同数据源之间(比如下 面的 Oracle 与 DB2 之间的同步),进行数据同步时用来转换数据格式。数据定义文件主要包含 表名、字段名、字段类型、字段长度和偏移量。利用 GoldenGate 的 defgen 工具生成一个数据定义文件( data-definitions file ),大 致步骤如下:(1) 创建DEFGEN工具的参数文件(2) 运行DEFGEN工具生成数据定义文件(3) 配置GG进

41、程识别定义文件例子:GGSCI> edit param defgen - 创建 DEFGEN工具的参数文件 /*DEFSFILE <full_pathname-指定由DEFGE生成的数据定义文件的全路径和名称SOURCEDB | TARGETDB <dsn>,-oracle 不需要配置这个参数USERID <user>,PASSWORD <password> -DB2 不需要配置 PASSWORDTABLE <owner>.<table>- 分析指定表生成配置文件类似如下( ORACLE): /*USERID ddw,PA

42、SSWORD ddwTABLE ;*/然后退出GGSCI在GG安装路径下运行 DEFGEN工具:GG_HOME > defgen paramfile dirprm/配置文件默认生成在 GG_HOMEdirdef 下,不要去手动修改。如果对应表的表结构发生 更改,需要重新生成这个配置文件。然后将生成的配置文件拷贝至目标服务器的 GG_HOMEdirdef 下。修改复制进程 repl参数文件:GGSCI>edit param repl将原先的 assumetargetdefs 参数替换为GGSCI>stop replGGSCI>start repl数据定义文件的配置完成。配

43、置进程检查点( checkpoint )检查点记录了进程读写的位置信息用以数据恢复, 目的是为了防止进程因系统、 网络崩 溃而导致的数据丢失,对于 GoldenGate 保证数据同步过程中数据不丢失非常重要。 GoldenGate 的检查点由一个内部进程自动控制,与数据库检查点的概念类似。提取进程的 检查点记录它在数据源中的读取位置和队列的写出位置, 复制进程的检查点记录它读取队列 的位置。每条提取或复制进程都有自己对应的检查点信息。当 GoldenGate 的进程重启时, 由它所记录的检查点决定需要读取的队列位置。GoldenGate 的检查点信息有两种存放方式:(1)默认存放在 GGHOM

44、Edirchk 下的文件中,一个进程对应一个文件。提取进程只能使用 这种模式。不需要特殊配置。(2)存放在数据库指定的表中,需要进行如下配置:首先在 ./globals 参数文件中加入:CHECKPOINTTABLE <owner>.<table> - 指定的检查点记录表*/然后运行:GGSCI> DBLOGIN SOURCEDB <dsn>, USERID <db_user>, PASSWORD <pw>GGSCI> ADD CHECKPOINTTABLE <owner>.<table> - 生成

45、这个检查点记录表 在新增复制进程 时可以 在添加时指定 checkpointtable <owner>.<table> 替 代 nodbcheckpoint ,使用数据库记录检查点信息。ORACLE官方文档中,比较推荐将复制进程的检查点信息存放到数据库表中进行管理,认为在某些情况下能促进数据恢复。 并指出检查点信息量非常小, 而且是进行记录更新而非 记录插入,一个进程只对应一条记录, 在它特殊的检查点处理机制下不会对数据库造成影响。 个人猜想是当目标数据库崩溃还原后(特别是在不完全恢复的情况下),检查点信息能同数据库一起还原, 在数据上能利用数据库事务性与数据库保持一致

46、, 从而在数据库正常打开后 能继续进行数据同步。 但实际上并不必要, 因为数据库故障的情况多种多样, 就算检查点同 步恢复后,也不能保证直接就能启动 GoldenGate 进程。ddl 同步GoldenGate的DDL同步只支持两边一致的数据库,限制条件较多(如不能进行字段映射、转换等),具体可以参考官方文档。DDL的抓取不是通过日志抓取来捕获的,而是通过触发器来实现,所以对源数据库的性能影响要比单纯的数据抓取要大很多,可谓屏弃了GoldenGate的优势。尽量不要使用 GoldenGate的DDL复制功能,在大多数业务系统中,实 际上不会有频繁的数据库结构变动,完全可以通过手工的方式进行维护

47、。确实有大量DDL操作的环境,如果可以,还是推荐物理DG之类的替换方案;确实要使用GoldenGate的DDL复制,那么请详细参考官方文档的限制和说明。- 以上主要为个人意见,有不同看法的请无视开启DDL复制的基本配置步骤为:(1)关闭ORACLE勺回收站功能。(2) 选择一个数据库 schema存放支持DDL的GoldenGate对象,运行相应创建脚本。( 3)编辑 globals 参数文件。( 4)修改 extl 和 repl 的配置文件具体操作步骤:(1)关闭数据库回收站:SQL>alter system set recyclebin=off scope=both;( 2)编辑 g

48、lobals 参数文件:GGSCI>edit param ./globals 添加以下内容后保存:GGSCHEMA ddw-标明支持DDL勺GG对象存放在哪个schema下(3)执行创建脚本:首先需要命令行进入 GG安装目录下,然后再运行 sqlplus执行脚本,如果不进入目录下脚 本执行会报错(应该是由于 GG脚本中子脚本嵌套使用相对路径的问题所造成)。-提示输入目标- 提示输入目标 schema, 输入 initialsetup 最后输入SQL>grant GGS_GGSUSER_ROLE to ddw;-不进行该步赋权后面起进程会报错-使触发器生效( 4)修改提取进程和复制进

49、程的配置文件,分别加入 ddl include all 属性。此时 repl 必须指定 assumetargetdefs 属性,这表明只有两边数据库结构一致的情况下才可以启用DDL复制。另外,开启DDL同步不能再只映射单表了, 对整个模式下的对象都有 效。加入DDL复制之后,数据复制的lag明显增加了。清除数据库中DDL复制的设置在实际测试中, 由于我在同一个数据库中进行映射, 映射表结构不一致, 导致进程报了一系列的错误。这个时候需要把通过脚本创建的GG对象中的数据清空,安装目录下只提供了清除对象的脚本,可以如下操作:首先要求把所有的 GGS程停掉,包括 mgr进程-首先使DDL触发器失效没

50、有对应的清除脚本,但是这块不影响配置信息的清除 然后重新再创建脚本。oracle 与 db2 同步设置DB2数据库参数:db2 connect to <database> user <username> using <password>-DB2 命令行工具登陆 DB2db2 get db cfg for <database name> -查看数据库参数配置db2 update db cfg for <database name> using LOGRETAIN ON-设置LOGRETAI参数db2 update db cfg for

51、<database name> using USEREXIT ON-设置 USEREXIT参数设置完后的参数配置相关显示如下:Log retain for recovery status = RECOVERYUser exit for logging status = YES重启数据库并进行全库备份:db2 stop forcedb2 startdb2 backup db <database>指定归档路径:(OVERFLOWLOGP/参数)db2 connect to <database> user <username> using <pa

52、ssword>db2 update db cfg using overflowlogpath "<path>"GoldenGate 中执行 add trandata 补全日志:GGSCI> dblogin sourcedb sample userid db2admin,password db2admin- 除 oracle 外的数据库都需要指定 sourcedb 参数,指定数据库名GGSCI>add trandata db2admin.<tablename>其他的同步配置与 Oracle中一样,需要注意的是进程配置文件中登陆DB2的

53、部分都需要指定sourcedb这个参数(ORACL环需要,指定了反而报错)。还有就是复制进程的配置文件中一般不能指定 assumetargetdefs 参数,因为不是结构一致的数据库, 需要通过 defgen 工具生成数据定义文件进行映射。oracle 与 sybase 同步Sybase 数据库设置使用 sybase 的 SQL Advantage ,用 sa 用户登录,执行 dbcc settrunc( 'ltm', valid )修改参数。GoldenGate 中连接 SybaseGGSCI> dblogin sourcedb zhoubase userid sa p

54、assword sasasa同样做如下设置GGSCI>add trandata <user>.<tablename>其他配置和 Oracle 中一样。需要注意的是, Sybase 是个区分大小写的数据库( sql server 同样)。而 Oracle 不区分大小写,这就导致了表和字段在复制进程映射的时候,容易因大小写问题导致映射失败。 解决方法是在表名外加上双引号或者单引号,参照如下复制进程的配置文件内容:/*replicat repsyUSERID ddw, PASSWORD ddwreperror default, discarddiscardfile D:

55、,appe nd,megabytes 100MAP “” , TARGET “”;-引号区分大小写*/5、GoldenGate同步方案GoldenGate工具虽小,但它提供表级字段级同步映射,而且同步性能优异、资源消耗低,使它的灵活性很强,可以提供多种数据同步、冗灾的解决方案。使用GoldenGate初始化加载这里所指的GoldenGate初始化加载,只是它指提供的 direct load 方式,因为其他几 种官方介绍的初始化方式要么需要借助其他数据库工具(如extract->SQL*Loader ),要么中间走了完全没必要的步骤导致性能很差(如 extract->file->

56、;replicat方式),都不算纯正的GoldenGate方式。初始化加载架构:SOURCE CBTmn-fiiiiction Leg ar Loci TabicLF4Change FlplicalInitkaKca 口 .liepl .TARGET B上图中,显示了初始化加载启用了两条同步路线:上面一条是真正的in itial load负责将源数据端的数据一次性发送到目标数据库;下面一条,其实就是普通的Golde nGate因为在实际应用中,往同步进程,负责抓取初始化加载时源端数据库进行的在线数据变化。往需要在生产库(源数据库)不停机的状态下,将数据加载到备用数据库(目标数据库)中 并应用实时同步, 在数据初始化的过程中, 生产库将继续进行正常的事务操作, 所以此时需 要有抓取进程在初始化时开始将这些变化捕获,以免数据丢失。实际部署时需要注意正确的执行顺序,大致可以分为以下几步:( 1) 源端和目标端创建配置各个同步进程。( 2) 开启源端同步抓取进程(图上的 Change Extra

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论