TimesTen Active standby切换启停脚本

1 篇文章 0 订阅
1 篇文章 0 订阅

################start_tt.sh#######################

#! /bin/sh

#获取tt的状态,
#  若为standby,则call ttrepstateset('ACTIVE'),exit 0,表示正常
#  若为active,exit 0,表示正常
#  若未idle,exit 1,表示异常,res启动失败,切换res至对端节点
# mod by jzh at June 18,2012


FLAG_DIR="/etc/hacmp"
TT_HOME="/tt/TimesTen/tt60"
TT_USER="tt"
TT_DSNAME="ocs"


#check tt(daemon & ram) status
tt_status=0
tt_status=`su $TT_USER -c "echo 'select 1+1 from dual;'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1"|grep "< 2 >"|wc -l`


if [ $tt_status -eq 0 ];then   #tt status abnormal
 #check and start daemon 
  ds_status=`su $TT_USER -c "$TT_HOME/bin/ttstatus 2>&1" |grep "Could not connect to the TimesTen daemon"|wc -l`
  if [ $ds_status -eq 1 ];then  #daemon Abnormal
     su $TT_USER -c "$TT_HOME/bin/ttdaemonadmin -start 2>&1"   #start daemon
  fi;   
fi;




 #check and start ram 
  ds_status=1 
  ram_status=0
  ds_status=`su $TT_USER -c "$TT_HOME/bin/ttstatus 2>&1" |grep "Could not connect to the TimesTen daemon"|wc -l` 
  ram_status=`su $TT_USER -c "echo 'select 1+1 from dual;'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1"|grep "< 2 >"|wc -l`
  
  if [ $ds_status -eq 0 ] && [ $ram_status -eq 0 ];then
     su $TT_USER -c "$TT_HOME/bin/ttadmin -rampolicy always $TT_DSNAME 2>&1"   #ram load
  fi;
 
 #check and start rep 
  ram_status=0
  rep_status=0
  ram_status=`su $TT_USER -c "echo 'select 1+1 from dual;'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1"|grep "< 2 >"|wc -l`
  rep_status=`su $TT_USER -c "$TT_HOME/bin/ttstatus" |grep "Replication agent is running"|wc -l`
  
  if [ $ram_status -eq 1 ] && [ $rep_status -eq 0 ];then  
     su $TT_USER -c "$TT_HOME/bin/ttadmin -reppolicy always $TT_DSNAME 2>&1"   #rep start
  fi;
 
 #check cserver
  if [ `ps -ef|grep 'ttcserver -verbose' |grep -v 'grep'|wc -l` -eq 0 ];then
    su $TT_USER -c "$TT_HOME/bin/ttdaemonadmin -startserver 2>&1"  #start cserver
  fi;
  
tt_status=0
rep_status=0
tt_status=`su $TT_USER -c "echo 'select 1+1 from dual;'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1"|grep "< 2 >"|wc -l`
rep_status=`su $TT_USER -c "$TT_HOME/bin/ttstatus" |grep "Replication agent is running"|wc -l`


if [ $tt_status -eq 1 ] && [ $rep_status -eq 1 ];then #All status normal
  #check rep state
  rep_state=`su $TT_USER -c "echo 'call ttrepstateget;'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1"|grep "^<"|awk '{print $2}'`
  
  if [ -f "$FLAG_DIR/tt_rep_state.lock" ] && [ $rep_state = 'IDLE' ];then
    
    bef_rep_state=`cat $FLAG_DIR/tt_rep_state.lock|cut -d ',' -f 2`
    cat /dev/null > $FLAG_DIR/tt_rep_state.lock
    if [ $bef_rep_state = 'ACTIVE' ];then
      su $TT_USER -c "echo 'call ttrepstateset( \047active\047 );'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1"
    fi;
  fi;


  rep_state=`su $TT_USER -c "echo 'call ttrepstateget;'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1"|grep "^<"|awk '{print $2}'`
  
  if [ $rep_state = 'ACTIVE' ];then
     exit 0;
  elif [ $rep_state = 'STANDBY' ];then
     su $TT_USER -c "echo 'call ttrepstateset( \047active\047 );'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1";
     exit 0;
  elif [ $rep_state = 'IDLE' ];then
     exit 1;
  fi;
else 
  exit 1;  #abnormal-exit 

fi;


################stop_tt.sh#######################

#! /bin/sh
  #停止应用、断开连接   
  #执行,超时后强制切换
  #call ttreppolicy('manual');call ttrepstop;
  #call ttrepdeactivate; 
  #call ttrepolicy('always')


FLAG_DIR="/etc/hacmp"
TT_HOME="/tt/TimesTen/tt60"
TT_USER="tt"
TT_DSNAME="ocs"


TT_REP_WAIT=60 ##seconds


rep_state=`su $TT_USER -c "echo 'call ttrepstateget;'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1"|grep "^<"|awk '{print $2}'`


if [ $rep_state = 'ACTIVE' ];then 


  kill -9 `su $TT_USER -c "echo 'call ttDataStoreStatus;'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1|grep 'application'|cut -d ',' -f 2"`
  
  su $TT_USER -c "$TT_HOME/bin/ttdaemonadmin -stopserver 2>&1"   #stop cserver daemon
  
  
  while [ $TT_REP_WAIT -gt 0 ]
  do
    if [ `su $TT_USER -c "echo 'call ttrepsubscriberwait(,,,,5);'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1"|grep '< 00 >'|wc -l` -eq 1 ];then
        
      su $TT_USER -c "$TT_HOME/bin/ttadmin -reppolicy manual $TT_DSNAME 2>&1" 
      su $TT_USER -c "echo 'call ttrepstop;'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1"
      su $TT_USER -c "echo 'call ttrepdeactivate;'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1" 
      su $TT_USER -c "$TT_HOME/bin/ttadmin -reppolicy always $TT_DSNAME 2>&1"
      echo `/usr/bin/date '+%Y%m%d'`','$rep_state >>  $FLAG_DIR/tt_rep_state.lock 
      TT_REP_WAIT=-100
    
    else
  
      TT_REP_WAIT=$(expr $TT_REP_WAIT - 5);
  
    fi;
  
  done;
  
  if [ $TT_REP_WAIT -eq -100 ];then
    exit 0;
  else
    exit 1;
  fi;
  
fi;       

################start_tt_rep.sh#######################

#! /bin/sh
#获取tt的状态,
#  若为standby,则call ttrepstateset('ACTIVE'),exit 0,表示正常
#  若为active,exit 0,表示正常
#  若未idle,exit 1,表示异常,res启动失败,切换res至对端节点


FLAG_DIR="/etc/hacmp"
TT_HOME="/tt/TimesTen/tt70"
TT_USER="tt"
TT_DSNAME="ocs"


#check tt(daemon & ram) status
tt_status=0
tt_status=`su $TT_USER -c "echo 'select 1+1 from dual;'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1"|grep "< 2 >"|wc -l`


if [ $tt_status -eq 0 ];then   #tt status abnormal
 #check and start daemon
  
  ds_status=`su $TT_USER -c "$TT_HOME/bin/ttstatus 2>&1" |grep "Could not connect to the TimesTen daemon"|wc -l`
  if [ $ds_status -eq 1 ];then  #daemon Abnormal
     su $TT_USER -c "$TT_HOME/bin/ttdaemonadmin -start 2>&1"   #start daemon
  fi;   
 
 #check and start ram 
  ds_status=1 
  ram_status=0
  ds_status=`su $TT_USER -c "$TT_HOME/bin/ttstatus 2>&1" |grep "Could not connect to the TimesTen daemon"|wc -l` 
  ram_status=`su $TT_USER -c "echo 'select 1+1 from dual;'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1"|grep "< 2 >"|wc -l`
  if [ $ds_status -eq 0 ] && [ $ram_status -eq 0 ];then
     su $TT_USER -c "$TT_HOME/bin/ttadmin -rampolicy always $TT_DSNAME 2>&1"   #ram load
  fi;
 
 #check and start rep 
  ram_status=0
  rep_status=0
  ram_status=`su $TT_USER -c "echo 'select 1+1 from dual;'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1"|grep "< 2 >"|wc -l`
  rep_status=`su $TT_USER -c "$TT_HOME/bin/ttstatus" |grep "Replication agent is running"|wc -l`
  
  if [ $ram_status -eq 1 ] && [ $rep_status -eq 0 ];then  
     su $TT_USER -c "$TT_HOME/bin/ttadmin -reppolicy always $TT_DSNAME 2>&1"   #rep start
  fi;
fi;


tt_status=0
rep_status=0
tt_status=`su $TT_USER -c "echo 'select 1+1 from dual;'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1"|grep "< 2 >"|wc -l`
rep_status=`su $TT_USER -c "$TT_HOME/bin/ttstatus" |grep "Replication agent is running"|wc -l`


if [ $tt_status -eq 1 ] && [ $rep_status -eq 1 ];then #All status normal
  #check rep state
  rep_state=`su $TT_USER -c "echo 'call ttrepstateget;'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1"|grep "^<"|awk '{print $2}'`
  
  if [ -f "$FLAG_DIR/tt_rep_state.lock" ] && [ $rep_state = 'IDLE' ];then
    
    bef_rep_state=`cat $FLAG_DIR/tt_rep_state.lock|cut -d ',' -f 2`
    cat /dev/null > $FLAG_DIR/tt_rep_state.lock;
    su $TT_USER -c "echo 'call ttrepstateset(\'$bef_rep_state\');'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1"; 
  fi;


  rep_state=`su $TT_USER -c "echo 'call ttrepstateget;'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1"|grep "^<"|awk '{print $2}'`
  
  if [ $rep_state = 'ACTIVE' ];then
     exit 0;
  elif [ $rep_state = 'STANDBY' ];then
     su $TT_USER -c "echo 'call ttrepstateset(\'ACTIVE\');'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1";
     exit 0;
  elif [ $rep_state = 'IDLE' ];then
     exit 1;
  fi;
else 
  exit 1;  #abnormal-exit 
fi;

################stop_tt_rep.sh#######################

#! /bin/sh
  #停止应用、断开连接   
  #执行,超时后强制切换
  #call ttreppolicy('manual');call ttrepstop;
  #call ttrepdeactivate; 
  #call ttrepolicy('always')


FLAG_DIR="/etc/hacmp"
TT_HOME="/tt/TimesTen/tt70"
TT_USER="tt"
TT_DSNAME="ocs"


rep_state=`su $TT_USER -c "echo 'call ttrepstateget;'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1"|grep "^<"|awk '{print $2}'`


su $TT_USER -c "$TT_HOME/bin/ttdaemonadmin -stopserver 2>&1"   #stop cserver daemon
su $TT_USER -c "echo 'call ttrepsubscriberwait(,,,,-1);'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1"
su $TT_USER -c "$TT_HOME/bin/ttadmin -reppolicy manual $TT_DSNAME 2>&1" 
su $TT_USER -c "echo 'call ttrepstop;'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1"
su $TT_USER -c "echo 'call ttrepdeactivate;'|$TT_HOME/bin/ttisql $TT_DSNAME 2>&1" 
su $TT_USER -c "$TT_HOME/bin/ttadmin -reppolicy always $TT_DSNAME 2>&1"


echo `/usr/bin/date '+%Y%m%d'`','$rep_state >>  $FLAG_DIR/tt_rep_state.lock


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值