このページに記載の情報は、2005 年にリリースした PowerGres Plus V2 を対象としています。PowerGres Plus V2 の販売はすでに終了しています。
PowerGres Plus の最新バージョンに関する情報は、製品紹介ページまたは PowerGres 体験記ページを参照してください。
第 2 回目では、Linux でシステムを構築する手順について説明しました。 Windows でも Linux と同様に OS の機能を利用してシステムを簡単に構築することができます。 その機能を十分理解している方はすでに Windows でサーバを簡単に構築されていると思います。
PowerGres Plus では、Linux と同じようにシステムのスケジューリング機能を利用して、Windows で簡単にバックアップやシステムの監視を行うことができます。 システムの監視結果は、データベースの状態を指定した時間にレポートとして出力することができるだけでなく、データベースに異常があった場合は管理者にメールを送信し、異常を伝えることができます。
第 3 回では、PowerGres Plus のバックアップや監視機能を Windows のスケジューリング機能と組み合わせ、システムを簡単に構築するポイントを紹介します。
最初に、第 2 回でお約束した通り、異常を検出した場合の対処について説明します。
第 2 回で説明したとおり、データベースに異常が発生した場合は以下のような情報をシステム管理者は受け取ることができます。
============================================== PowerGres Plus Report.(2005/11/09 14:13:29) ============================================== [Host Name/Port No.] Server1/5432 [STATUS] Abnormal(Database)
異常の内容は、システムカタログと呼ばれる表に格納されているので、監視用のスクリプト (Linux) や、バッチファイル (Windows) で詳細情報を出力するように修正すると、詳細な原因を示す情報を確認することができます。 例えば、データベーススペースに異常が発生しているかどうかを検索する場合には以下のような SQL 文で検索できます。
SELECT cause, dbspacename,device from pgx_dbspaces where STATUS='INH' ;
データベーススペースの情報は、表「pgx_dbspaces」に設定されています。 以下の情報を参照することができます。
cause | 異常が発生したとき、その原因を意味するコードが設定されます。 |
---|---|
dbspacename | データベーススペース名 |
device | データベーススペースが割り当てられているファイルパス |
status | データベーススペースの状態が以下の 2 種類のコードで設定されます。
|
以下のように結果が表示されます。
Cause dbspacename device ------------------------------------------------------------------- HER dbsamplespace d:\PlusDbspace\postgres\dbsamplespace (1Rows)
データベース以外の情報もシステムカタログに設定されています。 monitor.sh (Linux)、Monitor.bat (Windows) の環境変数「DBSPACES_SQL」、「SEQUENCES_SQL」、「TABLES_SQL」、「INDEXES_SQL」、「ARCHIVE_LOG_SQL」に設定している SQL 文を参照してください。
図 1: 異常検出時の対処
SQL 文を入力しなくても、monitor.sh (Linux)、または、Monitor.bat (Windows) のコメントをはずすだけで、同様の情報を調べることができます。 スクリプトの修正方法は、今回の「システム構築の実践」で説明しています。 コメントをはずすと先ほどの SQL 文の結果と同等の内容が以下のように出力されます。
------------------------------------------------------------- Cause Resource Name(Kind/Name) ------------------------------------------------------------- HER DBSPACE/dbsamplespace(device=d:\PlusDbspace\postgres\dbsamplespace)
上記の例では、Cause に「HER」と表示され、データベーススペース「dbsamplespace」にハード障害が発生していることが表示されています。 ただし、ハード障害を意味する種別は、デバイス異常が発生している場合と、オペーションミスなどにより、システムにログインしてデータベースの資産を削除してしまった場合にも発生します。 以下のような確認を行なってください。
また、ハード障害以外に以下の異常が通知されます。
今回は、Windows システムで実際にシステムを構築した例を説明しますが、どのような運用を行うかを PowerGres Plus の機能紹介と合わせて説明します。
PowerGres Plus では、「pgx_dmpall」コマンドと、Windows の「タスク」を組み合わせ、定期的なバックアップを行うことができます。
図 2: 定期的なバックアップ
PowerGres Plus では常にデータ管理 (ディスクのチェック) を行っているため、ディスクに異常があった場合、その部分をマーキングして、アクセスしないようにします。 これにより、壊れたディスクにアクセスして業務が停止したり、データが破壊されることを防ぎます。
異常が発生したかどうかは、イベントビューアのログを参照することで確認することができます。
さらに、タスクと組み合わせて、データベースの状態を、定刻にレポートで提出したり、異常が発生した場合にメールで、異常を管理者に通知することができます。
図 3: 状態監視によるレポート出力
実際にバックアップ、監視機能を「タスク」でスケジューリングする例を以下に示します。
pgx_dmpall コマンドを毎週日曜日の 2 時 1 分に行うように Windows の「タスク」で設定します。 これでバックアップ処理を簡単にスケジューリングすることができます。
図 4: バックアップのスケジューリング
以下にタスクに設定する例を記述します。
PowerGres Plus は、常にデータベースの状態を監視し、システムカタログにその情報を蓄えています。 そのシステムカタログの内容を参照することで、定刻にレポートを出力することができます。
参照システムカタログ
pgx_dbspaces | データベーススペース |
---|---|
pgx_sequences | シーケンス |
pgx_tables | テーブル |
pgx_indexes | インデックス |
pgx_archive_log | アーカイブログ |
上記のテーブルの「status」カラムを参照することで、各リソースに異常が発生しているかどうかを判断することができます。
以下の 2 つのファイルを使用して行います。
Monitor.bat | 監視バッチファイル |
SendMail.vbs | メールを発信する Visual Basic スクリプト |
上記のファイルを同じディレクトリに配置します。 今回は、「C:\powergresplus_monitor」に配置します。
Monitor.bat ファイルの環境変数を自分のシステムに合わせて設定します。
PGUSER="ユーザ名" PGPORT="5432" LOG_DIR="C:\TEMP"
※ LOG_DIR に指定した、ディレクトリは事前に作成しておく必要があります。
バッチファイルは、単独で実行可能ですので、Monitor.bat を実行し、結果を確認します。 以下のように C:\TEMP\monitor.log に出力されます。 メール発信を抑制したいときは、Monitor.bat の「NOTICE_OPTION」の値を 2 に設定してください。
============================================== PowerGres Plus Report.(2005/11/09 14:13:29) ============================================== [Host Name/Port No.] Server1/5432 [STATUS] Normal ==============================================
[STATUS] には、以下のように情報が表示されます。
正常終了時 | [STATUS] Normal |
---|---|
異常終了時 | [STATUS] Abnormal(種別) |
※種別には、以下の 3 種類があります。
Database | データベースに異常があった場合 |
---|---|
Backup | バックアップに異常があった場合 |
Database and Backup | データベース、バックアップ両方に異常があった場合 |
以下にタスクに設定する例を記述します。 監視用バッチファイルを毎時 30 分になると実行する例です。 タスクには、毎時を指定する機能がないため、毎日、0:30、1:30、と24 回設定する必要があります。
Monitor.bat には、パラメタとしてデータベース名を指定する必要があるので、バックアップのスケジューリングのように実行プログラムのパラメタとしてデータベース名を指定する必要があります。
例えば、データベース名 dbsample の場合は以下のように実行します。
C:\powergresplus_monitor\Monitor.bat dbsample
異常を検出するバッチファイルをタスクに設定する例を説明します。 以下の 2 つのファイルを同じディレクトリに配置します。
Monitor.bat | 監視バッチファイル |
SendMail.vbs | メールを発信する Visual Basic スクリプト |
ファイルの配置、環境変数の設定は、「定時レポートの提出」と同じです。
図 5: 監視機能のスケジューリング
Monitor.bat の 387 行目から、405 行目が詳細情報を出力する部分です。 この間のコメント (REM) を取り除くことで詳細情報が出力されます。
SendMail.vbs のサンプルのメールアドレスを実際に使用するメールアドレスに変更します。 変更箇所は、「バッチファイルの修正による応用」に詳細を記述してあります。
異常が検出されると以下のように monitor.log に出力され、メールが発信されます。
============================================== PowerGres Plus Report.(2005/11/09 14:13:29) ============================================== [Host Name/Port No.] Server1/5432 [STATUS] Abnormal(Database) ------------------------------------------------------------- Cause Resource Name(Kind/Name) ------------------------------------------------------------- HER DBSPACE/dbsamplespace(device=d:\PlusDbspace\postgres\dbsamplespace) =============================================================
上記の例では、データベーススペース「dbsamplespace」に異常があることが通知されています。 データベーススペースが割り付けられているファイルパスは、データベーススペース名の後ろに記述されています。
以下にタスクに設定する例を記述します。 監視用バッチファイルを毎時 30 分になると実行する例です。
バッチファイルは、すべて同一ディレクトリに配置する必要があるので、今回は以下のディレクトリに格納します。
C:\powergresplus_monitor
設定方法は、定時レポート出力 と同じです。
バッチファイルの内容は、第 2 回とほぼ同じであるため、メール発信の宛先変更のポイントなどを説明します。
メール発信のあて先は、SendMail.vbs の 17 行目で以下のように設定されています。
strFromAddress="kanri@example.com" strToAddress="kanri@example.com"
このメールアドレスを以下のように変更することで、powergres_manager@sample.fujitsu.com というインスタンス管理者のメールアドレスに、powergres_monitor@sample.fujitsu.com というメールアドレスから、送信することができます。
strFromAddress="powergres_monitor@sample.fujitsu.com" strToAddress="powergres_manager@sample.fujitsu.com"
Monitor.bat、SendMail.vbs で「(必須)」と記述されている環境変数への値の設定が変更のポイントとなります。 詳細は、各ファイルの内容を参照してください。
PowerGres Plus の機能により、バックアップ、システムの監視をスケジューリングする方法について紹介しました。 PowerGres Plus のバックアップや監視機能と Windows の「タスク」を組み合わせて使用しているため、専用のアプリケーションを作成したり、別途スケジューリングソフトを用意する必要はなく、システムを簡単に構築することができます。 前回説明した Linux 同様、Windows でもシステムを簡単に構築できることを、ご説明しました。