PowerGres

高信頼化ソリューション 第2回

このページに記載の情報は、2005 年にリリースした PowerGres Plus V2 を対象としています。PowerGres Plus V2 の販売はすでに終了しています。

PowerGres Plus の最新バージョンに関する情報は、製品紹介ページまたは PowerGres 体験記ページを参照してください。

第2回 システムの簡単な構築 『実践!! システム構築』- Linux編 –

はじめに

数年前、私が管理を任されていたUNIXの開発マシンが、オペレータミスで起動できなくなったことがありました。なんとかOSを復旧して事なきをえたのですが、それ以来、毎週1回、開発ソースのバックアップを行うのが私の仕事になりました。当時の私は、管理者といっても、パソコンぐらいの知識しかなく、タスクのスケジューリングなど知らず、皆が休みの土曜日、日曜日に出社してバックアップ作業をしていました。

PowerGres Plusでは、OSのスケジューリング機能を利用し、簡単にバックアップや、システムの監視を行うことができます。システムの監視結果は、指定した時間にレポートとして出力することができるだけでなく、データベースに異常があった場合は管理者にメールを送信し、異常を伝えることができます。

第2回目では、PowerGres Plusのバックアップや監視機能をシステムのスケジューリング機能と組み合わせ、システムを簡単に構築するポイントを紹介します。

(1) 運用の概要

今回は、Linuxシステムで実際にシステムの構築例を説明しますが、どのような運用を行うかをPowerGres Plusの機能紹介と合わせて説明します。

(a) 定期的なバックアップ

PowerGres Plusでは、”pgx_dmpall”コマンドと、システムのcronを組み合わせ、定期的なバックアップを行なうことができます。

図1: 定期的なバックアップ

(b) 状態監視

PowerGres Plusでは常にデータ管理(ディスクのチェック)を行っているため、ディスクに異常があった場合、その部分をマーキングして、アクセスしないようにします。 これにより、壊れたディスクにアクセスして業務が停止したり、データを破壊することを防ぎます。

異常が発生したかどうかは、システムのログを参照することで知ることができます。

さらに、cronと組み合わせて、定刻にレポートを提出したり、異常が発生した場合にメールで、異常を管理者に通知することができます。

図2: 状態監視によるレポート出力

(2) システム構築の実践

実際にバックアップ、監視機能をcronでスケジューリングする例を以下に示します。

(a) バックアップのスケジューリング

pgx_dmpallコマンドを毎週日曜日の2時1分に行うようにcronで設定します。これでバックアップ処理を簡単にスケジューリングすることができます。

図3: バックアップのスケジュール

[cronの設定例]

以下にcronに設定する例を記述します。cronの設定は、インスタンス管理者により、crontabコマンドで行います。

$crontab -e

エディタが起動されるので、以下のように入力します。

SHELL=/bin/sh
01 02 * * 0 root /usr/local/pgsqlplus/bin/pgx_dmpall -D /PlusData/postgres

表1: cronの設定例

環境変数1=yyyyyy
環境変数2=zzzzzz
....
分 時 日 月 曜日 ユーザ 実行コマンド
曜日は、日曜日を"0"として、後は追番で6までの数字で記述します。

表2: cronのフォーマット

エディタを終了し、以下のコマンドを入力し、正しく設定されているか確認します。

$crontab -l

先ほど入力した内容が表示されれば正しく設定されています。

cronの詳細は、ヘルプや、manコマンドで参照してください。

(b) 定時レポートの出力

PowerGres Plusは、常にデータベースの状態を監視し、システムカタログにその情報を蓄えています。そのシステムカタログの内容を参照することで、定刻にレポートを出力することができます。

参照システムカタログ
pgx_dbspaces: データベーススペース
pgx_sequences: シーケンス
pgx_tables: テーブル
pgx_indexes: インデックス
pgx_archive_log: インデックス
pgx_dbspaces: アーカイブログ

上記のテーブルの”status”カラムを参照することで、各リソースに異常が発生しているかどうかを判断することができます。

以下の3つのスクリプトを使用して行います。

monitor.sh: 監視スクリプト
config: 監視スクリプトで使用する環境設定ファイル
sendMail.sh: メール送信するスクリプト
[スクリプトの配置]

上記のスクリプトを同じディレクトリに配置します。
今回は、”/usr/local/powergres_plus/monitor/”というフォルダを作成して、そのフォルダに配置します。

[環境変数の設定]

configファイルの環境変数を自分のシステムに合わせて設定します。

PGUSER=”ユーザ名”
PGPORT=”5432″
LOG_DIR=”/usr/local/powergres_plus/monitor/log/”
(*) LOG_DIRに指定した、ディレクトリは事前に作成しておく必要があります。

[テスト]

スクリプトは、単独で実行可能ですので、monitor.shを実行し実行結果を確認します。
以下のように/usr/local/powergres_plus/monitor/log/monitor.logに出力されます。
メール発信を抑制したいときは、”config”の”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: データベース、バックアップ両方に異常があった場合
[cronの設定例]

以下にcronに設定する例を記述します。
ユーザ “root”で、監視用スクリプトを毎時、30分になると実行する例です。
cronの設定は、インスタンス管理者により、crontabコマンドで行います。
以下のコマンドにより、cronの設定を行います。

$crontab -e

エディタが起動されるので、以下のように入力します。
スクリプトには、監視するデータベース名を記述します。例では、データベース “db1″を指定しています。

30 * * * * root /usr/local/pgsqlplus_monitor/monitor.sh db1

エディタを終了し、以下のコマンドを入力し、正しく設定されているか確認します。

$crontab -l

先ほど入力した内容が表示されれば正しく設定されています。

(c) 異常通知

異常を検出するスクリプトをcronに設定する例を説明します。スクリプトは、以下の3つのファイルを同一のディレクトリに配置します。
cronにも実行結果を通知する機能はありますが、レポートを決められたフォーマットで出力するため、メールの発信にはsendMail.shを使用します。

monitor.sh: 監視スクリプト
config: 監視スクリプトで使用する環境設定ファイル
sendMail.sh: メール送信するスクリプト

スクリプトの配置、環境変数の設定は、「(b) 定時レポートの提出」と同じです。

図4: 監視機能のスケジューリング

[詳細情報を出力するようにする]

monitor.shの269行目から、285行目が詳細情報を出力する部分です。この間のコメント(“#”)を取り除くことで詳細情報が出力されます。

[メールの通知先の変更]

sendMail.shのサンプルのメールアドレスを実際に使用するメールアドレスに変更します。変更箇所は、「(3) スクリプトの修正による応用」に詳細を記述してあります。

[出力結果]

異常が検出されると以下のように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=/PlusDbspace/postgres/dbsamplespace)
=============================================================

上記の例では、データベーススペース”dbsamplespace”に異常があることが通知されています。データベーススペースが割り付けられているファイルパスは、データベーススペース名の後ろに記述されています。

[補足]

STATUSに”Abnormal”が表示され、データベースに異常が発生したか、バックアップに異常が発生したかを、それぞれ、”Database”、”Backup”の文字列で表示します。

Causeはエラーの原因です。

Resource NameのKindには、異常が発生したリソースの種類として、データベーススペース(DBSPACE)、シーケンス(SEQUENCE)、テーブル(TABLE)、インデックス(INDEX)、アーカイブログファイル(ARCHIVE LOG)の5種類が表示されます。

Resource Nameのスラッシュ(/)の後ろには、以上が発生したリソースの名前が表示されます。

[cronの設定例]

以下にcronに設定する例を記述します。
ユーザ “root”で、監視用スクリプトを毎時、30分になると実行する例です。
スクリプトは、すべて同一ディレクトリに配置する必要があるので、今回は以下のディレクトリに格納します。

/usr/local/pgsqlplus_monitor

cronの設定は、インスタンス管理者により、crontabコマンドで行います。
以下のコマンドにより、cronの設定を行います。

$crontab -e

エディタが起動されるので、以下のように入力します。
スクリプトには、監視するデータベース名を記述します。例では、データベース “db1″を指定しています。

30 * * * * root /usr/local/pgsqlplus_monitor/monitor.sh db1

エディタを終了し、以下のコマンドを入力し、正しく設定されているか確認します。

$crontab -l

先ほど入力した内容が表示されれば正しく設定されています。

(3) スクリプトの修正による応用

監視機能で出力するレポートのフォーマットの修正、および、メール送信のあて先を変更するポイントを説明します。

(a) 監視レポートの出力変更例

レポート出力の最初のヘッダの内容を変更する例を以下に記述します。レポート開始のヘッダは、変数”MSG_BEGIN”に格納されています。34行目に以下のように設定されています。

MSG_BEGIN=”PowerGres Plus Report.”

これに、サーバ名を付け加えてみましょう。

MSG_BEGIN=”PowerGres Plus Report in `hostname`.”

これで、ヘッダは、以下のように出力されます。日付は元々出力されるようになっています。また、このサーバ名は、”pg_server”と仮定します。

PowerGres Plus Report in pg_server.(2005/11/02 16:43:55)

(b) メール発信あて先の変更

メール発信のあて先は、sendMail.shの24行目で以下のように設定されています。

#送信メールアドレス(必須)
FROM_ADDRESS=”kanri@example.com”

#受信メールアドレス(必須)
TO_ADDRESS=”kanri@example.com”

このメールアドレスを以下のように変更することで、powergres_manager@sample.fujitsu.comというインスタンス管理者のメールアドレスに、powergres_monitor@sample.fujitsu.comというメールアドレスから、送信することができます。

#送信メールアドレス(必須)
FROM_ADDRESS=”powergres_monitor@sample.fujitsu.com”

#受信メールアドレス(必須)
TO_ADDRESS=”powergres_manager@sample.fujitsu.com”

(c) その他の修正のポイント

monitor.sh、config、sendMail.shで”(必須)”と記述されている環境変数への値の設定が変更のポイントとなります。詳細は、スクリプトの内容を参照してください。

(4) 最後に

PowerGres Plusの機能により、バックアップ、システムの監視をスケジューリングする方法について紹介しました。
PowerGres Plusのバックアップや監視機能とcronを組み合わせて使用しているため、専用のアプリケーションを作成したり、別途スケジューリングソフトを用意する必要はなく、システムを簡単に構築することができます。

今回は、Linuxシステムについて詳細を説明しました。次回は、同じシステム構築をWindowsで行う例をご紹介します。その他、異常通知での詳細な説明と対処についてもご説明いたします。

製品・サービスに関するお問い合わせ
03-5979-2701

お問い合せ受付時間 月 - 金 10:00 - 17:00

メールフォームでのお問い合わせ

ページトップへ