Как синхронизировать разработку и производство базы данных - PullRequest
39 голосов
/ 01 ноября 2008

Знаете ли вы какие-либо приложения для синхронизации двух баз данных - во время разработки иногда требуется добавить одну или две строки таблицы или новую таблицу или столбец. Обычно я записываю каждый SQL-оператор в какой-то файл, и во время загрузки я вычеркиваю эти строки в своей производственной базе данных (ранее создавал резервные копии). Я работаю с базами данных mySQL и postreSQL.

Какая у вас практика и какие приложения вам в этом помогают.

Ответы [ 13 ]

27 голосов
/ 12 октября 2010

Вы запросили ответ инструмента или приложения, но что вам действительно нужно - это процессный ответ. Основной темой здесь является то, что вы должны управлять версиями вашей базы данных DDL (и DML, когда это необходимо) и предоставлять сценарии изменений, чтобы иметь возможность обновить любую версию вашей базы данных до более поздней версии.

Этот набор ссылок, предоставленных Джеффом Этвудом и написанных К. Скоттом Алленом, подробно объясняет, как это должно выглядеть - и они делают это лучше, чем я могу написать здесь: http://www.codinghorror.com/blog/2008/02/get-your-database-under-version-control.html

5 голосов
/ 01 ноября 2008

Еще один голос за RedGate SQL Compare

http://www.red -gate.com / продукция / SQL_Compare / index.htm

Не хотел бы жить без него!

Редактировать: Извините, похоже, это только для SQL Server. Тем не менее, если у кого-то из пользователей SQL Server возникнет тот же вопрос, я определенно рекомендую этот инструмент.

5 голосов
/ 01 ноября 2008

Для PostgreSQL вы можете использовать Другой PostgreSQL Diff Tool . Он может очень быстро обрабатывать два дампа SQL (несколько секунд на БД с около 300 таблицами, 50 представлений и 500 хранимых процедур). Таким образом, вы можете легко найти свои изменения и получить sql diff, который вы можете выполнить.

со страницы APGDiff:

Еще один инструмент сравнения PostgreSQL - это простой инструмент сравнения PostgreSQL, полезный для обновления схемы. Инструмент сравнивает два файла дампа схемы и создает выходной файл, который (после некоторых модификаций, сделанных вручную) подходит для обновления старой схемы.

5 голосов
/ 01 ноября 2008

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

В противном случае я знаю, что многие люди используют Redgate для SQLServer.

2 голосов
/ 03 ноября 2008

Если вы пишете свои операторы SQL для своей базы данных разработки (которые, я полагаю, представляют собой серию инструкций DDL, таких как CREATE, ALTER и DROP), почему бы вам не отследить их, записав их в таблицу с индекс "версии"? После этого вы сможете:

  1. отслеживать изменения вашей версии
  2. создайте небольшую подпрограмму, позволяющую «автоматически» обновлять производственную базу данных, отправляя записанные инструкции в базу данных.
1 голос
/ 12 октября 2010

ЖАБА

спас много задниц несколько раз в прошлом. Почему люди запускают sql без стратегии выхода?

хорош и красный врат.

1 голос
/ 02 ноября 2008

Мне очень нравятся инструменты EMS .

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

Одним из инструментов является DB Comparer.

0 голосов
/ 03 января 2014

DBV - "Управление версиями базы данных - это просто!" (PHP)

0 голосов
/ 08 сентября 2011

Вот прямой сценарий linux bash, который я написал для синхронизации баз данных Magento ... но вы можете легко изменить его для других целей:)

http://markshust.com/2011/09/08/syncing-magento-instance-production-development

0 голосов
/ 13 октября 2010

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

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