| PRIMECLUSTER Disaster Recovery Edition 説明書 |
目次
索引
![]()
|
| 第2章 DBサーバの構築 |
DBサーバのuserApplicationを作成する場合、以下の留意事項があります。
バックアップ運用を以下の状態で行う場合、userApplicationはOracleとACMの2つに分離する必要があります。
下の図のように、"Oracleサービス" と "ACMサービス" を分けると、各ノード上でそれぞれのサービスが独立して動作します。例えば、Oracleリソースに異常が発生すると、Oracleサービスのみ待機系に切替りACMサービスは運用系で処理を継続するため、バックアップができない状態になります。
以下にuserApplicationの構成例を示します。


メインセンタからバックアップセンタに切り替える場合、バックアップセンタ側のディスク(ETERNUS)は、REC先のままの状態となっているとサーバへのマウントが失敗し、userApplicationの起動ができません。
メインセンタからバックアップセンタに切り替える場合、REC先であるバックアップセンタ側の領域(GFS領域) は、リストア後の状態と同じであるためパーティション情報の再設定(sfxadm) とファイルシステムの整合性チェック (fsck) が必要になります。

リストア後の状態については、「PRIMECLUSTER Global File Services 説明書」の "5.4 リストア後の設定変更" を参照してください。
上記の3つの留意事項は、userApplicationの事前起動処理(preonlineスクリプト)で回避することができます。以下にpreonlineスクリプトの例を示します。
#!/bin/sh
#DR検証用スクリプト
#サイト :メイン
#クラスタサービス :Oracle
#スクリプトタイプ :Preonlineスクリプト
#説明
#本ノード上でACMサービスが動作していない場合、ACMサービスを本ノード
#上でOnlineにする。
#
#メインサイト側に対してRECが有効になっている場合(reverseモード)、Oracle
#起動を抑止する。
#
#注意事項
#本スクリプトはACMが起動しているノード上で実行すること。
#
#クラスタ関連パラメタ
ACM_SERVICE=userApp_1
MYNODE=`uname -n`RMS
WAITTIME=15
RETRY=8
#ACM関連パラメタ
#SWSTGNODEはACMが使用するクラスタ引継ぎIPアドレスに対応するノード名
SWSTGNODE=drdbacm
export SWSTGNODE
#Filesystem関連パラメタ
SDXVOL_CMD="/usr/sbin/sdxvolume"
SFXADM_CMD="/usr/sbin/sfxadm"
FSCK_CMD="/usr/sbin/fsck -F sfxfs -o p"
FILESYS_TBL="/export/home/dr/proc/sfxfs.tbl"
SDXONL_TBL="/export/home/dr/proc/sdxonl.tbl"
DEBUG=0
#####################################################
# ACM起動チェック
#####################################################
if [ $DEBUG = 0 ]
then
hvassert -s $ACM_SERVICE Online
if [ $? != 0 ]
then
# 本ノード上でACMサービスを起動
hvswitch $ACM_SERVICE $MYNODE
I=0;
while :
do
sleep $WAITTIME
hvassert -s $ACM_SERVICE Online
if [ $? = 0 ]
then
break;
fi
I=`expr $I + 1`
if [ $I = $RETRY ]
then
logger -p user.err -t "DR Service" "Can not start ACM service on this node"
exit 1
fi
done
fi
fi
######################################################
# RECモードチェック
######################################################
ELEMS=`/opt/FJSVswsrp/bin/swsrpstat | /usr/bin/awk '{printf"%s,%s",$4,$5}'`
for i in $ELEMS
do
DEST=`echo $i | cut -d, -f1`
MODE=`echo $i | cut -d, -f2`
if [ $DEST = "reverse" ];
then
if [$MODE != "replicated" ];
then
# Oracle起動を抑止する。
logger -p user.err -t "DR Service" "Cluster service Oracle can not be started since ACM mode is set to reserve"
exit 1
fi
fi
done
#####################################################
# sfxadm fsck 実行
#####################################################
SDX_OFFLINE()
{
if [ -f $1 ];
then
for i in `cat $1`
do
SDX_CLASS=`echo $i | cut -d, -f1`
SDX_VOLUME=`echo $i | cut -d, -f2`
$SDXVOL_CMD -F -c $SDX_CLASS -v $SDX_VOLUME
done
fi
return 0
}
if [ -f $SDXONL_TBL ] ;
then
rm $SDXONL_TBL
touch $SDXONL_TBL
fi
for i in `cat $FILESYS_TBL`
do
SDX_CLASS=`echo $i | cut -d/ -f4`
SDX_VOLUME=`echo $i | cut -d/ -f6`
$SDXVOL_CMD -N -c $SDX_CLASS -v $SDX_VOLUME
if [ $? -ne 0 ];
then
logger -p user.err -t "DR Service" "GDS Online err CLASS=${SDX_CLASS} VOLUME=${SDX_VOLUME}"
SDX_OFFLINE $SDXONL_TBL
# Oracle起動を抑止する。
exit 1
fi
echo "$SDX_CLASS,$SDX_VOLUME" >> $SDXONL_TBL
done
for i in `cat $FILESYS_TBL`
do
$SFXADM_CMD $i
if [ $? -ne 0 ];
then
logger -p user.err -t "DR Service" "GFS sfxadm err DEV=$i"
SDX_OFFLINE $SDXONL_TBL
# Oracle起動を抑止する。
exit 1
fi
$FSCK_CMD $i
if [ $? -ne 0 ];
then
logger -p user.err -t "DR Service" "filesystem check err DEV=$i"
SDX_OFFLINE $SDXONL_TBL
# Oracle起動を抑止する。
exit 1
fi
done
SDX_OFFLINE $SDXONL_TBL
# Oracle起動を許可する。
exit 0 |
#!/bin/sh
#DR検証用スクリプト
#サイト :バックアップ
#クラスタサービス :Oracle
#スクリプトタイプ :Preonlineスクリプト
#
#説明
#バッアップサイト側に対してRECが有効になっている場合(regularモード)、Oracle
#起動を抑止する。
#
#注意事項
#本スクリプトはACMが起動しているノード上で実行すること。
#ACM関連パラメタ
#SWSTGNODEはACMが使用するIPアドレスに対応するノード名
SWSTGNODE=drdbacm3
export SWSTGNODE
#Filesystem関連パラメタ
SFXADM_CMD="/usr/sbin/sfxadm"
FSCK_CMD="/usr/sbin/fsck -F sfxfs -o p"
FILESYS_TBL="/export/home/dr/proc/sfxfs.tbl"
######################################################
# RECモードチェック
######################################################
ELEMS=`/opt/FJSVswsrp/bin/swsrpstat | /usr/bin/awk '{printf"%s,%s",$4,$5}'`
for i in $ELEMS
do
DEST=`echo $i | cut -d, -f1`
MODE=`echo $i | cut -d, -f2`
if [ $DEST = "regular" ];
then
if [$MODE != "replicated" ];
then
# Oracle起動を抑止する。
logger -p user.err -t "DR Service" "Cluster service Oracle can not be started since ACM mode is set to reserve"
exit 1
fi
fi
done
#####################################################
# sfxadm fsck 実行
#####################################################
for i in `cat $FILESYS_TBL`
do
$SFXADM_CMD $i
if [ $? -ne 0 ];
then
logger -p user.err -t "DR Service" "GFS sfxadm err DEV=$i"
# Oracle起動を抑止する。
exit 1
fi
$FSCK_CMD $i
if [ $? -ne 0 ];
then
logger -p user.err -t "DR Service" "filesystem check err DEV=$i"
# Oracle起動を抑止する。
exit 1
fi
done
# Oracle起動を許可する。
exit 0 |

上記のpreonlineスクリプトは例です。実際のpreonlineスクリプトは業務に合わせて作成してください。
/dev/sfdsk/DB_class0003/rdsk/ora_cnt01 /dev/sfdsk/DB_class0003/rdsk/oraredo01 /dev/sfdsk/DB_class0003/rdsk/oradata01 /dev/sfdsk/DB_class0003/rdsk/oraindx02 /dev/sfdsk/DB_class0004/rdsk/ora_cnt02 /dev/sfdsk/DB_class0004/rdsk/oraredo02 /dev/sfdsk/DB_class0004/rdsk/oraindx01 /dev/sfdsk/DB_class0004/rdsk/oratemp /dev/sfdsk/DB_class0004/rdsk/oraundo /dev/sfdsk/DB_class0004/rdsk/oradata02 /dev/sfdsk/DB_class0004/rdsk/oraarchufs |
バックアップセンタ側のクラスタシステムはシングルノードクラスタなので、通常のuserApplicationを作成する場合とは、リソース属性の設定値に違いがあります。
以下にシングルノードクラスタ上のuserApplicationを作成する場合の注意点を説明します。
目次
索引
![]()
|