GBase 8a
运维管理
文章

V862版本实时同步的中间表快速删除,引起ddl 任务失败或积压问题

发表于2024-03-19 13:50:2591次浏览3个评论

实时同步的中间表快速删除,引起ddl 任务失败或积压问题

表现:

gcadmin 查看有状态1 的情况,代表数据不一致。gcadmin showdmlevent, showdmlstorageevent,showddlevent 有同步event失败。
V862R33之前的版本,由于实时同步入库数据表比较多,同步过快,会一定程度积压同步event, 当数量到达一定程度,会导致数据库变慢,甚至历史有引起OOM的情况,是这个问题导致。

原因:

由于实时同步使用的中间表快速删除数据,或者drop数据,插入数据等,同步的数据的事件会失败,长时间积压,会引起数据库工作不正常,出现一些资源不足的情况。

解决方法:

定时清除相应的失败的event即可

实现方法:

实用shell十分钟查看一下状态,状态结果有临时表event失败的情况时,就进行清理,实现代码如下:
见74节点的/home/gbase/clear_event.sh 脚本:

#! /bin/sh

source /home/gbase/.gbase_profile
cd $HOME

INFO_FILE=$HOME/gbevent.out
LOG_FILE=$HOME/clearevent.out

## 检查ddlevent输出到文件:
gcadmin showddlevent |grep ObjectName > $INFO_FILE
NOW_TIME=`date '+%Y-%m-%d %H:%M:%S'`

## 循环判断是否有临时表的event失败,有则处理:
while read line
do
    array=(${line//:/ })
    if [[ ${array[1]} == *.__* ]];then
       echo  "start clear ${array[1]} event"
       python -c "import gcware; gcware.clearddlfevent('${array[1]}')"
       echo "clear ${array[1]} at ${NOW_TIME}" >>$LOG_FILE
    fi
done < $INFO_FILE
#echo "clear ddlevent done!"  >>$LOG_FILE


## 检查dmlevent输出到文件:
gcadmin showdmlevent |grep ObjectName > $INFO_FILE
NOW_TIME=`date '+%Y-%m-%d %H:%M:%S'`

## 循环判断是否有临时表的event失败,有则处理:
while read line
do
    array=(${line//:/ })
    if [[ ${array[1]} == *.__* ]];then
       echo  "start clear ${array[1]} event"
       python -c "import gcware; gcware.cleardmlfevent('${array[1]}')"
       echo "clear ${array[1]} at ${NOW_TIME}" >>$LOG_FILE
    fi
done < $INFO_FILE
#echo "clear dmlevent done!"  >>$LOG_FILE

gcadmin showdmlstorageevent |grep ObjectName > $INFO_FILE
NOW_TIME=`date '+%Y-%m-%d %H:%M:%S'`
while read line
do
    array=(${line//:/ })
    if [[ ${array[1]} == *.__* ]];then
       echo  "start clear ${array[1]} event"
       python -c "import gcware; gcware.cleardmlstoragefevent('${array[1]}')"
       echo "clear ${array[1]} at ${NOW_TIME}" >>$LOG_FILE
    fi
done < $INFO_FILE
#echo "clear dmlstorageevent done!"  >>$LOG_FILE

评论

登录后才可以发表评论
崔哥发表于 9个月前
感谢分享
千番发表于 6个月前
新版本参数有变化,clear函数增加了vcname参数
GBase用户51820发表于 2个月前
加油