暂无图片
暂无图片
15
暂无图片
暂无图片
2
暂无图片

GoldenGate 状态监控及自启动脚本分享

原创 JiekeXu 2024-03-25
1192

前 言

Oracle GoldenGate 是一款强大的数据同步软件,支持 1000 多种数据平台组合,本文旨在分享 Linux 平台下从 Oracle 19c 到 kafka 的数据复制。

源端: Oracle 19c,补丁 19.15,OGG 版本为 Version 19.1.0.0.4 OGGCORE_19.1.0.0.0_PLATFORMS_191017.1054_FBO
目标端:Oracle GoldenGate for Big Data Version 12.3.2.1.1 (Build 005) Version 12.3.0.1.2 OGGCORE_OGGADP.12.3.0.1.2_PLATFORMS_180712.2305

搭建过程可参考本文《使用 OGG12.3 同步 Oracle 部分表到 Kafka》

490.png

正 文

之前同事通过 Zabbix 监控并告警 OGG 的状态和延迟情况,并通过机器人告警到微信群,虽然不知道是怎么操作的,但使用着也是非常的方便,基本满足生产需求。可测试环境也没那么重视,但有时候主机断电或者莫名的重启了,Oracle 单机数据库一般都配置了开机自启动,RAC 默认情况下也会自启动,但是 OGG 则没有正常启动,这就导致了测试环境的归档已经删除了,但是 OGG 还没有启动捕获这部分日志,那么在 Integrated Redo 集成模式下就只能重建 OGG 了,经典模式还有招跳过这部分归档。

图片.png

图片.png

首先我们通过命令行交互式 ggsci PARAMFILE mon_ogg.par 检查进程状态,那么我们需要编辑 mon_ogg.par 文件,将“info all” 写入到此文件,这样执行此命令我们就可以查看到 MANAGER 和 EXTRACT 进程的状态了。

op-rac2:/ogg19c(jiekexu2)$ ggsci PARAMFILE $OGG_HOME/mon_ogg.par

Oracle GoldenGate Command Interpreter for Oracle
Version 19.1.0.0.4 OGGCORE_19.1.0.0.0_PLATFORMS_191017.1054_FBO
Linux, x64, 64bit (optimized), Oracle 19c on Oct 17 2019 21:16:29
Operating system character set identified as US-ASCII.

Copyright (C) 1995, 2019, Oracle and/or its affiliates. All rights reserved.


GGSCI (op-rac2) 1> info all


Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                           
EXTRACT     RUNNING     DPE1        00:00:00      00:00:02    
EXTRACT     RUNNING     EXT1        00:00:04      00:00:01    
复制

294.png

这样如果 MANAGER 进程没有启动,我们可以将其过滤出来,用以判断执行启动 mgr 命令。然后我们将“start MGR”写入到一个新文件 start_ogg.par,然后通过命令行 ggsci PARAMFILE start_ogg.par 启动 MANAGER 进程。

op-rac2:/ogg19c(jiekexu2)$ $OGG_HOME/ggsci PARAMFILE $OGG_HOME/mon_ogg.par | grep  MANAGER | awk '{print $2}'
RUNNING
复制

接下来我们判断 EXTRACT 进程,如果有异常状态的,不是 “RUNNNING” 状态,我们则将其追加写到 start_ogg.par 文件,如果此文件不为空,用以启动 EXTRACT 进程,当执行完后,我们需要清空 start_ogg.par 文件。

ggsci PARAMFILE mon_ogg.par | grep -v "RUNNING" | grep EXTRACT | awk '{print "start " $3}' >> start_ogg.par


ggsci PARAMFILE start_ogg.par

echo /dev/null > start_ogg.par
复制

然后我们通过操作系统级别的定时任务部署这个脚本,当数据库启动后每隔 5 分钟执行这个任务脚本即可,这里没有使用 rc.local 的原因是因为,rc.local 里数据库开启自启动和 OGG 开机自启动不是很好判断顺序,比如数据库还没有正常启动则 OGG 无法连接到数据库,进而 OGG 无法正常启动,考虑到这一点,则将自启动加到 crontab 里,定时去执行即可。如果各位大佬还有更好的办法,欢迎一起交流学习。

最后附整个脚本,你只需要修改脚本中 OGG_HOME 的路径即可。

op-rac2:/ogg19c(jiekexu2)$ more /home/oracle/monitor_ogg.sh
#!/bin/bash 

source /home/oracle/.bash_profile

# print date
date

# export OGG_HOME  ----> you need edit OGG_HOME PATH 
OGG_HOME=/ogg19c


# create ogg monitor command file
echo "info all" > $OGG_HOME/mon_ogg.par

manager_status=$($OGG_HOME/ggsci PARAMFILE $OGG_HOME/mon_ogg.par | grep  MANAGER | awk '{print $2}')  
  
# MANAGER status?
if [ "$manager_status" != "RUNNING" ]; then  
    echo "MANAGER is not running. Starting MANAGER..."  
    echo "start MGR"  >> $OGG_HOME/start_ogg.par  
else  
    echo "MANAGER is running."  
fi 

 
# create file start_ogg.par  
$OGG_HOME/ggsci PARAMFILE $OGG_HOME/mon_ogg.par | grep -v "RUNNING" | grep EXTRACT | awk '{print "start " $3}' >> $OGG_HOME/start_ogg.par  
  
# check start_ogg.par is null or not null?  
if [ -s $OGG_HOME/start_ogg.par ]; then  
    echo "start_ogg.par is not null,please exec this file..."  
    # if this file is not null,exec $OGG_HOME/ggsci PARAMFILE start_ogg.par  
    $OGG_HOME/ggsci PARAMFILE start_ogg.par
else  
    echo "start_ogg.par is null,No need to execute this command!"  
fi

> $OGG_HOME/start_ogg.par

###crontab### */5 * * * * /bin/bash /home/oracle/monitor_ogg.sh >> /home/oracle/start_ogg.log 2>&1
复制

附 目标端 REPLICAT 进程监控自启动脚本

more  /home/oracle/monitor_ogg.sh
#!/bin/bash
 
source /home/oracle/.bash_profile
export JAVA_HOME=/home/oracle/java/jdk1.8.0_181
export LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/amd64/server:$LD_LIBRARY_PATH

#print date
date

# export OGG_HOME   ----> you need edit OGG_HOME PATH 
OGG_HOME=/soft 

# create ogg monitor command file
echo "info all" > $OGG_HOME/mon_ogg.par  

manager_status=$($OGG_HOME/ggsci PARAMFILE $OGG_HOME/mon_ogg.par | grep  MANAGER | awk '{print $2}')  
  
# MANAGER status?
if [ "$manager_status" != "RUNNING" ]; then  
    echo "MANAGER is not running. Starting MANAGER..."  
    echo "start MGR"  >> $OGG_HOME/start_ogg.par  
else  
    echo "MANAGER is running."  
fi 

# create file start_ogg.par  
$OGG_HOME/ggsci PARAMFILE $OGG_HOME/mon_ogg.par | grep -v "RUNNING" | grep REPLICAT | awk '{print "start " $3}' >> $OGG_HOME/start_ogg.par
  
# check start_ogg.par is null or not null?  
if [ -s $OGG_HOME/start_ogg.par ]; then  
    echo "start_ogg.par is not null,please exec this file..."  
    # if this file is not null,exec $OGG_HOME/ggsci PARAMFILE start_ogg.par  
    $OGG_HOME/ggsci PARAMFILE $OGG_HOME/start_ogg.par  
else  
    echo "start_ogg.par is null,No need to execute this command!"  
fi

> $OGG_HOME/start_ogg.par
复制

图片.png

全文完,希望可以帮到正在阅读的你,如果觉得有帮助,可以分享给你身边的朋友,同事,你关心谁就分享给谁,一起学习共同进步~~~

❤️ 欢迎关注我的公众号【JiekeXu DBA之路】,一起学习新知识!
————————————————————————————
公众号:JiekeXu DBA之路
墨天轮:https://www.modb.pro/u/4347
CSDN :https://blog.csdn.net/JiekeXu
腾讯云:https://cloud.tencent.com/developer/user/5645107
————————————————————————————
20230831151f2d4bba0447a59a865a8b44fbc41e.png

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

怀
怀念和想念
暂无图片
3天前
评论
暂无图片 0
GoldenGate 状态监控及自启动脚本分享
3天前
暂无图片 点赞
评论
筱悦星辰
暂无图片
8月前
评论
暂无图片 0
每一次的挑战与超越里,都藏着一个愈发从容自信的自己。
8月前
暂无图片 点赞
评论