«Лучший способ» зависит от ваших обстоятельств. Является ли это довольно редко, или это может произойти на регулярной основе? Сколько производственных серверов есть? Существуют ли другие среды, например. для интеграционных тестов, постановки и т. д.? У ваших разработчиков есть собственная среда БД на своих машинах? Влияет ли ваш процесс на непрерывную интеграцию?
Чем сложнее ваш ландшафт, тем лучше использовать такие решения, как предложенный Todd R (Liquibase, Flywaydb).
Если есть только один сервер производства, и он может быть закрыт на техническое обслуживание в течение нескольких часов, то это может быть достаточно, чтобы
- График времени простоя обслуживания с заинтересованными сторонами и пользователями
- выключит сервер
- Создать резервную копию
- обновление структуры базы данных и содержимое по мере необходимости
- Развертывание обновлений программного обеспечения
- Перезапустите сервер
- Проверьте результат (вручную или автоматически)
- Сообщите ваши заинтересованные стороны и пользователь
Если что-то пойдет не так, откат к резервной копии версии базы данных и программному обеспечения.
Рекомендуется использовать сценарии обновления базы данных. Тестирование их один или несколько советов еще больше. Создание резервной копии заранее важно.
* «Я запускаю один скрипт для выполнения этих задач при развертывании на производственный сервер» *, что обычно является хорошим вариантом, просто убедитесь, что часть указанного скрипта включает создание резервной копии. –