先日、あるお客様からこんなお話を聞きました。 「PowerGres Plus は運用に優しいですね。」 私が「どんなところでしょうか?」とお聞きしたところ、「バックアップする機能が GUI とコマンド両方揃っているじゃないですか。 GUI は確かに便利で欲しい機能ですけど、システムを構築する側にとってみればコマンドが無いとスクリプトが書けないんですよ!」、私は「なるほど!」と今さらながら、そのお客様の話に聞き入ってしまいました。
PowerGres Plus では、Administrator によるワンタッチバックアップや、コマンドによるバックアップを行うことができます。 このバックアップデータを使って、どんな場合でも最新状態にリカバリすることができます。
第 3 回では、バックアップとリカバリを実際に行い、PowerGres Plus のバックアップとリカバリの仕組みをご紹介します。
PowerGres Plus では、バックアップデータに加え、行った処理を記録するログ情報があります。 リカバリを行うときは、バックアップデータとログ情報を利用して最新の状態に復旧することができます。
PowerGres Plus では、Administrator のメニューから実行する方法と、pgx_dmpall コマンドを実行する方法があります。
PowerGres Plus では、pgx_rcvall コマンドで、インスタンスを格納するディレクトリおよびデータベーススペースを復旧します。
それでは、実際にバックアップをしながら、PowerGres Plus のバックアップの仕組みをご紹介します。
第 2 回目で紹介したデータベースを例に説明します。 バックアップの実践では、Administrator を利用したバックアップを中心に説明します。 pgx_dmpall コマンドを利用したバックアップの方法は後で説明します。
バックアップがどのように行われているかを見るために、各ポイントで、バックアップディレクトリ (/PlusBackup/postgres) の中を見ることにします。
以下はデータベース作成後のバックアップディレクトリを表示したものです。 データベースに対する処理が記録されるログファイル (arclogxxx) とインスタンスの環境設定ファイルが格納されるディレクトリ (bkup1) があります。
図 2: books 表を作成して、データを挿入した後のバックアップディレクトリ
ここで 1 回バックアップをしてみましょう。
ブラウザで、以下の URL を入力し Administrator を起動します。
https://hostname:13000/admin/postgres.html
備考: 上記 URL の、「postgres」は、PostgreSQL Plus Setup で指定したインスタンス名です。 「hostname」は、PostgreSQL Plus をインストールしたサーバのホスト名です。
最初に日本語表示か、英語表示かを選択する画面が表示されるので、日本語表示画面の方を選びます。
初期画面が表示されるので、インスタンス管理者用のユーザ ID とパスワードを入力します。
Administrator のメニューから、データベースのバックアップ を選択します。 表示されているバックアップの情報は、データベースを作成したときに自動的に行われるものです。
バックアップ ボタンをクリックして、バックアップを行います。 画面を更新し、最後にバックアップを行った日時に変更されていれば、バックアップは完了です。
ここでもバックアップディレクトリの中を見てみましょう。
バックアップを行うとそれまでのログファイルから、新しいログファイルに切り替わります。 図 5 をご覧ください。 arclog007 の日付が変更され新たに使用されるログ情報となったことがわかります。
図 5: バックアップ直後のバックアップディレクトリ
リカバリの結果を確認するために、PowerGres Plus を使ってみよう。 第 2 回 データベース作成とアプリケーション実行 で作成した books 表の図書情報を 1 件削除してみます。
図 6: 図書情報の削除
この状態で、異常が発生したと仮定してリカバリをしてみます。 ここでは、インスタンス情報を格納するディレクトリ (/PlusData/postgres) の情報とデータベーススペース (/PlusDbspace/postgres/dbsamplespace) を削除して、異常をシミュレーションしてみましょう。
最初に Administrator でインスタンスを停止してください。 次に以下のようにコマンドで、インスタンスディレクトリの情報とデータベーススペースを削除します。
図 7: インスタンスディレクトリとデータベーススペースの削除
この状態でリカバリを行ってみましょう。
リカバリは、インスタンス管理者が pgx_rcvall コマンドを利用して行います。 使い方は、-D でインスタンスを格納するディレクトリを指定し、-B でバックアップディレクトリを指定します。
図 8: リカバリ
ここで、先ほど消したはずのインスタンスディレクトリや、データベーススペースが復旧されているか確認してみましょう。
図 9: リカバリ後のインスタンス情報を格納するディレクトリとデータベーススペース
正しくファイルは復元されています。 ではデータはどこまで復元されているでしょうか。 インスタンスを起動して、books 表を見てみましょう。 バックアップをした後の DELETE コマンドの処理までがきちんと復旧されています。 このように、PowerGres Plus では、バックアップをしたタイミングに関係なく、異常が発生した直前の状態までデータベースを復旧することができます。
図 10: リカバリ後のデータ
リカバリコマンドの詳細は、PowerGres Plus のマニュアルをご覧ください。
このように、最新の状態に復旧するためには、バックアップデータを格納するディレクトリが、インスタンスを格納するディレクトリやデータベーススペースとは別のディスクに配置されることが必要です。 もし、すべてのディレクトリが同一のディスクに配置されていて、ディスクの故障が発生したらどうなるでしょう。 データベースは壊れてしまい、データベースを復旧するためのバックアップデータもなくなってしまうので、データベースを復旧することができなくなります。
それでは、最後にバックアップコマンドを OS の自動化ソフトウェアに組み込んで実行する方法を説明します。
Linux システムでは、定期的にコマンドを実行するために cron を使用します。 cron の設定は、crontab コマンド に編集オプション -e をつけて行います。 以下の例では、毎週日曜日の 1 時にバックアップを行うようにします。
$ crontab -e
システム標準のエディタが起動されるので、以下のように入力します。
SHELL=/bin/sh 00 01 * * 0 postgres /usr/local/pgsqlplus/bin/pgx_dmpall -D /PlusData/postgres
フォーマットは、以下のようになっています。
分 時 日 月 曜日 実行ユーザ 実行コマンド
曜日は、日曜日から土曜日までを、0 から 6 の数字で表します。
pgx_dmpall は、バックアップを行うコマンドです。 -D オプションでインスタンスを格納するディレクトリを指定します。
crontab コマンドに表示オプション -l をつけて内容を確認できます。
$ crontab -l
図 11: cron の設定確認
cron や pgx_dmpall コマンドの詳細は、マニュアルを参照してください。
今回は、PowerGres Plus のバックアップとリカバリをご紹介しました。 PowerGres Plus では、GUI とコマンドの両方が用意されているので、Administrator によるワンタッチバックアップも、OS の自動化ソフトウェアへの登録によるバックアップも行えます。 バックアップディレクトリ、インスタンスを格納するディレクトリ、データベーススペースを別ディスクに配置することが、最新の状態にデータベースを復旧するポイントです。 今回ご紹介した内容を応用したシステムの構築と運用につきましては、高信頼化ソリューションでご紹介しておりますので、そちらもご覧ください。