web-dev-qa-db-ja.com

VACUUM FULLが「エラー:空きディスク容量を確認してください」で失敗する

Postgres 9.4を使用しています。 \l+は164 GBだと教えてくれます。データベースでVACUUM FULLを実行しようとすると、次のエラーが発生します(数時間後)。

ERROR:  could not extend file "base/18222/20547.2": wrote only 4096 
        of 8192 bytes at block 279347
HINT:  Check free disk space.

サーバーに320 GBのSSDがあり、そのうち89 GBが利用可能です。

$ df -h
Filesystem                 Size  Used Avail Use% Mounted on
rootfs                     315G  211G   89G  71% /
udev                        10M     0   10M   0% /dev
tmpfs                      6.4G  192K  6.4G   1% /run
/dev/disk/by-label/DOROOT  315G  211G   89G  71% /
tmpfs                      5.0M     0  5.0M   0% /run/lock
tmpfs                       13G  4.0K   13G   1% /run/shm

サーバーにディスク容量を簡単に追加することはできません。他に何かできることはありますか?

この質問 を見つけたので、必要に応じて試すことができます。しかし、より少ないメモリで動作するようにVACUUM FULLに指示できるかどうか疑問に思っていました。

4
Richard

Postgresqlのドキュメントによると:

VACUUM FULLは、デッドスペースのない完全な新しいバージョンのテーブルファイルを書き込むことにより、テーブルをアクティブに圧縮します。これにより、テーブルのサイズが最小化されますが、時間がかかる場合があります。また、操作が完了するまで、テーブルの新しいコピー用に追加のディスク容量が必要です。

したがって、大きなテーブルが1つある場合、真空がフルになると、簡単にすべてのディスク領域が消費されます。多分最良のことは完全なバックアップ/復元を行うことでしょう-結果はあなたが掃除機を完全にやった場合と同じになります。

3
Dragan Matic