1. 首页 > GoldenGate教程 > 正文

GoldenGate教程FG088-OGG数据一致性校验自动化脚本开发实战

目录大纲

内容简介

本篇文章介绍OGG数据一致性校验自动化脚本的开发方法,包括校验原理、脚本设计、实现和使用等。风哥教程参考GoldenGate官方文档数据一致性校验指南。

Part01-基础概念与理论知识

1.1 数据一致性校验原理

数据一致性校验原理:

  • 比较源端和目标端数据的差异
  • 使用校验工具生成数据指纹或校验和
  • 对比源端和目标端的校验结果
  • 识别并修复数据不一致问题

1.2 OGG数据校验工具

OGG提供的数据校验工具:

  • DEFGEN:生成表定义文件
  • VERIFY:数据一致性校验工具
  • LOGDUMP:分析trail文件

更多视频教程www.fgedu.net.cn

Part02-生产环境规划与建议

2.1 系统硬件要求

风哥提示:数据一致性校验需要额外的CPU和内存资源,生产环境建议配置至少8核CPU、32GB内存。

2.2 校验策略设计

校验策略设计:

  • 全量校验:定期对所有表进行校验
  • 增量校验:只对变更的数据进行校验
  • 抽样校验:对部分数据进行抽样校验
  • 重点表校验:对关键业务表进行重点校验

Part03-生产环境项目实施方案

3.1 脚本开发设计

脚本设计思路:

  • 连接源端和目标端数据库
  • 获取表列表
  • 对每个表执行校验
  • 生成校验报告
  • 发送告警通知

3.2 脚本实现

数据一致性校验脚本:

#!/bin/bash
# ogg_data_consistency_check.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn

# 配置参数
SOURCE_DB=”fgedudb”
SOURCE_USER=”ogg”
SOURCE_PASS=”ogg”
TARGET_DB=”fgedudw”
TARGET_USER=”ogg”
TARGET_PASS=”ogg”
TABLE_LIST=”fgedu.employee fgedu.department fgedu.customer”
LOG_FILE=”/GoldenGate/app/ogg/logs/consistency_check.log”

# 初始化日志
echo “$(date ‘+%Y-%m-%d %H:%M:%S’) – Starting data consistency check” > $LOG_FILE

# 遍历表列表进行校验
for TABLE in $TABLE_LIST; do
echo “$(date ‘+%Y-%m-%d %H:%M:%S’) – Checking table: $TABLE” >> $LOG_FILE

# 获取源端数据计数
SOURCE_COUNT=$(sqlplus -S ${SOURCE_USER}/${SOURCE_PASS}@${SOURCE_DB} << EOF set heading off set feedback off select count(*) from $TABLE; exit; EOF ) # 获取目标端数据计数 TARGET_COUNT=$(sqlplus -S ${TARGET_USER}/${TARGET_PASS}@${TARGET_DB} << EOF set heading off set feedback off select count(*) from $TABLE; exit; EOF ) # 比较计数 if [ "$SOURCE_COUNT" -eq "$TARGET_COUNT" ]; then echo "$(date '+%Y-%m-%d %H:%M:%S') - Table $TABLE: OK (Count: $SOURCE_COUNT)" >> $LOG_FILE
else
echo “$(date ‘+%Y-%m-%d %H:%M:%S’) – Table $TABLE: ERROR (Source: $SOURCE_COUNT, Target: $TARGET_COUNT)” >> $LOG_FILE
# 发送告警
echo “Data inconsistency detected in table $TABLE” | mail -s “OGG Data Consistency Alert” admin@fgedu.net.cn
fi
done

echo “$(date ‘+%Y-%m-%d %H:%M:%S’) – Data consistency check completed” >> $LOG_FILE

学习交流加群风哥微信: itpux-com

Part04-生产案例与实战讲解

4.1 表级校验实战

# 执行表级校验
$ sh ogg_data_consistency_check.sh

2024-01-01 10:00:00 – Starting data consistency check
2024-01-01 10:00:01 – Checking table: fgedu.employee
2024-01-01 10:00:02 – Table fgedu.employee: OK (Count: 1000)
2024-01-01 10:00:03 – Checking table: fgedu.department
2024-01-01 10:00:04 – Table fgedu.department: OK (Count: 10)
2024-01-01 10:00:05 – Checking table: fgedu.customer
2024-01-01 10:00:06 – Table fgedu.customer: ERROR (Source: 500, Target: 499)
2024-01-01 10:00:07 – Data consistency check completed

4.2 全库校验实战

# 修改脚本,支持全库校验
$ vi ogg_data_consistency_check.sh

#!/bin/bash
# ogg_data_consistency_check.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn

# 配置参数
SOURCE_DB=”fgedudb”
SOURCE_USER=”ogg”
SOURCE_PASS=”ogg”
TARGET_DB=”fgedudw”
TARGET_USER=”ogg”
TARGET_PASS=”ogg”
SCHEMA=”fgedu”
LOG_FILE=”/GoldenGate/app/ogg/logs/consistency_check.log”

# 初始化日志
echo “$(date ‘+%Y-%m-%d %H:%M:%S’) – Starting full database consistency check” > $LOG_FILE

# 获取表列表
TABLE_LIST=$(sqlplus -S ${SOURCE_USER}/${SOURCE_PASS}@${SOURCE_DB} << EOF set heading off set feedback off select table_name from all_tables where owner = upper('$SCHEMA'); exit; EOF ) # 遍历表列表进行校验 for TABLE in $TABLE_LIST; do FULL_TABLE="$SCHEMA.$TABLE" echo "$(date '+%Y-%m-%d %H:%M:%S') - Checking table: $FULL_TABLE" >> $LOG_FILE

# 获取源端数据计数
SOURCE_COUNT=$(sqlplus -S ${SOURCE_USER}/${SOURCE_PASS}@${SOURCE_DB} << EOF set heading off set feedback off select count(*) from $FULL_TABLE; exit; EOF ) # 获取目标端数据计数 TARGET_COUNT=$(sqlplus -S ${TARGET_USER}/${TARGET_PASS}@${TARGET_DB} << EOF set heading off set feedback off select count(*) from $FULL_TABLE; exit; EOF ) # 比较计数 if [ "$SOURCE_COUNT" -eq "$TARGET_COUNT" ]; then echo "$(date '+%Y-%m-%d %H:%M:%S') - Table $FULL_TABLE: OK (Count: $SOURCE_COUNT)" >> $LOG_FILE
else
echo “$(date ‘+%Y-%m-%d %H:%M:%S’) – Table $FULL_TABLE: ERROR (Source: $SOURCE_COUNT, Target: $TARGET_COUNT)” >> $LOG_FILE
# 发送告警
echo “Data inconsistency detected in table $FULL_TABLE” | mail -s “OGG Data Consistency Alert” admin@fgedu.net.cn
fi
done

echo “$(date ‘+%Y-%m-%d %H:%M:%S’) – Full database consistency check completed” >> $LOG_FILE

# 执行全库校验
$ sh ogg_data_consistency_check.sh

2024-01-01 11:00:00 – Starting full database consistency check
2024-01-01 11:00:01 – Checking table: fgedu.employee
2024-01-01 11:00:02 – Table fgedu.employee: OK (Count: 1000)
2024-01-01 11:00:03 – Checking table: fgedu.department
2024-01-01 11:00:04 – Table fgedu.department: OK (Count: 10)
2024-01-01 11:00:05 – Checking table: fgedu.customer
2024-01-01 11:00:06 – Table fgedu.customer: OK (Count: 500)
2024-01-01 11:00:07 – Checking table: fgedu.sales
2024-01-01 11:00:08 – Table fgedu.sales: OK (Count: 10000)
2024-01-01 11:00:09 – Full database consistency check completed

学习交流加群风哥QQ113257174

Part05-风哥经验总结与分享

5.1 常见问题与解决方案

  • 问题1:校验性能问题

    解决方案:使用增量校验,减少校验时间
  • 问题2:数据不一致

    解决方案:分析不一致原因,重新同步数据
  • 问题3:脚本执行失败

    解决方案:检查数据库连接,确保权限正确

5.2 最佳实践建议

  • 定期执行数据一致性校验
  • 对关键业务表进行更频繁的校验
  • 配置自动化脚本,减少人工干预
  • 建立数据不一致的应急处理流程
  • 定期优化校验脚本,提高性能
风哥提示:在生产环境中,建议将数据一致性校验脚本加入到crontab中,定期自动执行。

更多学习教程公众号风哥教程itpux_com

from GoldenGate视频:www.itpux.com

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息