Как реплицировать две разные системы баз данных?

StackOverflow https://stackoverflow.com/questions/2026165

  •  19-09-2019
  •  | 
  •  

Вопрос

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

Я ищу способ репликации/синхронизации различных систем баз данных - в данном случае:MySQL и МонгодБ.Мы используем оба для разных целей.Мы начали с базы данных mysql и позже добавили mongodb для специальных приложений.Есть данные, которые мы хотели бы иметь в обеих базах данных, где мы хотим иметь ограничения в MySQL и соответственно dbrefs в mongodb.Например:Нам нужна пользовательская запись в MySQL, а также в mongodb для ссылок между таблицами и объектами соответственно.На данный момент у нас есть cronjob, который сбрасывает данные MySQL и импортирует их в mongodb.Однако, хотя это работает довольно хорошо, это не то решение, которое нам хотелось бы.

Я думаю, что на данный момент односторонней репликации будет достаточно - mysql->mongodb, важная часть заключается в том, что репликация работает в «реальном времени», так же, как работает репликация master->slave mysql.

Есть ли уже какие-либо решения этой проблемы или идеи о том, как этого добиться?

Спасибо!

Это было полезно?

Решение

То, что вы ищете, называется EAI (Интеграция корпоративных приложений).Существует множество коммерческих инструментов, но по предоставленной ссылке вы также найдете пару решений OSS.В основе EAI лежат источники и приемники данных.Платформа EAI предлагает инструменты для создания индивидуальных насосов между ними.

Я предлагаю либо использовать триггер БД для запуска синхронизации, либо отправлять сигнал триггера в ваших приложениях.Обратите внимание: универсального решения не существует, поскольку синхронизация может стать сколь угодно сложной (например, как убедиться, что все строки скопированы?).

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

СимметричныйDS это программное обеспечение с открытым исходным кодом, основанное на Java, доступное через Интернет, независимое от базы данных программное обеспечение для синхронизации/репликации данных, которое может помочь с некоторыми изменениями.У него есть точка расширения IDataLoaderFilter, которую вы можете использовать для реализации MongodbDataLoader.

Это поможет с односторонней репликацией базы данных.Синхронизировать из MongoDb -> реляционную базу данных может быть немного сложнее, но команда SymmetricDS будет очень полезна в поисках решения.

Насколько я вижу, вам нужно разработать какую-то «программу управления», которая имеет драйверы для каждой СУБД и запускает ее как демон.Демон должен иметь триггер или очень небольшой интервал повторной проверки, чтобы синхронизировать базы данных.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top