Все статьи базы знаний
process

Миграции схемы БД через Alembic: как обновлять без остановки

Симптомы проблемы

  • Обновление схемы требует остановки системы
  • Миграции применяются вручную и теряются
  • Нет отката при неудачном обновлении

Решение

Схема базы данных меняется по мере развития системы. Без версионирования миграций — хаос: на dev одна схема, на prod другая, откат невозможен.

Alembic — что даёт

  • Версионирование — каждая миграция имеет ревизию. `alembic upgrade head` применяет все неприменённые. `alembic downgrade -1` откатывает последнюю.
  • История — видно, когда и какая миграция применена. `alembic current` — текущая ревизия на prod.
  • Безопасность — перед миграцией автоматически создаётся backup. Если миграция не прошла — откат.

Правила

  • Миграции должны быть обратимыми — для каждой `upgrade` пишем `downgrade`.
  • Не блокируем таблицы там, где можно. Добавление колонки с default — без блокировки. Пересоздание индекса — `CONCURRENTLY`.
  • Не делаем миграции, которые меняют данные массово. Сначала схема, потом отдельный скрипт данных.
  • Тестируем миграцию на копии prod перед применением.

Это позволяет обновлять систему без остановки работы склада или производства.

Связанные страницы

миграции alembic postgresql эксплуатация инженерный

Связанные статьи

Похожая проблема?

Разберём ваш процесс за 30 минут — бесплатно.

Выберите удобный способ
Telegram