前のページでダンプしたデータの復元手順を示します。特に初めて復元作業を行われる方は、pg_dump や pg_dumpall で誤ったオプションが指定されれているとデータ消滅といった最悪の結果を招きます。
本格的な運用を前に、これらの作業を確認しておくことは大変重要です。データベースサーバを構築したら、事前にバックアップ、リストア作業に関してしっかり検証される事をおすすめします。
PostgreSQLが実行するバックアップ、リストア作業はサービスを停止させないで実行できるメリットがありますが、前述したように初めての方は誤った操作で取り返しのつかない結果を招く可能性があります。
既に重要な情報がデータベース内に構築されている場合は、細心の注意が必要ですが、万が一の保険に備えてディレクトリ毎バックアップする方法もあります。原始的な方法ですが確実です。
CentOS-4.5 でパッケージ管理を行っている場合、PostgreSQL の情報が格納されているディレクトリは /var/lib/pgsql/data です。ここに全ての情報が記録されてます。このディレクトリをバックアップします。
PostgreSQL サーバーの停止 (必ず停止させます)
/tmp/backup ディレクトリ(任意) に /var/lib/pgsql/data を圧縮保存
/tmp/backup/PostgreSQL.tar.gz がバックアップファイルになります。復元する際は PostgreSQL のバージョンに注意する必要があります。
PostgreSQL サーバーの開始
復元は、元のディレクトリの差し替える作業になります。必ず、PostgreSQL サーバーを停止してから行う必要があります。
念のため元のディレクトリをリネイムしておきます。
/var/lib/pgsql ディレクトリに data ディレクトリを解凍します。
PostgreSQL サーバーを開始し、問題がないか確認します。
こちらの方法で作成したダンプファイルを復元します。pg_dumpall ではクラスタ全てを一つのダンプファイルに出力するため、PostgreSQL ユーザ情報を含め全てを復元する事が出来ます。(pg_dumpallオプションによる)
復元するためには、スーパーユーザー権限をもつ PostgreSQL ユーザー、一般的には potgres で実行する必要があります。尚、復元には psql コマンドを使用します。
こちらで作成した dump ファイルを復元する例です。
-h は復元先ホスト名(IPアドレス) -U は実行ユーザー、 -d は接続するデータベースを指定しています。psql コマンドはデータベースに接続する必要があります。CentOS-4.5 では template0 / template1 が用意されているのでそれを指定しています。
もし、pg_dumpall のオプションで間違いがあった場合など復元に問題があれば、保険としてリネイムしておいたディレクトリを戻せばよいことになります。
こちらはデータベースのみの復元となります。pg_dump を実行したユーザー、或いはそのデータベースに権限をもつユーザーで実行する必要があります。
こちらで作成したデータベースを復元する例です。
データベースの規模や運用目的によっても適切なバックアップ、リストア方法を考える必要があります。日本語ドキュメントが充実していますのでバージョンにあったドキュメントを熟読されることをお勧めします。
参照 => PostgreSQL日本語ドキュメント