[pgsql-jp: 36953] Re: WAL の*.backupファイルは不要か?
Hisakazu Nakai
nakai @ shinko.co.jp
2006年 3月 31日 (金) 17:05:38 JST
中井です。
ありがとうございます。
Katsuhiko Okano wrote:
>>PostgreSQL8.0.3/RedHat9.0を使っています。
>>pg_start_backup()/pg_stop_backup() で生成される *.backup ファイルは
>>リカバリに必要なのでしょうか。*.backup ファイルが無くても正常にリカ
>>バリして動作しているように見えます。(少なくとも最新のデータは、記録
>>されていた。)
>
>
> バックアップすべきだと思います。
>
> データベース起動時に、
> どこからリカバリ(REDO)すればよいかを表すチェックポイントを探すため、
> バックアップ履歴ファイルを読み出して取得しようとし、
> 読み出せなかったときは制御ファイルを読み出して取得しようとします。
> そのため制御ファイルが残っていればチェックポイントを知ることが出来ます。
> #8.0.3のソースの src/backend/access/transam/xlog.cの
> #StartupXLOG関数の4098行目あたりからです。
この制御ファイルは、pg_xlogディレクトリ以外の$PG_DATAディレクトリ
内にあるのでしょうか。要するに、その制御ファイル(チェックポイント
のデータ)は、バックアップしたディレクトリ内に含まれているのでしょ
うか。そうであるならば、明示的にチェックポイントを記述している
*.backup ファイルは無くても構わないとならないでしょうか。
> しかし、pg_start_backup('LABEL')を呼び出した後に誰かが手動で
> CHECKPOINTを実行すると、制御ファイルのチェックポイントが書き換わります。
> バックアップ履歴ファイルは、pg_start_backup時のチェックポイントのままです。
> ファイルコピー中で、一部のファイルだけコピーされていたタイミングに実行された場
> 合には
> バックアップ履歴ファイルがないとおかしな事になる可能性があるのではないでしょう
> か。
そう、そこが心配なところです。例えば、最新の世代のデータのバック
アップが壊れていたときに、一つ前の世代のバックアップデータが使える
かどうかを知りたいのです。一つ前の世代のバックアップをとったときの
*.backupは、最新の世代のバックアップを取ったときに無くなっています。
> また、バックアップ履歴ファイルにはユーザーの指定したバックアップラベル
> が入っています。
> (イレギュラーな運用が発生して)どのバックアップファイル群を使ってリカバリ
> するかを人間が判断しなければならない状況では、
> ラベルファイルにある情報(例えば、不定期バックアップの理由だとか
> このバックアップには一部しか含まれていないとか)が役に立つと思います。
バックアップしたデータベースの中に、チェックポイントのデータが
含まれていれば、ユーザは何も気にせずバックアップデータとWAL
ファイルとでリカバリできるとうれしいです。唯一、気にしなければ
ならないのは、WALファイルにバックアップしたときからのログが
すべて含まれているかどうかだけなら、気楽にリカバリできます。
> ちなみに、PostgreSQL8.1からは、
> pg_stop_backup()を実行した時に古い*.backupファイルを削除するようにしました。
> (Bruce)
> とリリースノートにあります。
とすると前述のように最新のバックアップデータが壊れていた場合、
一つ前の世代のバックアップデータを使うには、一工夫必要に
なってしまいます。
チェックポイントは、データベースに記録されているから、
*.backupファイルは無くても大丈夫だよと、言ってもらえるのを
期待したんですが。:-)
逆に言うと、チェックポイントがバックアップされるデータに
含まれているのであれば、非常に便利というかありがたいのですが。
--
-=-=-=-= SHINKO ELECTRIC INDUSTRIES CO., LTD. =-=-=-=-
=-=-=-=- Research & Development Div. -=-=-=-=
-=-=-=-= Infomation Technology Research Dept. =-=-=-=-
=-=-=-=- Name:Hisakazu Nakai TEL:026-283-2866 -=-=-=-=
-=-=-=-= Mail:nakai @ shinko.co.jp FAX:026-283-2820 =-=-=-=-
pgsql-jp メーリングリストの案内