現在、ほとんどの案件では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が止められていたってオチでした(笑)