OGG维护优化脚本(一)-需求分析篇
这套维护优化脚本,是我在业余时间编写的,专门用于针对goldengate数据同步工具的脚本
主要原因还是本人有点懒不喜欢繁琐的手动操作。所以借助shell脚本来减低自己的工作量
部分参考了一些网络大牛的shell脚本设计
因为离职的缘故估计以后职业生涯中可能不会用到,因此将该脚本的设计方案以及具体内容共享出来
给各位网友学习和参考
因为能力问题部分功能可能写的比较粗糙,希望各位别见怪。欢迎各位提出自己意见。谢谢各位
我会慢慢更新博文完善内容。
一、脚本设计目的
我在进行OGG的运维工作,会遇到以下问题
1> 加表步骤繁琐
部分需求提供表存在表格式不规范,已经重复配置,导致加表时需花费时间进行重复配置确认
2> 因应用频繁修改表结构导致目标端频繁异常中断,同时影响进程内其他表的正常同步
3> 因维护需要停止进程操作中,遇到长事务过多,导致比较繁琐的跳过长事务操作。
4> 因数据库异常导致的进程非正常延时,导致数据同步滞后,同时因监控未能及时通知,导致归档文件被备份清理导致的进程中断
5> 因线路增加导致后期运维(注释加表)操作日益繁琐。同时OGG配置信息过于混乱,难以统一查询
因此需要通过有效的辅助手段优化或改善目前运维中会遇到的问题
二、脚本设计思路
使用脚本直接整合重复表过滤以及附加日志添加操作。
1.优化大批量新增表需求的加表操作
直接操作prm文件
在编辑原文件时自动备份,确保因为误操作导致异常后可以正常进行恢复
每一步操作都有日志记录确保可追查操作人
配有参数条件的表需要特别手动调整
注:该脚本需要对所有进程进行格式注释配置,方能生效
大概脚本功能ER图(仅为需求设计,部分功能已经完成,部分尚未完成)
2.单表一键插入
这是根据多表批量插入脚本测试后单独设计的,针对少量加表需求的脚本
可以按照指令 表名区域名 操作用户名
的格式快速插入进程,并完成附加日志的增加操作
该脚本仅针对EXTRACT和PUMP进程,无法对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文件进行格式注释配置,方能生效(详见后面的说明),同时需配置源端的计划任务,目标端的自动重启参数确保写入进程因为数据格式异常中断后,能够重启读取新的定义文件