Sybase 資料庫啟停指令碼

dayong2015發表於2015-06-29
Sybase 資料庫啟停指令碼
前言:上週五去機房給客戶部署Sybase ASE雙機熱備,最後在SUSE HA測試過程中,啟停指令碼出現一些問題,後來經過修改,問題解決。那天晚上在機房待到23:50分左右才離開,到家已經是凌晨1點多了,總結原因還是自己經驗不足,準備不充分。下面把在本地測試相關指令碼貼出來,供參考:
SYBASE:/home/huyong/sybase/scripts # vi sybase.sh
#!/bin/bash

statusSYBASE(){
      su - huyong -c "/home/huyong/sybase/ASE-15_0/install/showserver" |grep /home/huyong/sybase/ASE-15_0/bin/dataserver 1>/dev/null 2>&1
if [ $? -eq 0 ] ; then
      return 0
else
      return 1
fi
}

startSYBASE(){
      su - huyong -c "/home/huyong/sybase/ASE-15_0/install/startserver -f /home/huyong/sybase/ASE-15_0/install/RUN_hbang" 1>/dev/null 2>&1
      su - huyong -c "/home/huyong/sybase/ASE-15_0/install/startserver -f /home/huyong/sybase/ASE-15_0/install/RUN_hbang_BS" 1>/dev/null 2>&1
declare -i startRETRY=0
while [ $startRETRY -lt 30 ] ; do
statusSYBASE
if [ $? -eq 0 ] ; then
      su - huyong -c "/home/huyong/sybase/ASE-15_0/install/startserver -f /home/huyong/sybase/ASE-15_0/install/RUN_hbang" 1>/dev/null 2>&1
      su - huyong -c "/home/huyong/sybase/ASE-15_0/install/startserver -f /home/huyong/sybase/ASE-15_0/install/RUN_hbang_BS" 1>/dev/null 2>&1   
      return 0
fi
      sleep 1
      startRETRY=`expr $startRETRY + 1`
      done
      return 1
}

stopSYBASE(){
      /home/huyong/sybase/ASE-15_0/install/showserver|grep /home/huyong/sybase/ASE-15_0/bin/dataserver >/dev/null 2>&1
      /home/huyong/sybase/ASE-15_0/install/showserver|grep /home/huyong/sybase/ASE-15_0/bin/backupserver >/dev/null 2>&1
declare -i stopRETRY=0
while [ $stopRETRY -lt 30 ] ; do
      su - huyong -c "isql -Usa -Phbang123 -Shbang  <
use master
go
checkpoint
go
shutdown SYB_BACKUP 
go
shutdown with nowait
go
exit
EOF" 1>/dev/null 2>&1
      su - huyong -c "kill -9 `/home/huyong/sybase/ASE-15_0/install/showserver|grep /home/huyong/sybase/ASE-15_0/bin/dataserver |awk '{print $4}'`"  1>/dev/null 2>&1
      su - huyong -c "kill -9 `/home/huyong/sybase/ASE-15_0/install/showserver|grep /home/huyong/sybase/ASE-15_0/bin/backupserver |awk '{print $4}'`" 1>/dev/null 2>&1
statusSYBASE
if [ $? -ne 0 ] ; then
      return 0
fi
      sleep 1
      stopRETRY=`expr $stopRETRY + 1`
      done
      return 1
}

if [ $# -ne 1 ] ; then
      echo "Usage $0 {start|stop|status}"
      exit 123
fi
case $1 in
start)
startSYBASE
if [ $? -eq 0 ] ; then
      echo "Start hbang Sybase succeed."
      exit 0
else
      echo "Start hbang Sybase failed!"
      exit 1
fi
;;
stop)
statusSYBASE
if [ $? -ne 0 ] ; then
      echo "hbang Sybase have been sopped."
      exit 0
fi
stopSYBASE
if [ $? -eq 0 ] ; then
      echo "Stop hbang Sybase succeed."
      exit 0
else
      echo "Stop hbang Sybase failed!"
      exit 1
fi
;;
status)
statusSYBASE
if [ $? -eq 0 ] ; then
      echo "hbang Sybase is running..."
      exit 0
else
      echo "hbang Sybase is dead!"
      exit 1
fi
;;
*)
      echo "Usage: $0 {start|stop|status}"
exit 123
;;
esac
測試過程如下:
--正常情況

SYBASE:/home/huyong/sybase/scripts # ./sybase.sh status ;echo $?
SYBASE Sybase is dead!
1
SYBASE:/home/huyong/sybase/scripts # ./sybase.sh start ;echo $?
Start SYBASE Sybase succeed.
0
SYBASE:/home/huyong/sybase/scripts # ps -ef|grep hbang
huyong    5538     1  0 11:04 ?        00:00:00 /bin/sh /home/huyong/sybase/ASE-15_0/install/RUN_hbang
huyong    5540  5538 80 11:04 ?        00:00:20 /home/huyong/sybase/ASE-15_0/bin/dataserver -d/home/huyong/sybase/data/master.dat -e/home/huyong/sybase/ASE-15_0/install/hbang.log -c/home/huyong/sybase/ASE-15_0/hbang.cfg -M/home/huyong/sybase/ASE-15_0 -shbang
huyong    5567     1  0 11:04 ?        00:00:00 /bin/sh /home/huyong/sybase/ASE-15_0/install/RUN_hbang_BS
huyong    5570  5567  0 11:04 ?        00:00:00 /home/huyong/sybase/ASE-15_0/bin/backupserver -e/home/huyong/sybase/ASE-15_0/install/hbang_BS.log -N25 -C20 -M/home/huyong/sybase/ASE-15_0/bin/sybmultbuf -Shbang_BS
root      5694  2426  0 11:04 pts/1    00:00:00 grep hbang
SYBASE:/home/huyong/sybase/scripts #
SYBASE:/home/huyong/sybase/scripts # ./sybase.sh stop ;echo $?
Stop SYBASE Sybase succeed.
0
SYBASE:/home/huyong/sybase/scripts # ./sybase.sh status ;echo $?
SYBASE Sybase is dead!
1
SYBASE:/home/huyong/sybase/scripts # ps -ef|grep hbang
root      6002  2426  0 11:05 pts/1    00:00:00 grep hbang
SYBASE:/home/huyong/sybase/scripts #
--異常情況
huyong@SYBASE:~/sybase> pwd    
/home/huyong/sybase
huyong@SYBASE:~/sybase> mv data/ data.dat   --啟動之前模擬資料檔案丟失
SYBASE:/home/huyong/sybase/scripts # ./sybase.sh status ;echo $?
hbang Sybase is dead!
1
SYBASE:/home/huyong/sybase/scripts # ./sybase.sh start ;echo $?
Start hbang Sybase failed!
1

-------END-------------

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29634949/viewspace-1715892/,如需轉載,請註明出處,否則將追究法律責任。

相關文章