Эксплуатация баз данных
Для DevOps-инженера база данных — это прежде всего сервис, который активнее всех ест диск и болезненнее всех реагирует на его нехватку. Не нужно быть DBA, но нужно уверенно отвечать на два вопроса под нагрузкой инцидента: почему хранилище растёт и что делать, когда раздел вот-вот заполнится.
Главная ловушка темы — интуиция «строк не прибавилось, значит и файл не вырос». В СУБД с многоверсионностью (MVCC, например в PostgreSQL) это неверно: UPDATE и DELETE оставляют мёртвые версии строк, которые занимают место до фоновой очистки. Отсюда два слоя ниже — механизм распухания и порядок действий при переполнении диска. И сквозное правило: никогда не удаляйте файлы внутри каталога данных руками.
Карта темы
- Распухание хранилища — почему файлы данных растут при почти постоянном числе строк, что такое мёртвые кортежи и кто освобождает место.
- Триаж переполнения диска — как диагностировать причину и безопасно среагировать на алерт о заполнении раздела продакшен-БД.
Частые ошибки и ловушки
| Ошибка | Последствие |
|---|---|
Считать, что DELETE сразу освобождает место | Мёртвые кортежи живут до очистки — файл не уменьшается |
Удалять файлы в каталоге данных через rm | Необратимое повреждение базы |
| Действовать до триажа, не зная, что заняло место | Устраняете симптом не там; реальная причина (WAL, bloat, логи) остаётся |
Путать VACUUM с тюнером запросов | Не применяете его при bloat, хотя это освобождение места |
Ждать, что обычный VACUUM вернёт место ОС | Он возвращает место для повторного использования внутри файла; уменьшает файл только VACUUM FULL |
Значение для собеседований
Тема проверяет операционную зрелость — понимаете ли вы, что база это не «папка с данными», а система с отложенным освобождением места и журналом. Кандидат, который на алерт о диске первым делом называет триаж (df/du), а не rm, сразу выглядит как человек, которого можно пустить на прод.
Что обычно проверяют:
- Почему файлы растут при стабильном числе строк — механизм
MVCCи мёртвые кортежи. - Что делает
VACUUM/autovacuumи почему обычныйVACUUMне уменьшает файл. - Порядок реакции на нехватку места — сначала диагностика, затем безопасное облегчение, затем устойчивый фикс.
Типичный неверный ответ: «удалить самые большие файлы в каталоге данных, база пересоздаст нужное». На деле это разрушает БД — место освобождают очисткой мёртвых кортежей и расширением диска, а не ручным rm.