PowerGres

技術情報 | PowerGres体験記 | 第 4 回 外部媒体へのバックアップ – 高信頼化ソリューション

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

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

第 4 回 外部媒体へのバックアップ 『備えあれば憂いなし』

はじめに

データベースの運用では、どんな小規模なシステムでも高い信頼性が求められます。 システム管理者の皆様は定期的なデータベースのバックアップの重要性を認識されていると思います。 最近では非常に多くの種類のハードウェア、ソフトウェアが販売されています。 ハードウェア自体の信頼性はさまざまであり、加えて、ハードウェアとソフトウェアの組み合わせにより、問題が発生する可能性があるため、システムの信頼性を高めることが難しくなってきています。

PowerGres Plus では、データベースのバックアップと、バックアップデータを外部媒体へ退避するスクリプトを OS のスケジューリング機能に登録し、簡単に外部媒体へのバックアップを行い、外部媒体にバックアップしたデータから、データベースを復旧することができます。

第 4 回では、PowerGres Plus の外部媒体へのバックアップ機能を説明します。

バックアップの概要

システム管理者の皆様は、データベース運用で、定期的なバックアップを行い、データの二重化をすでにされていると思います。

PowerGres Plus では、そのバックアップデータをリモートディスクや、外部媒体に退避することで、データの三重化を行い、さらに信頼性を高めることができます。

バックアップの概要

図 1: バックアップの概要

バックアップの運用

すでに、システム管理者のみなさんは、システムのスケジューリング機能などを利用して、定期的なバックアップ (pgx_dmpall コマンド) を行っていると思います。 バックアップデータをさらに外部媒体に退避しておくことで、ハードウェアやディスクに障害が発生しても、外部媒体からバックアップした時点に復旧することができます。

二次退避域へのバックアップ概要

図 2: 二次退避域へのバックアップ概要

リモートディスクへのバックアップの実践

リモートディスクへのバックアップでは、以下を行います。 以下の処理は、1 回行えば、定期的にバックアップを行い、バックアップデータをリモートディスクへ退避できます。

リモートディスクの準備

リモートディスクの設定は色々ありますが、今回は、NFS でディスクをマウントして、バックアップします。 バックアップを行っているデータベースサーバを「dbserver」、NFS のサーバとなるファイルサーバ名を「fileserver」とします。

  1. ファイルサーバ (fileserver) での設定

    退避用ディレクトリを作成します。

    # mkdir -p /PlusArchive/postgres
    # chown postgres:postgres /PlusArchive/postgres

    作成したディレクトリを、共有できるように設定します。 このとき、書き込み可能となるように権限を設定します。

    下記の画像は、Red Hat Enterprise Linux 3 のものです。

    NFS の設定

    図 3: NFS の設定

    ディスクの共用は、以下のファイルを修正することでもできます。

    /etc/exports

    詳細は、/etc/exports または、NFS のマニュアルを参照してください。

  2. データベースサーバ (dbserver) での設定

    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 回目からは行う必要はありません。

バックアップ用スクリプトの cron への登録

サンプルスクリプト「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

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

cron 設定の確認

図 4: cron 設定の確認

実行結果として、以下のようなメッセージがシステムログに出力されます。

リモートディスクへのバックアップ

図 5: リモートディスクへのバックアップ

インスタンスの復旧

リカバリの概要

図 6: リカバリの概要

インスタンスの復旧は、以下 2 つのスクリプトを実行して行います。

rcv-root.sh インスタンス復旧用ディレクトリの作成
rcv-instance.sh インスタンスの復旧用スクリプト
rcv-root.sh の実行

スクリプトを実行すると、図 7 のようにメッセージが表示されます。

図 7: rcv-root.sh の実行結果

rcv-instance.sh の実行

スクリプトを実行すると、図 8 のようにメッセージが表示されます。

図 8: rcv-instance.sh の実行結果

テープ装置へのバックアップの実践

以下では、DAT などの SCSI テープ装置を利用してバックアップします。 テープ装置には、tar コマンドでバックアップデータを書き込みます。

バックアップの実行

  1. バックディレクトリの内容をすべてテープ装置に退避

    テープ装置が、スペシャルファイル /dev/st0 に割当られている場合、以下のようにコマンドを入力します。 なるべくサイズを小さくするため、圧縮します。

    # tar zcvf /dev/st0 /PlusBackup/postgres/bkup1

インスタンスの復旧

インスタンスの復旧は、リモートディスクからの復旧と同様、以下 2 つのスクリプトで行います。

rcv-root.sh インスタンス復旧用ディレクトリの作成
rcv-instance.sh インスタンスの復旧用スクリプト
rcv-root.sh の実行

リモートディスクの場合と同様に実行し、実行結果も同様です。

テープ装置から、作業ディレクトリに退避情報をリストアします。

作業ディレクトリの作成 (root で実行)
# mkdir -P /PlusArchive/postgres
# chown postgres:postgres /PlusArchive/postgres
テープ装置からのリストア (インスタンス管理者で実行)
$ cd /PlusArchive/postgres
$ tar zcvf /dev/st0
rcv-instance.sh の実行

退避情報をリストアしたディレクトリを環境変数「PGARC」に設定します。rcv-instance.sh をインスタンス管理者で実行します。

$ ./rcv-instance.sh

実行結果は、リモートディスクの実行結果と同じです。

DVD 装置へのバックアップの実践

DVD 装置は、テープ装置と同様に tar コマンドでバックアップすることでできます。 今回は、USB タイプの DVD-RAM を利用した例を説明します。 USB タイプのものは SCSI デバイスと認識されます。 他に SCSI 装置がなかったため、/dev/scd0 として認識されました。

バックアップの実行

  1. バックアップディレクトリの内容をすべて、DVD-RAM に退避

    以下のようにコマンドを入力します。

    $ tar zcvf /dev/scd0 /PlusBackup/postgres/bkup1

インスタンスの復旧

インスタンスの復旧は、リモートディスクからの復旧と同様、以下 2 つのスクリプトで行います。

rcv-root.sh インスタンス復旧用ディレクトリの作成
rcv-instance.sh インスタンスの復旧用スクリプト
rcv-root.sh の実行

リモートディスクの場合と同様に実行し、実行結果も同様です。

テープ装置から作業域へのリストア

テープ装置から、作業ディレクトリに退避情報をリストアします。

作業ディレクトリの作成 (root で実行)
# mkdir -P /PlusArchive/postgres
# chown postgres:postgres /PlusArchive/postgres
テープ装置からのリストア (インスタンス管理者で実行)
$ cd /PlusArchive/postgres
$ tar zcvf /dev/scd0
rcv-instance.sh の実行

退避情報をリストアしたディレクトリを環境変数「PGARC」に設定します。rcv-instance.sh をインスタンス管理者で実行します。

$ ./rcv-instance.sh

実行結果は、リモートディスクの実行結果と同じです。

最後に

今回は、バックアップデータをリモートディスクや、外部媒体へバックアップする方法をご紹介しました。 次回は、日々のデータ更新の差分だけをバックアップし、作業時間を短縮できる「差分バックアップ」についてご説明します。

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

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

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

ページトップへ