免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 11637 | 回复: 14
打印 上一主题 下一主题

写了一个复制服务器的监控脚本, 大家提提意见 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-12-17 10:56 |只看该作者 |倒序浏览
写了一个复制服务器的监控脚本, 放在crontab中, 首先监控repserver,rsm是否正常运行,如果down掉, 则重新启动进程
否则, 继续执行admin who_is_down语句, 将输出结果放到一个文件中, 逐行分析时候是否存在指定的复制关系, 有的话
则形成resume connection to "复制关系“的语句, 然后执行此语句。
#!/bin/ksh

HOME_DIR=/export/home/sybaserep
LD_LIBRARY_PATH=/export/home/sybaserep/OCS-12_5/lib:/export/home/sybaserep/OCS-12_5/lib3p:
export HOME_DIR LD_LIBRARY_PATH

PROCESS_LIST=$HOME_DIR/script/process_list
LOG=$HOME_DIR/script/log
TMPFILE=$HOME_DIR/script/tmpfile
REP_CONN_LIST=$HOME_DIR/script/rep_conn_lst

DOWN="NO"

while read LINE
do
    ps -ef | grep `echo $LINE | awk '{print $1}'` | grep -v grep
    if [ "$?" = 0 ]
    then
        DOWN = "YES"
        process_name=`echo $LINE | awk '{print $1}'`
        echo "$process_name failed at `date`" >> $LOG
        start_process=`echo $LINE | awk '{print $2" "$3}'`
        $start_process
        echo "$process_name restart at `date`" >> $LOG
        echo "--------------------------------" >> $LOG
        sleep 60
    fi
done < $PROCESS_LIST

if [ $DOWN = "YES" ]
then
    exit 1
fi

eval $HOME_DIR/OCS-12_5/bin/isql -Usa -Pxxxxxxxx -Sxxxxxxxx -i$HOME_DIR/script/getdown.sql > $TMPFILE

while read REP_CONN
do
    cat $TMPFILE | grep $REP_CONN
    echo "cat" >> $LOG
    if [ "$?" != 0 ]
    then
        sql="resume connection to $LINE"
        echo $sql > $TMP_DIR/script/resume.sql
        echo "go" >> $TMP_DIR/script/resume.sql
        eval $HOME_DIR/OCS-12_5/bin/isql -Usa -Pxxxxxxxx -Sxxxxxxxx -i$HOME_DIR/script/resume.sql >> $LOG
        sleep 30
    fi
done < $REP_CONN_LIST

date >> $LOG

论坛徽章:
0
2 [报告]
发表于 2007-12-17 12:36 |只看该作者
不错!
建议加上对rep 和db server的日志分析,例如,如果是duplicate key,queue 等问题导致的suspend等问题,resume依然还是会报错的,针对几个常见的错误进行一些常规处理会更加完美!

论坛徽章:
0
3 [报告]
发表于 2007-12-17 13:22 |只看该作者
斑竹, 有个疑问, 就比如说duplicate key这方面的问题, 如果主点的数据表有主键, 那么在主点的操作不会成功的,这个操作就应该不会传到备点啊

还有dbserver的分析也应该是ftp到主点或备点的服务器上取下来再分析吧

论坛徽章:
0
4 [报告]
发表于 2008-01-04 10:08 |只看该作者
部分同意,很多时候如果queue设备本身没有问题,down的connection通常因为数据不一致(总会有人不小心动过备点的数据)或者主点备点的索引有点区别造成,往往在实际应用中直接resume是成功不了的,倒是建议可以先resume ... skip tran,这样connection能up的可能性更大一点,再写点脚本去分析exception里面的语句或者数据库errorlog

[ 本帖最后由 wufeiwf 于 2008-1-4 10:10 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2008-01-04 11:16 |只看该作者
在未查清DOWN的原因前直接resume ... skip tran比较危险,易造成两边的数据不一致.

论坛徽章:
0
6 [报告]
发表于 2008-01-04 11:35 |只看该作者
skip tran是不安全,但是实际运行中就有可能已经两边数据不一致而造成的down,不skip也不行,除非手工处理,而且一定是要检查errorlog,总之不是简单的一个resume就能自动处理的,还是有比较多的情况要考虑。这种问题不能出现次数太多,否则累死了,而且系统说明用得有问题,另外在业务繁忙每天数据量大的复制系统中,事务的单位一定要尽量小,否则巨大的事务下的partition会成为噩梦。

论坛徽章:
0
7 [报告]
发表于 2008-01-09 17:44 |只看该作者

上海寻找Sybase DBA

sky_walker1011 @sina.com

论坛徽章:
0
8 [报告]
发表于 2008-05-05 15:53 |只看该作者
谢谢楼主了

论坛徽章:
7
数据库技术版块每日发帖之星
日期:2015-08-09 06:20:00数据库技术版块每日发帖之星
日期:2015-11-03 06:20:00数据库技术版块每日发帖之星
日期:2016-02-20 06:20:00数据库技术版块每日发帖之星
日期:2016-07-13 06:20:00数据库技术版块每日发帖之星
日期:2016-07-31 06:20:00数据库技术版块每日发帖之星
日期:2016-08-01 06:20:00数据库技术版块每日发帖之星
日期:2016-08-18 06:20:00
9 [报告]
发表于 2008-07-18 09:32 |只看该作者
写的很好,但是不能不说这个脚本不安全。
首先suspect的可能性可不光connection一种,而就算只考虑connection fail的话,也不可能只会因为duplicated key造成的resume connection fail。因为也会出现大型tran,产生大量数据将queue塞满,或者lack of mutex,num of threads...都会造成connection thread down.而这个时候对应的解决方法是configure replication server '...'或resume distributor,甚至add partition...如果仅采用一种skip tran应对的话,会导致不可预知的数据丢失。

不过楼主的想法还是很有借鉴意义的,感谢楼主。

论坛徽章:
0
10 [报告]
发表于 2008-07-18 09:53 |只看该作者
问下,复制稳定吗??还有价格如何?
就是因为稳定性,和价格原因.我们一直没采用这个办法
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP