Изменения базы данных и ветвление VCS - PullRequest
0 голосов
/ 26 августа 2009

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

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

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

Я использую MySQL. Я хотел бы просто использовать один экземпляр MySQL. Может быть, есть версия MySQL, где я могу сделать что-то подобное с моим DSN? Server = myServerAddress;? Database = MyDatabase версия = 123; Uid = MyUserName; PWD = MyPassword;

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

1 Ответ

1 голос
/ 26 августа 2009

Нет чистого решения, которое я мог бы придумать для этого. Я бы просто пошел по маршруту mysqldump «магистральной» базы данных, а затем загрузил бы ее в базу «branchA».

С точки зрения способности сохранять данные свежими, если вы сохраняете набор команд CREATE, ALTER и т. Д., Необходимых для перехода от транка к версии филиала, тогда вы можете запустить это для копии транка или живых данных каждый раз, когда вы хотите свежий набор данных. Делая это таким образом, и имея этот сценарий под контролем версий, вы получаете действительно простую возможность сделать это в производственном режиме, когда будете готовы слить ветку обратно в магистраль и развернуть ее.

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

...