このページに記載の情報は、2005 年にリリースした PowerGres Plus V2 を対象としています。PowerGres Plus V2 の販売はすでに終了しています。
PowerGres Plus の最新バージョンに関する情報は、製品紹介ページまたは PowerGres 体験記ページを参照してください。
データベースの運用では、どんな小規模なシステムでも高い信頼性が求められます。 システム管理者の皆様は定期的なデータベースのバックアップの重要性を認識されていると思います。 最近では非常に多くの種類のハードウェア、ソフトウェアが販売されています。 ハードウェア自体の信頼性はさまざまであり、加えて、ハードウェアとソフトウェアの組み合わせにより、問題が発生する可能性があるため、システムの信頼性を高めることが難しくなってきています。
PowerGres Plus では、データベースのバックアップと、バックアップデータを外部媒体へ退避するスクリプトを OS のスケジューリング機能に登録し、簡単に外部媒体へのバックアップを行い、外部媒体にバックアップしたデータから、データベースを復旧することができます。
第 4 回では、PowerGres Plus の外部媒体へのバックアップ機能を説明します。
システム管理者の皆様は、データベース運用で、定期的なバックアップを行い、データの二重化をすでにされていると思います。
PowerGres Plus では、そのバックアップデータをリモートディスクや、外部媒体に退避することで、データの三重化を行い、さらに信頼性を高めることができます。
図 1: バックアップの概要
すでに、システム管理者のみなさんは、システムのスケジューリング機能などを利用して、定期的なバックアップ (pgx_dmpall コマンド) を行っていると思います。 バックアップデータをさらに外部媒体に退避しておくことで、ハードウェアやディスクに障害が発生しても、外部媒体からバックアップした時点に復旧することができます。
図 2: 二次退避域へのバックアップ概要
リモートディスクへのバックアップでは、以下を行います。 以下の処理は、1 回行えば、定期的にバックアップを行い、バックアップデータをリモートディスクへ退避できます。
リモートディスクの設定は色々ありますが、今回は、NFS でディスクをマウントして、バックアップします。 バックアップを行っているデータベースサーバを「dbserver」、NFS のサーバとなるファイルサーバ名を「fileserver」とします。
退避用ディレクトリを作成します。
# mkdir -p /PlusArchive/postgres # chown postgres:postgres /PlusArchive/postgres
作成したディレクトリを、共有できるように設定します。 このとき、書き込み可能となるように権限を設定します。
下記の画像は、Red Hat Enterprise Linux 3 のものです。
図 3: NFS の設定
ディスクの共用は、以下のファイルを修正することでもできます。
/etc/exports
詳細は、/etc/exports または、NFS のマニュアルを参照してください。
NFS サーバで共有したディスクをマウントします。 同じディレクトリ構成にして共有します。
# mkdir -p /PlusArchive/postgres # chown postgres:postgres /PlusArchive/postgres # mount -t nfs fileserver:/PlusArchive/postgres /PlusArchive/postgres
サーバを再起動後もディスクのマウントを有効にするためには、/etc/fstab にリモートディスクのマウント情報を以下のように追加します。
fileserver:/PlusArchive/postgres /PlusArchive/postgres nfs noauto,user,hard,intr 0 0
設定内容の詳細は、mount コマンド、fstab のマニュアルを参照してください。
1、2 の処理は、最初に 1 回行っておけば、2 回目からは行う必要はありません。
サンプルスクリプト「full-copy.sh」を cron に登録して毎週日曜日の 2 時 1 分にバックアップを行うようにします。
cron の設定は、インスタンス管理者により、crontab コマンドで行います。
$ crontab -e
システム標準のエディタが起動され、以下のように表示されます。
SHELL=/bin/sh 01 02 * * 0 postgres /usr/local/pgsqlplus/bin/pgx_dmpall -D /PlusData/postgres
pgx_dmpall コマンドの実行をサンプルスクリプト full-copy.sh に変更します。 以下の例では、サンプルスクリプトは「/usr/local/bin」に配置され、インスタンス管理者は「postgres」の場合の例です。
SHELL=/bin/sh 01 02 * * 0 postgres /usr/local/bin/full-copy.sh
エディタを終了し、以下のコマンドを入力し、正しく設定されているか確認します。
$ crontab -l
先ほど入力した内容が以下のように表示されれば正しく設定されています。
図 4: cron 設定の確認
実行結果として、以下のようなメッセージがシステムログに出力されます。
図 5: リモートディスクへのバックアップ
図 6: リカバリの概要
インスタンスの復旧は、以下 2 つのスクリプトを実行して行います。
rcv-root.sh | インスタンス復旧用ディレクトリの作成 |
rcv-instance.sh | インスタンスの復旧用スクリプト |
スクリプトを実行すると、図 7 のようにメッセージが表示されます。
図 7: rcv-root.sh の実行結果
スクリプトを実行すると、図 8 のようにメッセージが表示されます。
図 8: rcv-instance.sh の実行結果
以下では、DAT などの SCSI テープ装置を利用してバックアップします。 テープ装置には、tar コマンドでバックアップデータを書き込みます。
テープ装置が、スペシャルファイル /dev/st0 に割当られている場合、以下のようにコマンドを入力します。 なるべくサイズを小さくするため、圧縮します。
# tar zcvf /dev/st0 /PlusBackup/postgres/bkup1
インスタンスの復旧は、リモートディスクからの復旧と同様、以下 2 つのスクリプトで行います。
rcv-root.sh | インスタンス復旧用ディレクトリの作成 |
rcv-instance.sh | インスタンスの復旧用スクリプト |
リモートディスクの場合と同様に実行し、実行結果も同様です。
# mkdir -P /PlusArchive/postgres # chown postgres:postgres /PlusArchive/postgres
$ cd /PlusArchive/postgres $ tar zcvf /dev/st0
退避情報をリストアしたディレクトリを環境変数「PGARC」に設定します。rcv-instance.sh をインスタンス管理者で実行します。
$ ./rcv-instance.sh
実行結果は、リモートディスクの実行結果と同じです。
DVD 装置は、テープ装置と同様に tar コマンドでバックアップすることでできます。 今回は、USB タイプの DVD-RAM を利用した例を説明します。 USB タイプのものは SCSI デバイスと認識されます。 他に SCSI 装置がなかったため、/dev/scd0 として認識されました。
以下のようにコマンドを入力します。
$ tar zcvf /dev/scd0 /PlusBackup/postgres/bkup1
インスタンスの復旧は、リモートディスクからの復旧と同様、以下 2 つのスクリプトで行います。
rcv-root.sh | インスタンス復旧用ディレクトリの作成 |
rcv-instance.sh | インスタンスの復旧用スクリプト |
リモートディスクの場合と同様に実行し、実行結果も同様です。
テープ装置から、作業ディレクトリに退避情報をリストアします。
# mkdir -P /PlusArchive/postgres # chown postgres:postgres /PlusArchive/postgres
$ cd /PlusArchive/postgres $ tar zcvf /dev/scd0
退避情報をリストアしたディレクトリを環境変数「PGARC」に設定します。rcv-instance.sh をインスタンス管理者で実行します。
$ ./rcv-instance.sh
実行結果は、リモートディスクの実行結果と同じです。
今回は、バックアップデータをリモートディスクや、外部媒体へバックアップする方法をご紹介しました。 次回は、日々のデータ更新の差分だけをバックアップし、作業時間を短縮できる「差分バックアップ」についてご説明します。