データベースサーバのOSの起動・停止に合わせて、インスタンスを自動的に起動・停止することができます。
以下に示す手順に従って、インスタンスの自動起動・停止の設定を行ってください。
クラスタシステムでインスタンスを動作させる場合は、クラスタシステムにより起動停止が制御されるため、本機能を利用する必要はありません。
インスタンス管理者のOSユーザーアカウントの設定
インスタンス管理者のOSユーザーアカウントでログインした場合に、インスタンスの起動に必要な環境変数を設定するようにします。この設定は、以降で説明する“su -”コマンドの実行時に必要になります。
シェルスクリプトの作成
第1引数を読み取ってインスタンスの起動/停止を行うシェルスクリプトを作成します。
第1引数を読み取り、“start”が指定された場合は起動、“stop”が指定された場合は停止を行うようにします。
なお、“su -”コマンドによりインスタンス管理者として起動・停止を行う必要があります。
シェルスクリプトの複写とアクセス権の設定
OSのスーパーユーザーで、手順2で作成したシェルスクリプトを/etc/init.d配下に複写し、アクセス権を設定して登録します。
以下は、自動起動停止スクリプトを“symfo_inst1”として作成した場合の例です。
# cp symfo_inst1 /etc/init.d/ # chmod 755 /etc/init.d/symfo_inst1
シンボリックリンクの作成
手順3で複写したシェルスクリプトへシンボリックリンクを作成します。
自動起動させるため、以下のディレクトリに対してシンボリックリンクを作成します。
/etc/rc2.d
シンボリックリンクの名前には、“S”の文字と2桁の数字を付けて、他に自動起動されるサービスとの起動順序を指定します。
Symfoware ServerはネットワークなどのOSの基本的なサービスの起動を前提にするため、できるだけ大きな数値を付けて、後の方でインスタンスを起動するように設定してください。
下記は、インスタンス“inst1”を自動起動するように設定している例です。
# ln -s /etc/init.d/symfo_inst1 /etc/rc2.d/S85symfo_inst1
自動停止させるため、以下のディレクトリに対してシンボリックリンクを作成します。
OSの通常停止、シングルユーザモードでのOS起動、OSの再起動に対する設定です。
/etc/rc0.d
/etc/rc1.d
/etc/rcS.d
シンボリックリンクの名前には、“K”の文字と2桁の数字を付けて、他の自動停止されるサービスとの停止順序を指定します。
Symfoware ServerはネットワークなどのOSの基本的なサービスより前に停止する必要があるため、できるだけ小さな数値を付けて、初めの方でインスタンスを停止するように設定してください。ただし、この数値は、起動順と停止順の整合を取るために、100から自動起動の設定で指定した数値を引き算した値を指定します。
下記は、インスタンス“inst1”を自動停止するように設定している例です。
# ln -s /etc/init.d/symfo_inst1 /etc/rc0.d/K15symfo_inst1 # ln -s /etc/init.d/symfo_inst1 /etc/rc1.d/K15symfo_inst1 # ln -s /etc/init.d/symfo_inst1 /etc/rcS.d/K15symfo_inst1
#!/bin/sh # description: Symfoware Server Open start / stop script ########################################################################## SYMDATA="/database/inst1" SYMUSER=symfo SYMLOG="$SYMDATA/serverlog" case "$1" in start) su - $SYMUSER -c "pg_ctl start -D '$SYMDATA' -w " >$SYMLOG 2>&1 ;; stop) su - $SYMUSER -c "pg_ctl stop -D '$SYMDATA' -m fast" >$SYMLOG 2>&1 ;; restart) su - $SYMUSER -c "pg_ctl restart -D '$SYMDATA' -m fast" >$SYMLOG 2>&1 ;; reload) su - $SYMUSER -c "pg_ctl reload -D '$SYMDATA'" >$SYMLOG 2>&1 ;; status) su - $SYMUSER -c "pg_ctl status -D '$SYMDATA'" ;; *) echo $"Usage: $0 {start|stop|restart|reload|status}" exit 2 ;; esac