Предложения по репликации данных из MS Sql 2005 и MySql

В настоящее время у моей компании есть транзакционная база данных, работающая на Sql Server 2005. Мы собираемся добавить базу данных отчетов MySql (работающую на Linux). Нам нужно будет запустить репликацию из базы данных MS-Sql в базу данных MySql. Это не обязательно должно происходить в реальном времени, но должно происходить в течение нескольких минут.

У меня довольно хорошие навыки MSSql Dev и так себе навыки dba, но нет фона MySql. Парень MySql в нашей команде не имеет опыта работы с MSSql.

Мне было интересно, настраивал ли кто-нибудь что-нибудь подобное, и может быть, есть какие-то предложения. Я видел кое-что по переносу данных между ними, но не много для текущей репликации. Сейчас я лучше всего предполагаю, что нужно настроить что-то в SSIS и запустить его под агентом Sql. Я собираюсь сейчас поработать над идеей SSIS, но приветствую любые предложения.


person TheGeoff    schedule 03.10.2008    source источник
comment
Чтобы получить более точные ответы, не могли бы вы уточнить размер базы данных, например количество таблиц, с которыми вы будете работать, и количество строк на гигабайт в таблицах? Небольшие базы данных могут иметь решение, включающее SQL Server Express Edition.   -  person Brent Ozar    schedule 21.02.2009


Ответы (4)


Мой друг для почти такого же случая (он копирует данные всего из нескольких таблиц из MSSQL в MySQL) построил что-то вроде этого:

  • Добавлен триггер в каждую таблицу, которая будет реплицирована. Триггер сохраняет первичный ключ, тип операции (i) nsert / (u) pdate / (d) elete и имя исходной таблицы в специальной таблице (меньше или больше).
  • Небольшое приложение .NET сканирует эти специальные таблицы на предмет новых ключей каждые несколько минут, считывает данные из исходных таблиц MSSQL и сохраняет их в таблицах назначения в MySQL (меньше или больше).

Это прекрасно работает, потому что:

  • Таблицы не сильно меняются.
  • Он копирует всего несколько столбцов.

Плюсы:

  • Быстро и легко внедрить и изменить.

Минусы:

  • Самодельный инструмент не идеален :).
person Grzegorz Gierlik    schedule 09.10.2008

Я думаю, это зависит от того, какое программное обеспечение для создания отчетов вы будете использовать поверх базы данных MySQL. Если вы используете Pentaho - у них есть программное обеспечение, чтобы справиться с этой ситуацией. Если отчетность будет просто специальной, а структура останется такой же, я бы серьезно подумал о создании еще одного экземпляра MSSQL и работе с ним. Если у вас уже есть MSSQL, не пытайтесь подружить их друг с другом. У вас должна быть возможность привязать второй экземпляр MSSQL только к ограниченным ресурсам, чтобы транзакционная база данных никогда не затрагивалась, даже если они находятся на одном компьютере.

person Adam Nelson    schedule 09.10.2008

Стороннее приложение утверждает, что может это делать: Daffodil Replicator. Я думаю, что он доступен как с открытым исходным кодом, так и с корпоративной версией.

person igelkott    schedule 04.10.2008

SSIS ETL кажется самым простым способом. Фактически вы можете экспортировать в промежуточную область (файлы CSV), а затем импортировать в MySQL. Это решит различные проблемы с форматированием. Если вы проявите творческий подход, MySQL поддерживает механизм хранения CSV (см. здесь), чтобы можно было сохранить шаг загрузки в SSIS.

person Damir Sudarevic    schedule 27.10.2009