[pgsql-jp: 41806] PostgreSQL9.3でのclogファイル削除

Keiichi Sadanaga ksfore @ gmail.com
2015年 8月 7日 (金) 09:28:05 JST


貞永と申します。

PostgreSQL9.3, pgpool-ii 3.3.1を使用したLB+SRの環境にて、

ERROR: could not access status of transaction xxxxxxxx
Detail: Could not open file "pg_clog/xxxx": No such file or directory
(一部マスク)

というエラーが特定のテーブルへのselect時に発生しています。
調査すると、削除されたclogファイルは、clogの中でも一番古いファイルでした。
DB全体は稼働しており、他への影響は今のところないようです。

サイトを探してみると
ddコマンドで0埋めたファイルを削除されたファイルとして作成すると回復するというのがいくつか見つかりました。
(ex. http://www.postgresql.org/message-id/3756.1074890527@sss.pgh.pa.us)

他には、pg_resetxlogで回復するというのもありますが、DBの再起動が必要なので、躊躇しています。

Postgresqlのバグで、トランザクション数が2^31を超えると起こりうるというのもありましたが、そこまで行っていませんでした。

今回のようなエラーが特定のテーブルへのselect時に発生する場合の対応は、上記のddで解消するものでしょうか。
最終的にはpg_resetxlogをすれば解消するものでしょうか。
本番環境なので、あまり試行はできないのですが、なるべく停止をせずに解消したいと思っています

また、clogファイルが削除されるというのは、vacuumでの処理に伴うものでしょうか?(人手では削除していません)

clogファイルがどのようなタイミングでどのような条件で削除されるのでしょうか。

また、selectする際に過去のトランザクションがあるclogを見に行くのが、仕組み的にわかっていないですが、vacuumがされていない為でしょうか。autovacuumは有効になっています。

障害への対応方法と、障害の発生原因と考えられるものについて、ご教授していただきますようお願いいたします。


pgsql-jp メーリングリストの案内