База знаний

Найдите решение по признакам

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

Сбросить

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

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

Alembic — что даёт

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

Правила

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

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

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