Все статьи базы знаний
Миграции схемы БД через Alembic: как обновлять без остановки
Симптомы проблемы
- Обновление схемы требует остановки системы
- Миграции применяются вручную и теряются
- Нет отката при неудачном обновлении
Решение
Схема базы данных меняется по мере развития системы. Без версионирования миграций — хаос: на dev одна схема, на prod другая, откат невозможен.
Alembic — что даёт
- Версионирование — каждая миграция имеет ревизию. `alembic upgrade head` применяет все неприменённые. `alembic downgrade -1` откатывает последнюю.
- История — видно, когда и какая миграция применена. `alembic current` — текущая ревизия на prod.
- Безопасность — перед миграцией автоматически создаётся backup. Если миграция не прошла — откат.
Правила
- Миграции должны быть обратимыми — для каждой `upgrade` пишем `downgrade`.
- Не блокируем таблицы там, где можно. Добавление колонки с default — без блокировки. Пересоздание индекса — `CONCURRENTLY`.
- Не делаем миграции, которые меняют данные массово. Сначала схема, потом отдельный скрипт данных.
- Тестируем миграцию на копии prod перед применением.
Это позволяет обновлять систему без остановки работы склада или производства.
Связанные страницы
миграции
alembic
postgresql
эксплуатация
инженерный
Связанные статьи
process
Каждый отдел работает в своей программе
Фрагментация систем — это не техническая проблема, а бизнес-риск. Невозможно управлять тем, что...
process
Руководитель узнаёт о проблемах из разговоров
Управление по факту — это постоянное тушение пожаров. Руководитель не может предотвратить то, о...
process
Стратегия резервного копирования PostgreSQL для MES/WMS
Резервное копирование — не «сделать копию», а «гарантировать восстановление». Backup, который...
process
On-premise развёртывание: Docker Compose для MES/WMS
On-premise — развёртывание на сервере заказчика. Данные не покидают периметр. Нет облачных...
Похожая проблема?
Разберём ваш процесс за 30 минут — бесплатно.