@Azurius

Как сделать репликацию MS SQL со 100+ хостами?

Имеем 100+ хостов раскиданных по миру с доступом в сеть Интернет со скоростями от 512Кб/с до 20 Мб/с. 1 сервер с хорошим доступом в сеть. Всё объединено в одну сеть по средствам VPN.

На каждом хосте стоит MS sql express (в основном 2005) 1 база 1,5-2Гб. Данные изменяются относительно редко.

Цель: иметь копии всех баз на сервере с актуальностью 2-3 часа.

Первая идея - 100+ Linked Servers на сервере и 100+ баз соответственно. При нескольких базах верю, что это будет работать, при всех 100+ не уверен.

Как правильно реплицировать такое количество баз данных?
  • Вопрос задан
  • 2706 просмотров
Пригласить эксперта
Ответы на вопрос 4
kotomyava
@kotomyava
Системный администратор
Возможно, вы просто не правильно ставите задачу, и вам надо просто пойти по пути централизации, и сделать-таки один сервер БД? (ну или два-три).
Ответ написан
dzedzinskiy
@dzedzinskiy
Full stack developer
На всех хостах настроить cron-job по расписанию (2-3 часа), который будет кидать на нужный сервер backup'и последних изменений, там их по мере поступления распаковывать и деплоить на локальный сервер. На нем же запустить службу, которая буде информировать все другие хосты, про готовность данных. Т.е. когда все 100 бекапов задеплоятся на сервер, служба даст ответ хостам, что можно данные начинать синхронизировать, все хосты ждут этой команды, и при ее поступлении - начинать синхронизацию. Данный подход прост в реализации но нагрузка на глав.сервер будет очень большой. Можно распределить хостов на несколько серверов..
Ответ написан
foxmuldercp
@foxmuldercp
Системный администратор, программист, фотограф
другой вариант - посчитать что будет удобнее вынести субд в облака, тот же Azure, сделать там несколько инстансов в разных регионах и синхронизировать их между собой.
и забыть про 100+ серверов
Ответ написан
shineblu
@shineblu
Добрый день,

В зависимости от сложности и кол-ва таблиц в базах я бы заморочился написанием интерфейсов выгрузки/загрузки. Я полагаю что центральный офис раздает на удаленные точки какие-то мастер данные, а обратно получает движения/транзакции. Если так - то нужно написать интерфейс для центральной базы который будет создавать для 100 точек файлы с изменениями мастер данных, раздаст их по сети, а точки уже их загрузят. И в обратном порядке - точки формируют пачки с транзакциями (изменения) и отправляют серверу, а на нем батч уже пишет все в основную БД (DWH). Т.к. незнаю бэкграунда - не претендую на правильный ответ :)

Успехов!
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы