このページに記載の情報は、2005 年にリリースした PowerGres Plus V2 を対象としています。PowerGres Plus V2 の販売はすでに終了しています。
PowerGres Plus の最新バージョンに関する情報は、製品紹介ページまたは PowerGres 体験記ページを参照してください。
数年前、私が管理を任されていたUNIXの開発マシンが、オペレータミスで起動できなくなったことがありました。なんとかOSを復旧して事なきをえたのですが、それ以来、毎週1回、開発ソースのバックアップを行うのが私の仕事になりました。当時の私は、管理者といっても、パソコンぐらいの知識しかなく、タスクのスケジューリングなど知らず、皆が休みの土曜日、日曜日に出社してバックアップ作業をしていました。
PowerGres Plusでは、OSのスケジューリング機能を利用し、簡単にバックアップや、システムの監視を行うことができます。システムの監視結果は、指定した時間にレポートとして出力することができるだけでなく、データベースに異常があった場合は管理者にメールを送信し、異常を伝えることができます。
第2回目では、PowerGres Plusのバックアップや監視機能をシステムのスケジューリング機能と組み合わせ、システムを簡単に構築するポイントを紹介します。
今回は、Linuxシステムで実際にシステムの構築例を説明しますが、どのような運用を行うかをPowerGres Plusの機能紹介と合わせて説明します。
PowerGres Plusでは、”pgx_dmpall”コマンドと、システムのcronを組み合わせ、定期的なバックアップを行なうことができます。
図1: 定期的なバックアップ
PowerGres Plusでは常にデータ管理(ディスクのチェック)を行っているため、ディスクに異常があった場合、その部分をマーキングして、アクセスしないようにします。 これにより、壊れたディスクにアクセスして業務が停止したり、データを破壊することを防ぎます。
異常が発生したかどうかは、システムのログを参照することで知ることができます。
さらに、cronと組み合わせて、定刻にレポートを提出したり、異常が発生した場合にメールで、異常を管理者に通知することができます。
図2: 状態監視によるレポート出力
実際にバックアップ、監視機能をcronでスケジューリングする例を以下に示します。
pgx_dmpallコマンドを毎週日曜日の2時1分に行うようにcronで設定します。これでバックアップ処理を簡単にスケジューリングすることができます。
図3: バックアップのスケジュール
以下に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コマンドで参照してください。
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に設定する例を記述します。
ユーザ “root”で、監視用スクリプトを毎時、30分になると実行する例です。
cronの設定は、インスタンス管理者により、crontabコマンドで行います。
以下のコマンドにより、cronの設定を行います。
$crontab -e
エディタが起動されるので、以下のように入力します。
スクリプトには、監視するデータベース名を記述します。例では、データベース “db1″を指定しています。
30 * * * * root /usr/local/pgsqlplus_monitor/monitor.sh db1
エディタを終了し、以下のコマンドを入力し、正しく設定されているか確認します。
$crontab -l
先ほど入力した内容が表示されれば正しく設定されています。
異常を検出するスクリプトを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に設定する例を記述します。
ユーザ “root”で、監視用スクリプトを毎時、30分になると実行する例です。
スクリプトは、すべて同一ディレクトリに配置する必要があるので、今回は以下のディレクトリに格納します。
/usr/local/pgsqlplus_monitor
cronの設定は、インスタンス管理者により、crontabコマンドで行います。
以下のコマンドにより、cronの設定を行います。
$crontab -e
エディタが起動されるので、以下のように入力します。
スクリプトには、監視するデータベース名を記述します。例では、データベース “db1″を指定しています。
30 * * * * root /usr/local/pgsqlplus_monitor/monitor.sh db1
エディタを終了し、以下のコマンドを入力し、正しく設定されているか確認します。
$crontab -l
先ほど入力した内容が表示されれば正しく設定されています。
監視機能で出力するレポートのフォーマットの修正、および、メール送信のあて先を変更するポイントを説明します。
レポート出力の最初のヘッダの内容を変更する例を以下に記述します。レポート開始のヘッダは、変数”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)
メール発信のあて先は、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”
monitor.sh、config、sendMail.shで”(必須)”と記述されている環境変数への値の設定が変更のポイントとなります。詳細は、スクリプトの内容を参照してください。
PowerGres Plusの機能により、バックアップ、システムの監視をスケジューリングする方法について紹介しました。
PowerGres Plusのバックアップや監視機能とcronを組み合わせて使用しているため、専用のアプリケーションを作成したり、別途スケジューリングソフトを用意する必要はなく、システムを簡単に構築することができます。
今回は、Linuxシステムについて詳細を説明しました。次回は、同じシステム構築をWindowsで行う例をご紹介します。その他、異常通知での詳細な説明と対処についてもご説明いたします。