Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.

PostgreSQL Error 53100: disk_full — исправление переполнения диска

Обновлено: 25.08.2026  ·  Официальная база знаний
  • Ошибка: ERROR: could not extend file: No space left on device (SQLSTATE 53100).
  • База данных переходит в режим read-only или аварийно останавливается (PANIC).
  • Сбой записи новых транзакций в каталог pg_wal.

1. Проверка свободного места по точкам монтирования

df -hT /var/lib/postgresql/

2. Очистка временных файлов сортировки (pgsql_tmp)

Тяжелые запросы могли создать временные файлы гигабайтного размера, которые можно безопасно удалить:

find /var/lib/postgresql/ -type d -name "pgsql_tmp" -exec rm -rf {}/* \;

3. Безопасная очистка WAL через pg_archivecleanup

Никогда не удаляйте файлы из pg_wal командой rm! Используйте штатную утилиту:

# Поиск старейшего нужного WAL сегмента
pg_controldata /var/lib/postgresql/15/main | grep "Latest checkpoint's REDO WAL file"

# Очистка устаревших файлов до контрольной точки
pg_archivecleanup /var/lib/postgresql/15/main/pg_wal 00000001000000A100000045

4. Удаление неиспользуемых слотов репликации

Неактивные слоты удерживают WAL на диске бесконечно:

SELECT slot_name, active, wal_status FROM pg_replication_slots WHERE active = 'f';
-- Удаление мертвого слота
SELECT pg_drop_replication_slot('dead_slot_name');
Практический опыт инженера: Всегда настраивайте параметр wal_keep_size с разумным лимитом (например, 16GB) и используйте max_slot_wal_keep_size, чтобы мертвые реплики не могли обрушить основной сервер.

Частые вопросы (FAQ)

Что произойдет, если удалить активный WAL файл через команду rm?

СУБД моментально упадет в состояние PANIC, а при последующем старте не сможет восстановиться из-за потери журнала транзакций.

Почему pg_wal разрастается до заполнения 100% диска?

Основные причины: сбой архивации (archive_command возвращает ошибку) или зависший слот физической/логической репликации.

Как предотвратить падение кластера из-за диска?

Вынесите каталог pg_wal на отдельный физический диск или раздел LVM, изолировав его от каталога основных таблиц base.

Помогает ли VACUUM FULL освободить место на диске при ошибке 53100?

Нет! Для выполнения VACUUM FULL требуется дополнительное свободное место на диске, равное размеру сжимаемой таблицы.