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を作成する場合の注意点を説明します。
目次
索引
![]() ![]() |