Как синхронизировать базу данных разработки и производства
Знаете ли вы какие-либо приложения для синхронизации двух баз данных - во время разработки иногда требовалось добавить одну или две строки таблицы или новую таблицу или столбец.
Обычно я пишу каждый оператор sql в каком-то файле и во время загрузки пути я вызываю эти строки в своей производственной базе данных (ранее поддерживал ее).
Я работаю с базами данных mySQL и postreSQL.
Какова ваша практика и какие приложения вам помогут в этом.
Ответы
Ответ 1
Вы запросили ответ на какой-либо инструмент или приложение, но то, что вам действительно нужно, - это ответ процесса. Основная тема здесь заключается в том, что вы должны управлять версией базы данных DDL (и DML, когда это необходимо) и предоставлять сценарии изменений, чтобы иметь возможность обновлять любую версию вашей базы данных до более высокой версии.
Этот набор ссылок, предоставленный Джеффом Этвудом и написанный К. Скоттом Алленом, подробно объясняет, как это должно выглядеть: и они делают это лучше, чем я могу здесь написать: http://www.codinghorror.com/blog/2008/02/get-your-database-under-version-control.html
Ответ 2
Для PostgreSQL вы можете использовать Другой инструмент для проверки PostgreSQL. Он может разбить две SQL-дампы очень быстро (несколько секунд на db с примерно 300 таблицами, 50 видами и 500 хранимыми процедурами). Таким образом, вы можете легко найти свои изменения и получить sql diff, который вы можете выполнить.
Из страницы APGDiff:
Другой инструмент PostgreSQL Diff - это простой инструмент проверки PostgreSQL, который полезен для обновления схемы. Инструмент сравнивает два файла дампа схемы и создает выходной файл, который (после некоторых модификаций вручную) подходит для обновления старой схемы.
Ответ 3
У вас есть сценарии (под контролем источника, конечно), которые вы только когда-либо добавляете в нижнюю часть. Это в сочетании с регулярными восстановлениями из вашей производственной базы данных в dev вы должны быть золотыми. Если вы строго придерживаетесь этого, это работает очень хорошо.
В противном случае я знаю, что многие люди используют redgate для SQLServer.
Ответ 4
Еще одно голосование за сравнение SQL RedGate
http://www.red-gate.com/products/SQL_Compare/index.htm
Не хотел бы жить без него!
Изменить: Извините, похоже, это только для SQL Server. Тем не менее, если у каких-либо пользователей SQL Server есть тот же вопрос, я бы определенно рекомендовал этот инструмент.
Ответ 5
Если вы пишете свои SQL-запросы для своей базы данных разработки (которые, я думаю, представляют собой серии инструкций DDL, таких как CREATE, ALTER и DROP), почему бы вам не следить за ними, записывая их в таблицу, индекс "версии"? Затем вы сможете:
- отслеживать изменения вашей версии.
- создайте небольшую процедуру, позволяющую "автоматическое" обновление вашей производственной базы данных, отправив записанные инструкции в базу данных.
Ответ 6
Мне очень нравится инструменты EMS.
Инструменты доступны для всех популярных БД, и у вас одинаковый пользовательский интерфейс для каждого типа БД.
Одним из инструментов является DB Comparer.
Ответ 7
ЖАБЫ
несколько раз сохранял много задниц в прошлом. Почему люди запускают sql без стратегии выхода?
тоже хорошо подходит redgate.
Ответ 8
Продукт Siebel (CRM, Sales и т.д.) имеет встроенный инструмент для выравнивания производственной базы данных с одним из разработчиков (dev2prod).
В противном случае вы должны придерживаться вручную выполненных скриптов.
Ответ 9
Navicat имеет мастер синхронизации структуры, который обрабатывает это.
Ответ 10
Я решаю это, используя Hibernate. Он может обнаруживать и автосоздавать отсутствующие таблицы, столбцы и т.д.
Ответ 11
Вы можете добавить некоторую автоматизацию в ваш текущий способ делать вещи, используя dbDeploy или аналогичный script. Это позволит вам отслеживать изменения вашей схемы и обновлять/откатывать вашу схему по своему усмотрению.
Ответ 12
Здесь прямой linux bash script Я написал для синхронизации баз данных Magento... но вы можете легко изменить его для других целей:)
http://markshust.com/2011/09/08/syncing-magento-instance-production-development
Ответ 13
DBV - "Управление версиями базы данных стало проще!" (РНР)