Help us understand the problem. What is going on with this article?

溜まったアーカイブログを削除するタイミング

PostgreSQLには、PITRするためにWALファイルをアーカイブする機能があります。
しかし、アーカイブされたWALファイルはユーザが削除しない限り、溜まり続けるため、不要になったアーカイブWALは適宜削除する必要があります。

今回はその削除の判断の仕方と削除手順について書きます。

前提条件

  • PostgreSQL 9.5.2
  • CentOS 7.2

削除対象となるアーカイブWALとは

アーカイブされたWALファイルは、取得していたベースバックと組み合わせたPITRに使用します。
つまり、最も古いベースバックアップよりも古いアーカイブWALは使うことはないため、それらのファイルが削除対象となります。

削除対象となるアーカイブWALの確認方法

とても簡単です。
ベースバックアップ取得時に作成されるbackup_labelのSTART WAL LOCATIONで確認することができます。

以下の例の場合、対象のベースバックアップファイルが必要なWALファイルは「file 000000010000000000000036」とそれ以降のWALファイルということがわかります。つまり、000000010000000000000035、000000010000000000000034~でアーカイブWALは削除対象となります。

$ cat <取得したベースバックアップファイル>/backup_label
START WAL LOCATION: 0/36000028 (file 000000010000000000000036)
CHECKPOINT LOCATION: 0/36000060
BACKUP METHOD: streamed
BACKUP FROM: master
START TIME: 2016-06-26 09:15:44 JST
LABEL: pg_basebackup base backup

※pg_basebackupで取得したベースバックアップの場合、上記のようなbackup_labelが作成されます。

補足1:アーカイブ機能を有効にする設定

そもそもの話として、WALファイルをアーカイブするには以下の設定が必要になります。

postgresql.comf
wal_level = archive
archive_mode = on
archive_command = '/bin/cp %p /home/kazu/local/pg952/arch/%f'

※PITRするには、wal_levelをarchive、hot_standbyにする必要があります。

※注意
2016年9月にリリースされたPostgreSQL9.6を使用する場合、archiveとhot_standbyが新しい設定値「replica」に統合されました。

補足2:pg_archivecleanupによるアーカイブWALの削除

アーカイブWALを削除するためのコマンドがPostgreSQLでは提供されています。
http://www.postgresql.jp/document/9.5/html/pgarchivecleanup.html

とは言っても、結局は対象のアーカイブWALを指定する必要があるので、手で消すのとそんなに変わらないような気もします。

追記(2020/03/31)
すみません。内容に不備があったので、訂正します。

pg_archivecleanupは引数にバックアップ履歴ファイルを使用することで、対象のバックアップに不要なアーカイブWALを自動で抽出して処理をすることができます。

ですので、手動でやるよりは、このユーティリティツールを使用するほうが安全と言えます。

以下、実行例です。

$ pg_archivecleanup -n ~/local/11/arc 000000010000000000000005.000000D0.backup 
/var/lib/pgsql/local/11/arc/000000010000000000000001
/var/lib/pgsql/local/11/arc/000000010000000000000002
/var/lib/pgsql/local/11/arc/000000010000000000000003
/var/lib/pgsql/local/11/arc/000000010000000000000004

-nはドライランオプションで、削除対象となるアーカイブWALを表示することができます。

第2引数にはアーカイブディレクトリを指定し、第2引数はバックアップ履歴ファイルの名前を指定しています。(このとき、バックアップ履歴ファイルは第1引数のディレクトリ内のものが選択されることに注意してください。)

U_ikki
PostgreSQL歴は5年ほど。PostgreSQLはいいぞ!
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした