Как получить транзакционные данные MySQL в базу данных SQL Server - PullRequest
0 голосов
/ 09 января 2009

Я работаю над проектом, в котором есть транзакционная база данных MySQL для резервного копирования веб-приложения. Компания использует SQL Server для приложений бэк-офиса и отчетности. Каков наилучший способ обновить SQL Server данными из MySQL? Прямо сейчас мы выполняем дамп данных MySQL и делаем полное восстановление. Это может быть неосуществимо намного дольше из-за увеличения размера базы данных.

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

Ответы [ 5 ]

1 голос
/ 09 января 2009

Можете ли вы найти способ сделать снимок БД mySQL, а затем сделать копию? Это сделало бы мгновенную логическую копию базы данных, которая была бы заморожена во времени.

http://aspiringsysadmin.com/blog/2007/08/13/consistent-mysql-backups-using-zfs-snapshots/

Файловая система ZFS может сделать это, но вы не упомянули свое оборудование / ОС.

Кроме того, возможно, вы могли бы ограничить данные, которые вы извлекаете - независимо от того, что чувствительно ко времени, так что ваш запрос будет получать данные только старше 1 часа, если ваш запрос занимает 45 минут. Или сделать вещи немного безопаснее - как насчет просто потянуть за день до этого?

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

0 голосов
/ 16 октября 2009

Похоже, вам нужно настроить скрипт для запуска и остановки репликации на подчиненной базе данных. Если вы можете сделать это с помощью сценария, вы можете установить рабочий процесс в службах SSIS, например:

  1. Остановить репликацию на ведомую базу данных MySQL
  2. Если репликация остановлена, сделать снимок подчиненной базы данных MySQL
  3. Если был сделан снимок, то a = Начать репликацию на подчиненную базу данных MySQL b = Импорт подчиненной реплики базы данных MySQL в SQL Server

Примечание: 3a и 3b могут работать параллельно.

Я думаю, что лучшим вариантом в таком сценарии будет использование SSIS для включения и отключения репликации базы данных MySQL на подчиненное устройство, а также для создания снимка подчиненной базы данных. Затем вы можете управлять всем этим из механизма агента SQL Server.

Надеюсь, это поможет

0 голосов
/ 09 января 2009

Независимо от того, как вы выполняете импорт в SqlServer из клона MySQL, я не думаю, что вам нужно беспокоиться об ограничении репликации MySQL определенным временем.

Для репликации MySQL требуется только один поток на главном сервере, и в основном он просто передает журнал транзакций на подчиненное устройство. Если вы можете, разместите главный и подчиненный серверы MySQL в частном сегменте локальной сети, чтобы трафик репликации не влиял на веб-трафик.

0 голосов
/ 09 января 2009

если у вас SQL Server Standard или выше, SQL Server позаботится обо всех ваших потребностях.

  • используйте ssis, чтобы получить данные
  • используйте агента для планирования ваших временных заданий

Кстати - я делаю то же самое, что и вы. SQL Server потрясающий - его было легко настроить (я нуб к SSIS), и он сработал с первого раза.

0 голосов
/ 09 января 2009

Посмотрите на DTS, инструмент Microsoft ETL. Это довольно мило. Сделайте отображение, запланируйте это как работу cron, и Боб - ваш дядя.

...