Миграции схемы БД через Alembic: как обновлять без остановки
Признаки
Схема базы данных меняется по мере развития системы. Без версионирования миграций — хаос: на dev одна схема, на prod другая, откат невозможен.
Alembic — что даёт
- Версионирование — каждая миграция имеет ревизию. `alembic upgrade head` применяет все неприменённые. `alembic downgrade -1` откатывает последнюю.
- История — видно, когда и какая миграция применена. `alembic current` — текущая ревизия на prod.
- Безопасность — перед миграцией автоматически создаётся backup. Если миграция не прошла — откат.
Правила
- Миграции должны быть обратимыми — для каждой `upgrade` пишем `downgrade`.
- Не блокируем таблицы там, где можно. Добавление колонки с default — без блокировки. Пересоздание индекса — `CONCURRENTLY`.
- Не делаем миграции, которые меняют данные массово. Сначала схема, потом отдельный скрипт данных.
- Тестируем миграцию на копии prod перед применением.
Это позволяет обновлять систему без остановки работы склада или производства.
Связанные страницы