На примере фреймворка Yii
www.yiiframework.com/doc/guide/1.1/ru/database.mig...
www.yiiframework.com/doc-2.0/guide-db-migrations.html
www.youtube.com/watch?v=cugnRoZ1ick&feature=youtu.be
Миграции - это классы на PHP. Они размещаются в git.
Класс миграций содержит метод для апгрейда (наката) и даунгрейта (отката) изменений.
В базе данных есть таблица с списком установленных файлов миграций.
При установке или обновлении проекта, специальная команда выполняет анализ директории с файлами миграций (их может быть несколько), сверяет с таблицей.
Предлагает установить (накатить) те файлы миграций, которых нет в базе.
Можно попросить отменить (откатить) изменение или установить его ещё раз.
В миграции можно и структуру таблица поменять (миграция модели), и данные изменить (миграция данных).
У нас в скрипте установки (на тостере:
Какой workflow front-end разработки у вас? ) делается бакап базы перед обновлением и после обновления. Есть ручной скрипт отката, чтобы базу восстанавить.
А в идеальном случае надо постараться так написать код, чтобы он мог без сбоев работать и с старой, и с новой моделью базы.