web-dev-qa-db-ja.com

Postgresのアーカイブクリーンアップ機能を理解するのに助けが必要

私は http://www.postgresql.org/docs/9.2/static/pgarchivecleanup.html を読んでいますが、私には、スレーブサーバーからすべてのWALセグメントが削除されるようですスレーブサーバーがクラッシュしたときにリカバリを実行する必要はありません(つまり、スレーブが実行されている距離に応じて、基本的には最後の1つまたは数個のセグメントを除くすべて)。不幸なことにデータの破損や偶発的な削除が発生した場合に、可能であれば緊急のポイントインタイムリカバリを実行できるようにしたいと考えています。これを行うには、次の選択肢があります。

  1. 最後のベースバックアップが作成されてからallWALセグメントを保持します(私の場合、これはスレーブサーバーが作成されたものです)
  2. 常にベースバックアップを作成するのか、PGBarmanなどで何かをするのですか?
  3. 私は何かを完全に誤解していますか?

オプション1が使用されている場合は、pg archive cleanupコマンドが役に立たないと想定しています。オプション2を使用する場合、意図したとおりにクリーンアップコマンドを使用する必要がありますか(コミットされた直後にすべての追加のWALセグメントを削除します)?私が見逃しているものは他にありますか(オプション3を参照)?

注:私はPostgres 9.2.4を使用しています

3
orokusaki

あなたは正しいです。 PITR機能が必要な場合は、ベースバックアップが作成されたときと復元できるようにするときの間ですべてのアーカイブを保持する必要があります。

このため、毎週新しいベースバックアップを(たとえば)毎週実行し、それらをローテーションアウトして、ベースバックアップと1週間のアーカイブを保持することをお勧めします。

PgBarmanはこれを支援できるはずです。

PITRが必要な場合は、アーカイブのクリーンアップは望ましくありません。

2
Craig Ringer