Oracle GoldenGate Parallel Replication
在GoldenGate (以下称OGG)中REDO日志中的提交顺序决定了事务的顺序,抽取记录到trail file中。被回滚的事务将被忽略,对不需要复制的表的更改将被忽略, 事务在提交之前不会写入到trail file中,Extract过程的结果实际上是完全确定的。
Checkpoint TABLE确认事务是否应用于目标数据库, Checkpoint r行UPDATE DML被添加到每个复制的事务中,如果复制的事务失败,则不会更新检查点表,对于串行复制(parallelism = 1),表中有一行是最后一个事务的SCN,但是在ogg 12.3中不使用CHECKPOINT TABLE只允许使用Classic Replicat。
有checkpoint table, 如果重新启动目标数据库,我们确实知道哪些提交了,哪些没有提交 .事务可以在数据库重启/恢复后重新应用,没有一笔交易丢失。 从ogg 11.1后 默认情况下,异步提交是开启的,引入参数DISABLECOMMITNOWAIT (default off)
Serial apply =使用1个apply会话应用, 但是源数据库:有多个连接和多个并发事务, 这样会存在多个生产端一个消费端,这样串行应用因为无法扩展,当源库事务量大时,应用端会出现应用慢,同步延迟增加的现象。
OGG也一直在该方向创新,以提升速度,如抽取端可以使用集成抽取,可以拆成多个抽取任务,应用端可以手动拆成多个应用进程, 和Integrated Replicat、Parallel Nonintegrated Replicat、Parallel Integrated Replicat。
限制条件
引入了transaction grouping 与 transaction batching
transaction grouping 是并不改变DML 的顺序,但合并事务,减少commit的次数。Integrated Replicat 中是有GROUPTRANSOPS 参数控制,默认是1禁用, 打开 DBOPTIONS INTEGRATEDPARAMS (PARALLELISM xx) ,确认BATCHSQL未配置;Parallel Replicat 是自动控制并行度,最大并行到LOOK_AHEAD_TRANSACTIONS参数(默认10000),需要启用BATCHSQL生产,无法关闭并行度。
transaction batching 启用是有参数BATCHSQL控制(默认关闭),重新安排事务中的DML顺序以实现更高的性能, 如不是按DML顺序,而是以同以TABLE为顺序。主要是为了Classic Replicat模式开发的功能。
对于并行应用,checkpoint表需要调整记录方式如下
需要多个Checkpoint表,1个是记录 applied SCN的high/low watermark高低水位;其他记录带有应用事务的csn/事务id,一个或多个取决于应用模式,Integrated Replicat是1个table, Parallel Replicat需要多个。
为每个事务额外增加记录内容:
– Integrated Replicat: +1 additional INSERT per transaction, +1 additional DELETE per transaction
– Parallel Replicat: +1 additional INSERT per transaction, from time to time: TRUNCATE
– For non-parallel Replicat (like Classic Replicat) there could be just on update per transaction group
对于Integrated Replicat(不是Parallel Integrated Replicat),检查点表驻留在SYS Schema中
Integrated/Parallel Replicat事务依赖
OGG根据对被修改的行的分析(知道约束是什么)确定事务依赖关系。事务调度时会考虑依赖项信息——对于任何已识别的事务依赖项,提交和依赖的dml的顺序可能不会改变
建议:
如果您不了解您的应用程序-唯一的安全模式是:并行关闭模式和序列化事务,Oracle 宣称使用Parallel Replicat比Integrated Replicat 快5倍,建议在上线前做测试,目前我们有些电信客户生产使用该模式,反馈还不错。
References
Adam Leszczyński ‘s <Oracle GoldenGate Parallel Replication Internals>
目前这篇文章还没有评论(Rss)