Как синхронизировать базу данных разработки и производства

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

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

Я добавил награду. Мне это нужно для работы с базами данных MySQL. Я работаю с Typo3, если это важно.

demonkoryu 06.10.2010 19:28

И это должна быть невысокая стоимость. :)

demonkoryu 12.10.2010 17:25
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
42
2
17 474
13

Ответы 13

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

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

Siebel (CRM, продукт управления продажами и т. д.) Имеет встроенный инструмент для согласования производственной базы данных с базой разработки (dev2prod).

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

Navicat имеет мастер синхронизации структуры, который этим занимается.

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

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

Another PostgreSQL Diff Tool is simple PostgreSQL diff tool that is useful for schema upgrades. The tool compares two schema dump files and creates output file that is (after some hand-made modifications) suitable for upgrade of old schema.

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

http://www.red-gate.com/products/SQL_Compare/index.htm

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

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

Теперь это инструмент Red Gate, который недавно был выпущен: mysql-compare.com

David Atkinson 10.09.2011 04:25

Я решаю это с помощью Спящий режим. Он может обнаруживать и автоматически создавать отсутствующие таблицы, столбцы и т. д.

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

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

Одним из инструментов является средство сравнения баз данных.

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

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

По сути, это управление версиями базы данных, но реализовано самостоятельно. Хороший подход, но, вероятно, лучше использовать существующий инструмент.

sleske 12.10.2010 15:50

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

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

Вот в чем проблема. Typo3 запускает свои собственные сценарии при обновлениях / модификациях, и я хочу извлекать изменения, когда он это делает. Вот почему мне нужен инструмент сравнения БД.

demonkoryu 12.10.2010 17:24

Если вы выберете путь управления версиями, я рекомендую использовать Liquibase.org. Он может управлять вашей схемой вперед и назад во времени.

Neeme Praks 13.10.2010 06:35

@Neeme Спасибо, это то, что я ищу. Если это станет зрелым продуктом, он будет идеальным.

demonkoryu 14.10.2010 13:37

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

Neeme Praks 14.10.2010 15:29

ЖАБА

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

Redgate тоже хорош.

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

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

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

DBV - "Контроль версий базы данных, стало проще!" (PHP)

Просто вспомните, какой DBV имеет дело со структурой базы данных; не данные.

Tárcio Zemel 04.04.2014 00:11

Другие вопросы по теме