goldengate回切switchback 与数据校验/验证/比对
回切步骤(1)
恢复生产系统数据库服务,如果数据库可以直接恢复,只需要处理数据增量同步,如果数据库本身不可恢复,需要从应急系统向生产系统进行全量数据初始化
在生产数据库上禁用触发器和数据约束
启动生产数据库的数据投递进程,从应急数据库向上产数据库同步数据
应急系统积压的数据处理完毕,生产系统数据实现与应急数据库的同步
停止应用运行,确认数据已经完全同步回生产系统(数据对比见下文)
启动生产系统的数据捕获进程
启用生产系统数据库的触发器和数据约束
重置生产系统数据库的Sequence
修改应用的数据源配置到生产系统数据库
启动应用
禁用应急数据库的触发器和数据约束
确认应急数据库的数据同步配置包含Sequence,启动应急数据库的数据投递进程
监控数据同步情况和系统运行情况。
回切步骤(2)
在生产端, 停止旧的extract进程
在生产端,禁止和复制表相关的cascade constraints,disable表的外键,修改表的强制自增列为默认自增列
在生产端, 添加、配置并启动replicat进程,准备应用来自于应急端的数据
在应急端, 添加并启动data pumb进程, 将增量数据传送到生产端
在应急端,启动监测日志extract进程,扑捉数据库新生成的数据,并传递给data pump.
在生产端和应急端,观察数据同步情况,如果数据大致持平那么
在应急端, 停止业务应用
在生产端,观察数据是否已经完全同步(数据对比见下文)
在生产端, 如果数据已经完全同步, 则停止并删除replicat
在生产端,启用和复制表相关的cascade constraints,和相关外键约束
在生产端,添加并启动extract进程,用于捕获生产端的增量数据
在生产端, 启用业务应用
在应急端, 停止extract进程和data pumb 进程
在应急端,禁止和复制表相关的cascade constraints
在应急端,添加并启动replicat
在生产端,添加并启动data pumb,将增量数据同步到应急端
回切前的数据比对
数据比对的总体方案
数据比对的目的是:确认应急库上所有的更新是否都已经被应用到生产端,即验证应急与生产库的数据一致性。
经过与国内售前、售后部门多个资深GoldenGate工程师的深入交流,对于VLDB,只能采用一种基于客户业务数据的比对方案,即:
根据表中数据的性质,将全部进行复制的表进行分类。
每种类别,采用不同的方式进行比对。
回切前的数据比对
数据复制中的比对
应急库的数据是动态的。
在不停止GoldenGate的情况下,生产库的数据也是动态的。
一种比对方案是:计算并比较日志表中历史记录的数量,也可以比较某些字段的sum值。
比如,可以将按日期字段进行分区的表作为日志表。
将分区字段作为查询条件,计算记录数。
select count(*)
where part_key between to_date( ‘20121028’ ) and to_date( ‘20121029’ )
回切前的数据比对
回切前的比对
在停止了应用、源库的数据不再被更改后,对比应急库与生产库。
数据已经为静态的。
一种分类比对方案是:
数据类型 | | | | 客户资料表 | | | • 对比全表的记录数; • 对于关键字段(比如具有账户金额性质的字段)获取全部记录的 sum 值,再进行比对。 | 码表、其它小表 | | | 利用 select minus 语句,对于源、目标库执行两遍全表的数据对比(分别为从源到目标、从目标到源)。 | 日志表、其它大表 | | | |
两端数据不一致的排查与解决
1.数据复制本身的延时
2.目标库数据库内部存在内部导致修改数据的对象和机制
3.操作系统上的jobScheduler
4.OGG的错误处理模式设置
5.修改OGG的检查点
6.OGG配置的逻辑错误
7.OGG配置参数的正确性
8.其它可能导致数据不一致的因素 如人工误操作
解决方案 1.人工补足少量的数据
2.执行部分表的初始化
3.全部重新初始化
|