web-dev-qa-db-ja.com

postgresqlでいっぱいになったディスク領域を処理する

Django postgresql 9.3.10バックエンドを使用するWebアプリケーション(Linux OSに座っている)があります。ディスクがいっぱいになるエラーが発生しました。テーブルを切り詰めようとしても、エラーが発生します。種類の:

ERROR:  could not extend file "base/30137/33186048": No space left on device
HINT:  Check free disk space.

サーバーにディスクスペースを簡単に追加することも、このVMのデータを削除することもできません。ただし、切り捨ての候補となるテーブルがいくつかありますが、現在はそれらを切り捨てることもできないようです。

私がここで何ができるかについて誰かが私にアドバイスを与えることができますか?これは私の運用サーバーに大きな打撃を与えており、私はここでたまたまDBAになっているので、完全に困惑しています。

14
Hassan Baig

PostgreSQLはテーブルに変更を加える前にWALを書き込む必要があるため、削除してディスクスペースを解放するために空きディスクスペースが必要です。

ディスクがいっぱいになると、PostgreSQL内から回復できなくなります。 TRUNCATEでもWALに書き込む必要があります。

したがって、ボリュームの一部のスペースを解放する必要があるか、ボリュームを拡張します。 PostgreSQLログファイルがpg_logデータディレクトリで、それらのいくつかを安全に削除して、Pgを再起動できます。

削除するしない削除pg_xlogまたはpg_clog。これらはサーバーエラーログではなく、データベース、トランザクションログ、コミットログの重要な部分です。

9
Craig Ringer