当サイトはプロモーションが含まれています。

PostgreSQLのエラー、VACUUMで対処する

トラブル

現在、ほとんどの案件ではMySQL系を扱う筆者ですが、ごく一部でPostgreSQLを扱ったこともあります。
そのごく一部の案件で、クライアントから「PostgreSQLが動かない!」と連絡がありました。

早速、該当のページを見てみると、

FATAL: database is not accepting commands to avoid wraparound data loss in database...
HINT: Stop the postmaster and use a standalone backend to vacuum database...

VACUUMすべし?
あれ~こうならないように対策しておいたはずなのになぁ…。

復旧方法

1.PostgreSQLを止めて、PostgreSQLの管理ユーザーになります。

service postgresql stop
su - postgres

2.シングルユーザーモードでPostgreSQL起動、VACUUMします。

postgres -D /usr/local/pgsql/data/ [対象のDB名]

PostgreSQL stand-alone backend *.*.*
backend> VACUUM
補足
WARNING文等が表示されるので、表示されなくなるまで実行します。
なお、途中で別のデータベースも表示される場合があるので、その場合には入り直して実行します。

3.シングルユーザーモード終了後、PostgreSQLを再起動します。

Ctrl + D
service postgresql start

以上、復旧・解決しました。
まぁ、納品後にクライアントで色々いじった挙句、メンテナンス用のcronが止められていたってオチでした(笑)