このプロダクトの目的は、PostgreSQLのアーカイブログのサイズを小さくすることです。 サイズ縮小は、WALのアーカイブ (archive_command) を行う際に " removable" と マークされている (PostgreSQL 8.3 で導入されました) バックアップブロック (full page write) を、対応する増分ログで置き換えることで行います。
Full Page Write 改善プロジェクトは PostgreSQL コミュニティ のプロジェクトであって、pgFoundry のプロジェクトの一つです。 これは NTT のオープンソースソフトウェアセンタで行っております。
このプロジェクトの PgFoundry のページは http://pgfoundry.org/projects/pglesslog にあります。 このページには、 downloads, documentation, bug reports, mailing lists その他の情報があります。
Lesslog は、PostgreSQLのアーカイブログを圧縮してサイズを小さくするツール群です。 Lesslog は、次のプログラムで構成されています。
このコマンドは pg_compresslog で除去したページヘッダの情報を復元し、 物理レコードが記録してあった場所をダミーデータで埋め、各ログレコー ドの LSN を復元してアーカイブリカバリで使用できるようにページサイ ズの復元も行います。 このコマンドは、recovery.conf の restore_command で指定します。 その結果、ファイルのサイズはアーカイブ前の WALセグメントファイルと 同じになります。 埋め草には "NOOP" WALレコードを用います。このレコードはリカバリ時 の redo 関数では無視されます。
Pglesslog は、PostgreSQL 8.3.x で動作します。ここでは、PostgreSQL 8.3 で導入された "removable" フラグを使います。It uses "removable" flag in WAL
full_page_writes = on
archive_command = 'pg_compresslog "%p" /"%f"'
pg_compresslog [from [to]]
pg_compresslog は、< from > で指定されたWALセグメントファイ
ルを読み込み、 物理ログを除去し、< to > で指定されたファイル
に結果を書き出します。
もし < from > が省略されるか、あるいは "-" が指定されると、
WALセグメントファイルは標準入力から読み込みます。
< to > が省略されたり "-" で指定されると、アーカイブファイル
は標準出力に書き出します
pg_compresslog で対応する増分ログに置き換えられる full page write
は、オンラインバックアップの実行中にかかれたもの以外になります。
pg_compresslog コマンドの出力をアーカイブリカバリで使用するには、
pg_decompresslog コマンドを使ってファイルを復元しなければなりません。
pg_compresslog は成功時にはゼロを、そうでない場合には 1 を返し ます。
pg_decompresslog [from [to]]
pg_decompresslog は、< from > 引数で指定されたアーカイブログ
ファイルを読み込み、除去した物理ログに相当する領域を復元し、各ログ
のLSNを復元し、結果を < to > 引数で指定されたファイルに書き
出します。
もし < from > が省略されたり "-" で指定されていた場合は、標
準入力から読み込みます。< to > が省略されていたり "-" で師弟
されていると、結果は標準出力に書き出されます。
pg_compresslog で増分ログに置き換えられた full page write は、オン
ラインバックアップの実行中以外に書かれたものになります。
pg_compresslog コマンドで書き出したファイルを < from > 引数に
指定することができます。
成功時にはゼロを、エラーが起こった場合は 1 を返します。
Lesslog 1.1 では、HEAP2_CLEAN WAL レコードに対応する増分ログを生成する ことができます。このログレコードは、vacuum や prune (HOT) で生成されれ るものです。このWALレコードの full page write は WAL セグメントの多く の部分を占めるため、このWALレコードの full page write を増分ログで置き 換えることで、アーカイブ時のWALのサイズは劇的に小さくすることができる ようになります。
Pavan Deolasee氏とHeikki Linnakangas氏には示唆に富んだコメントと助言を いただいた。彼らの助言なしにはこれほど単純には実装ができなかった。