Как обновить таблицы внутри столбца в оперативной базе данных, поступающей из тестовой базы данных, без переопределения оперативных данных - PullRequest
0 голосов
/ 01 октября 2018

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

В действующей базе данных хранятся транзакции клиентов.

Что, если я внесу некоторые изменения на веб-сайте dev и в базе данных dev, например добавлю еще один столбец в таблицу, как я могу сохранить все транзакции клиента внутри live, но в то же время сохранить все изменения, которые я сделал с тестового сайта, наживой сайт?

Я использую Laravel и Mysql на случай, если это поможет найти решение специально для этого стека технологий.

1 Ответ

0 голосов
/ 03 октября 2018

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

  1. Добавьте столбец к таблице в базе данных, допустив пустые значения * 1004.*
  2. Обновите код приложения, чтобы начать запись в новый столбец
  3. Если ожидается, что в каждой строке будут данные в этом столбце, запустите фоновый процесс / scripts / sql для обратной засыпки отсутствующих данных
  4. Обновите столбец в таблице, чтобы он не допускал пустых значений
  5. Обновлен код приложения, чтобы начать чтение из нового столбца

Приведенные выше шаги выполняются со следующими допущениями: Ни один изкод приложения выполняет любые запросы SELECT *.Они могут сломаться, если вы добавите новые неизвестные столбцы на шаге 1, и по этой причине обычно считается, что запросы SELECT * плохие.

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

...