千家信息网

OGG维护优化脚本(一)-需求分析篇

发表于:2024-11-22 作者:千家信息网编辑
千家信息网最后更新 2024年11月22日,这套维护优化脚本,是我在业余时间编写的,专门用于针对goldengate数据同步工具的脚本主要原因还是本人有点懒不喜欢繁琐的手动操作。所以借助shell脚本来减低自己的工作量部分参考了一些网络大牛的s
千家信息网最后更新 2024年11月22日OGG维护优化脚本(一)-需求分析篇


这套维护优化脚本,是我在业余时间编写的,专门用于针对goldengate数据同步工具的脚本

主要原因还是本人有点懒不喜欢繁琐的手动操作。所以借助shell脚本来减低自己的工作量

部分参考了一些网络大牛的shell脚本设计

因为离职的缘故估计以后职业生涯中可能不会用到,因此将该脚本的设计方案以及具体内容共享出来

给各位网友学习和参考


因为能力问题部分功能可能写的比较粗糙,希望各位别见怪。欢迎各位提出自己意见。谢谢各位


我会慢慢更新博文完善内容。


一、脚本设计目的

我在进行OGG的运维工作,会遇到以下问题

1> 加表步骤繁琐

部分需求提供表存在表格式不规范,已经重复配置,导致加表时需花费时间进行重复配置确认

2> 因应用频繁修改表结构导致目标端频繁异常中断,同时影响进程内其他表的正常同步

3> 因维护需要停止进程操作中,遇到长事务过多,导致比较繁琐的跳过长事务操作。

4> 因数据库异常导致的进程非正常延时,导致数据同步滞后,同时因监控未能及时通知,导致归档文件被备份清理导致的进程中断

5> 因线路增加导致后期运维(注释加表)操作日益繁琐。同时OGG配置信息过于混乱,难以统一查询

因此需要通过有效的辅助手段优化或改善目前运维中会遇到的问题


二、脚本设计思路

使用脚本直接整合重复表过滤以及附加日志添加操作。


1.优化大批量新增表需求的加表操作

直接操作prm文件

在编辑原文件时自动备份,确保因为误操作导致异常后可以正常进行恢复

每一步操作都有日志记录确保可追查操作人

配有参数条件的表需要特别手动调整

注:该脚本需要对所有进程进行格式注释配置,方能生效

大概脚本功能ER图(仅为需求设计,部分功能已经完成,部分尚未完成)



2.单表一键插入

这是根据多表批量插入脚本测试后单独设计的,针对少量加表需求的脚本

可以按照指令 表名区域名 操作用户名

的格式快速插入进程,并完成附加日志的增加操作

该脚本仅针对EXTRACTPUMP进程,无法对REPLICAT进程进行操作。

大概脚本功能ER


3.跳过长事务

正常运维中,每次加表或者修改EXTRACT配置后,必须对每个进程进行启停

以对配置生效。但是因为数据库长事务导致进程必须进行长事务跳过操作,才能正常停止。

如果长事务过多,该操作较为繁琐,需要通过showtrans获取长事务信息,再比对,修改成指令后于ggsci内执行

因此专门设计该脚本用于自动化的对EXTRACT进程进行长事务跳过操作


4.批量注释

用于应对业务取消相关表同步配置的需求

因为部分业务方需要对源端进行历史数据清理,因为清理操作时大量的delete或者update操作会导致大批量的归档文件生成。可能导致数据链路的高延时。

因此需要对已配置的表信息进行注释处理

因为数据清理量大时,表数量可能会达到40-50

一张张的加注释肯定会把自己累的发飙的,所以需求时设计了该个批量注释脚本


5.批量取消注释

该脚本功能与批量注释脚本功能相反

主要用于应对应用数据清理后要求取消注释的操作



6.信息上传

这个脚本专门用于发送OGG生成的定义文件,日志,或者其他相关信息到指定的目标机器

可作为同步定义文件,日志分类整理或者整理配置信息的辅助功能脚本。可以在其他优化脚本中以指定格式被调用

因为是通过SSH协议发送,因此需要在防火墙安全策略上做出相应配置才能正常发送

同时可以通过计划任务的方式定时执行



7.进程配置信息查询

该脚本通过进程内人为填写的进程INFO信息,获取并整理为进程详细配置信息表

包括源端,源端IP,发送目标端及IP,定义文件等等信息(可根据需求调整)

分为本机查询和上传用HTML2个版本

8.定义文件自动同步

因为源端与目标端存在表结构的异常,因此OGG通过定义文件来确保数据能够正常同步

但是因为目前运维中,部分源端的开发人员经常不经预先提醒的频繁修改表结构

或因为定义文件的损坏,配置错误,导致目标端replicate进程异常。

以致目标端trail文件积压,导致磁盘空间告警等连锁系统异常问题。


因此通过定义文件自动同步脚本,可以实时的更新定义文件,确保目标端replicate进程的正常运行

注:该脚本需要对定义文件生成prm文件进行格式注释配置,方能生效(详见后面的说明),同时需配置源端的计划任务,目标端的自动重启参数确保写入进程因为数据格式异常中断后,能够重启读取新的定义文件

0