Как регулярно загружать данные гео-реплицированной базы данных Azure (PaaS) в локальную базу данных

У нас есть геореплицируемая база данных в Azure SQL (платформа как услуга). Это тип master/slave, поэтому гео-реплицированная база данных доступна только для чтения.

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

Первоначально мы рассматривали Azure SQL Data Sync, чтобы, как мы надеемся, считывать данные из геореплицируемых данных и переносить их на локальные данные, но для этого необходимо создать таблицы триггеров + отслеживания. Я не чувствую себя слишком комфортно с этим, потому что не удастся запустить это для ведомой базы данных, доступной только для чтения, и поэтому она должна быть настроена в основной базе данных транзакций (что влияет на производительность приложения), что, в свою очередь, приведет к -создать эти дополнительные артефакты синхронизации данных в гео-реплицированной базе данных. Это выглядит грязно, с раздутыми данными (у нас есть большое количество таблиц и данных, и базы данных Azure PaaS имеют ограниченный размер как есть), и мы также используем управление жизненным циклом базы данных Redgate, которое потенциально может уничтожить эти объекты схемы и таблицы отслеживания. каждый раз, когда мы выполняем релиз, так как они не созданы нами и не находятся под нашим контролем версий.

Какие есть другие жизнеспособные варианты (кроме перехода от PaaS и создания кластерной среды виртуальной машины IaaS в локальной и облачной среде с установленным, исправленным и т. Д. SQL Server). Пожалуйста, имейте в виду, что у нас ограниченный ресурс, поэтому PaaS изначально был идеальным местом для нашей базы данных.

Я должен отметить, что мы хотим, чтобы локальная база данных была "относительно" синхронизирована с базой данных Azure, но локальные данные могут иметь данные до часа.

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

Обратите внимание, что на этом этапе он должен быть однонаправленным (от Azure до локального).

1 ответ

Вы можете попробовать Azure Data Factory, поскольку она позволяет добавлять данные в таблицу назначения или вызывать хранимую процедуру с пользовательской логикой во время копирования, когда SQL Server используется в качестве "приемника". Вы можете узнать больше здесь.

Фабрика данных Azure позволяет инкрементно загружать данные (дельта) после начальной полной загрузки данных, используя столбец водяных знаков, который имеет последнюю обновленную метку времени или инкрементный ключ. Решение с дельта-загрузкой загружает измененные данные между старым водяным знаком и новым водяным знаком. Из этой статьи вы узнаете, как это сделать с помощью Azure Data Factory.

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

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