У меня есть веб-приложение Django с бэкэндом postgresql 9.3.10 (в операционной системе Linux). Я столкнулся с ошибкой переполнения диска, так что даже если я пытаюсь обрезать таблицу, я получаю ошибки такого рода:
ERROR: could not extend file "base/30137/33186048": No space left on device
HINT: Check free disk space.
Я не могу легко добавить больше дискового пространства на сервер и не могу удалить вещи на этой виртуальной машине. Тем не менее, есть несколько таблиц, которые являются кандидатами для усечения, но, похоже, я не могу усечь их и сейчас.
Кто-нибудь может дать мне совет, что я могу сделать здесь? Это сильно бьет по моему производственному серверу, и я здесь немного случайный администратор баз данных, так что я в полном замешательстве.
postgresql
postgresql-9.3
Хасан Бэйг
источник
источник
Ответы:
Поскольку PostgreSQL должен записать WAL, прежде чем вносить какие-либо изменения в таблицы, ему необходимо свободное дисковое пространство, чтобы удалить объекты и освободить больше дискового пространства.
Если вы позволите заполнить диск, вы не сможете восстановить его из PostgreSQL. Четный
TRUNCATE
еще нужно написать в WAL.Таким образом, вы должны освободить место на томе или расширить его. Если ваши файлы журналов PostgreSQL находятся
pg_log
в каталоге данных, вы можете безопасно удалить некоторые из них и перезапустить Pg.Вы не удалять
pg_xlog
илиpg_clog
. Это не журналы ошибок сервера, а критически важные части базы данных, журнала транзакций и журнала фиксации.источник
TRUNCATE
нужно писать в wal, и как выглядит эта запись в WAL?rm -rf /tmp/*
или удалить свой vimrc.rm -rf /tmp/*
... который может удалять и те вещи, которые вам могут понадобиться, например, сокеты приложений и т. Д. Лучше быть более избирательным. Что касается необходимого места, вы правы, оно минимально - 8k пустая таблица + несколько килобайт записей WAL для усечения, распределения xid, записи коммита и т. Д.