GoldenGate教程FG088-OGG数据一致性校验自动化脚本开发实战
目录大纲
- Part01-基础概念与理论知识
- 1.1 数据一致性校验原理
- 1.2 OGG数据校验工具
- Part02-生产环境规划与建议
- 2.1 系统硬件要求
- 2.2 校验策略设计
- Part03-生产环境项目实施方案
- 3.1 脚本开发设计
- 3.2 脚本实现
- Part04-生产案例与实战讲解
- 4.1 表级校验实战
- 4.2 全库校验实战
- Part05-风哥经验总结与分享
- 5.1 常见问题与解决方案
- 5.2 最佳实践建议
内容简介
本篇文章介绍OGG数据一致性校验自动化脚本的开发方法,包括校验原理、脚本设计、实现和使用等。风哥教程参考GoldenGate官方文档数据一致性校验指南。
Part01-基础概念与理论知识
1.1 数据一致性校验原理
数据一致性校验原理:
- 比较源端和目标端数据的差异
- 使用校验工具生成数据指纹或校验和
- 对比源端和目标端的校验结果
- 识别并修复数据不一致问题
1.2 OGG数据校验工具
OGG提供的数据校验工具:
- DEFGEN:生成表定义文件
- VERIFY:数据一致性校验工具
- LOGDUMP:分析trail文件
更多视频教程www.fgedu.net.cn
Part02-生产环境规划与建议
2.1 系统硬件要求
2.2 校验策略设计
校验策略设计:
- 全量校验:定期对所有表进行校验
- 增量校验:只对变更的数据进行校验
- 抽样校验:对部分数据进行抽样校验
- 重点表校验:对关键业务表进行重点校验
Part03-生产环境项目实施方案
3.1 脚本开发设计
脚本设计思路:
- 连接源端和目标端数据库
- 获取表列表
- 对每个表执行校验
- 生成校验报告
- 发送告警通知
3.2 脚本实现
数据一致性校验脚本:
# 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: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
# 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: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 最佳实践建议
- 定期执行数据一致性校验
- 对关键业务表进行更频繁的校验
- 配置自动化脚本,减少人工干预
- 建立数据不一致的应急处理流程
- 定期优化校验脚本,提高性能
更多学习教程公众号风哥教程itpux_com
from GoldenGate视频:www.itpux.com
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
