в первую очередь:
Upgrade
Даже если вы не можете до 8,2, 8,3 или 8,4 - по крайней мере перейти на новейший 8,1 (который 8.1.17 в данный момент, но будет 8.1 .18 через 1-2 дня).
Во-вторых: диагностируйте, в чем проблема.
Используйте инструмент du, чтобы определить, где именно находится место. Какой каталог занимает слишком много места?
Заполните с df то, что является общим используемым пространством, а затем проверьте, насколько это каталог PostgreSQL.
Лучший вариант заключается в следующем:
cd YOUR_PGDATA_DIR
du -sk *
cd base
du -sk *
cd LARGEST DIR FROM PREVIOUS COMMAND
du -sk * | sort -nr | head
Теперь, когда вы знаете, какой каталог в PGDATA использует место, вы можете сделать что-то об этом.
если это журналы или pg_temp - перезапустить pg или удалить журналы (pg_clog и pg_xlog не являются логами в общем значении слова, никогда ничего не удаляйте!).
Если это то, что в вашем базовом каталоге, а затем:
числовые каталоги в базовом каталоге относятся к базам данных. Вы можете проверить это с:
select oid, datname from pg_database;
Когда вы знаете, базу данных, которая использует большую часть пространства, подключиться к нему, и проверить, какие файлы используют большую часть пространства.
имена файлов будут численными с дополнительным «.digits» суффикс - это суффикс (на данный момент) не имеет значения, и вы можете проверить, что именно представляет собой файл с помощью следующей команды:
select relname from pg_class where relfilenode = <NUMBER_FROM_FILE_NAME>;
После того, как вы знаете, какие таблицы/indexs используют большую часть пространства - вы можете VACUUM FULL, или (намного лучше) выдать команду CLUSTER на них.
Спасибо за ответ! Моя проблема в том, что диск на 100% заполнен. Вакуум и кластер нуждаются в свободном диске для запуска. Можно ли полностью удалить данные из БД без запуска вакуума/кластера? – jorgen
Найдите стол, в который вы можете пожертвовать, и ПРОВЕРЬТЕ его. Это немедленно освободит место. – 2009-09-04 13:16:32
Благодарим за оказанную помощь! – jorgen