PG 8.3, Disk Full, сервер не запускается - PullRequest
4 голосов
/ 03 февраля 2012

Этот вопрос касается Postgresql 8.3.Я пока не могу создать теги, поэтому я выбираю версию 8.4 как тег.

Это тестовый сервер, но я не могу подключиться к нему, потому что после нескольких дней интенсивного использования диск, на котором находится Postgres, заполнен.Поскольку я не могу запустить СУБД, я не могу создать вакуум.

При перезагрузке система говорит:

Starting PostgreSQL 8.3 database server: mainThe PostgreSQL server failed to sta
rt. Please check the log output: FATAL: could not write lock file "postmaster.pi
d": No space left on device failed!
 failed!

Linux работает нормально и имеет достаточно свободного дискового пространства.Postgresql имеет свой собственный раздел, смонтированный в / var / lib /, и имеет ноль свободных байтов.

Я думаю, что мне нужно освободить место, прежде чем я смогу перезапустить сервер базы данных, но я не знаю, какие файлы удалить.Файлы журналов не находятся в одном разделе, поэтому их очистка не поможет.Кто-нибудь может мне помочь в этом?

Ответы [ 3 ]

8 голосов
/ 03 февраля 2012

pg_log может быть очищен для обычных журналов для администраторов. Не удаляйте каталоги pg_xlog или pg_clog, как для внутренних баз данных (относитесь к ним так же, как к файлам данных в базе).Удаление их может вызвать проблемы с перезапуском, даже если у вас есть место.

Процесс, который я бы попробовал (после создания резервной копии):

Найти каталог в дереве /var/lib/pgsql, которыйдовольно большой, но не такой большой, что его нельзя скопировать в другую файловую систему.Это не обязательно должен быть весь каталог base и т. Д., Это может быть подкаталог внутри него.

Скопировать содержимое этого каталога (включая любые подкаталоги) в другую файловую систему.

Удалите старый каталог, а затем создайте символическую ссылку, где старый каталог находился в новом месте.

Запустите базу данных и VACUUM FULL (или теперь у вас есть доступ, или вы можете просто удалить БД, если выУ вас есть база данных, без которой вы можете жить).

Завершите работу базы данных.

Удалите символическую ссылку и снова переместите файлы обратно в файловую систему var / lib.

Тот факт, что вы не можете сделать резервную копию файловой системы, заставил бы меня немного не хотеть делать это в вашей среде.

3 голосов
/ 03 февраля 2012

Удалите файлы журналов, расположенные в / pg_log, чтобы что-то очистить и начать работу.

VACUUM не освободит дисковое пространство, вам нужен VACUUM FULL.Вы также можете удалить некоторые индексы или другие вещи, которые вам не нужны, просто чтобы освободить место.

== edit ==

Скопируйте pg_ident.conf на другой диск или удалите все комментарии насделать только немного места.После создания копии вы также можете очистить postgresql.conf.

После этого запустите PostgreSQL в однопользовательском режиме (используя --single) и подключитесь к базе данных, которую вы хотите очистить.вверх.После очистки остановите PostgreSQL и перезапустите в обычном режиме.

2 голосов
/ 03 февраля 2012

Вы должны переместить файлы данных в другой раздел, а затем запустить сервер, затем очистить пылесосом и переместить файлы обратно. Легко.

...