Миграция базы данных без простоя: совместимые этапы изменения схемы

Как менять схему базы без простоя: expand and contract, совместимость версий, обратное заполнение, двойная запись, контроль и очистка.

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

Сначала расширьте

Добавьте новые поля или таблицы без удаления старых, выпустите код, понимающий обе формы, и наблюдайте. Блокировки измеряйте.

Перенесите данные

Заполняйте историю небольшими порциями, контролируйте ошибки, нагрузку и расхождения, сохраняя возможность продолжить после остановки. Скорость ограничивайте.

Затем сократите

После полного перехода подтвердите отсутствие старых читателей и записей, только потом удаляйте прежнюю схему. Этапы версионируйте.

Для большой таблицы обязательно испытайте миграцию на реалистичном объеме и версии движка, потому что быстрая операция на пустом staging может удерживать блокировку, переполнить журнал или создать репликационную задержку в production.

Возврат версии планируйте через процедуру отката. Тестовую среду приблизьте к production.