Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Синхронизация двух SQL Server'ов  [new]
Alexey30
Member

Откуда:
Сообщений: 163
Приветствую.
Есть некий сервер, на котором крутятся сайты и SQL сервер (2008 SP3).
Сейчас хочу приобрести и установить второй сервер. Он необходим на случая сбоя первого и распределения нагрузки между серверами.
Т.е. часть останется работать на старом сервере, а часть - на новом.
При этом хочу сделать так, чтобы SQL сервера дублировали друг друга, т.е. чтобы каждый из них содержал абсолютно одинаковую информацию (ну или с небольшой задержкой). При этом один выступает в роли мастера для DB1, и в роле слейва для DB2, а второй наоборот - мастер DB2 и слейв для DB1. Т.е. сайты работают и с первым и со вторым сервером, по разным базам. В случае краха одного из серверов сайты сами поймут, что дальше нужно присоединяться к другому и работать с ним.

Подскажите, пожалуйста, какими средствами лучше воспользоваться?
Transaction Log Shipping, Mirroring или что-то еще?

Заранее спасибо.
25 сен 12, 14:22    [13219029]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация двух SQL Server'ов  [new]
stavgreengo
Member

Откуда:
Сообщений: 710
Alexey30
Приветствую.
Есть некий сервер, на котором крутятся сайты и SQL сервер (2008 SP3).
Сейчас хочу приобрести и установить второй сервер. Он необходим на случая сбоя первого и распределения нагрузки между серверами.
Т.е. часть останется работать на старом сервере, а часть - на новом.
При этом хочу сделать так, чтобы SQL сервера дублировали друг друга, т.е. чтобы каждый из них содержал абсолютно одинаковую информацию (ну или с небольшой задержкой). При этом один выступает в роли мастера для DB1, и в роле слейва для DB2, а второй наоборот - мастер DB2 и слейв для DB1. Т.е. сайты работают и с первым и со вторым сервером, по разным базам. В случае краха одного из серверов сайты сами поймут, что дальше нужно присоединяться к другому и работать с ним.

Подскажите, пожалуйста, какими средствами лучше воспользоваться?
Transaction Log Shipping, Mirroring или что-то еще?

Заранее спасибо.

При лог шипинге ни о каком переключении речи быть не может + ограниченная доступность сервера на котором восстанавливаются логи - отметаем этот вариант сразу. Зеркалирование обеспечивает синхронизацию информации с "сервера-принципиала" на "сервер-зеркало", но не в обратную сторону, что противоречит требуемым условиям. Соответственно вам надо смотреть в сторону реализации репликации серверов слиянием.
25 сен 12, 15:48    [13219707]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация двух SQL Server'ов  [new]
Alexey30
Member

Откуда:
Сообщений: 163
Я видимо неправильно понимаю, что при лог шипинге база на втором сервере это та же база, что и на первом, но с небольшим запозданием?
25 сен 12, 15:51    [13219728]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация двух SQL Server'ов  [new]
stavgreengo
Member

Откуда:
Сообщений: 710
Alexey30
Я видимо неправильно понимаю, что при лог шипинге база на втором сервере это та же база, что и на первом, но с небольшим запозданием?

да, но по факту идёт бэкап логов на основном сервере и их рестор на сервере приёмнике(в это время он доступен только на чтение) + слишком малые интервалы для синхронизации не сделаешь, будет в лучшем случае 10-15мин. разницы. Сервер приёмник не вкуривает ни разу о падении основного сервера и необходимости переключения. А оно тебе надо ?
25 сен 12, 16:02    [13219812]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация двух SQL Server'ов  [new]
Alexey30
Member

Откуда:
Сообщений: 163
stavgreengo, ну например база 10ГБ. Логи особо большими не будут. Раз в 15 минут если отправлять, то за минуту, а то и быстрее, я полагаю он развернется. В Read-only только восстанавливаемая база, верно?
Теперь допустим, что упал основной сервер. Я это заметил и изменил у сайта строку подключения на вторичный. Дальше сайт работает с вторичным сервером. Прошел день, я заменил первичный сервер. Пусть даже на абсолютно новый.
Сделал бэкап базы на вторичном и развернул его на первичном. Переключил сайты на первичный и опять назначил первичный главным.
25 сен 12, 16:07    [13219858]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация двух SQL Server'ов  [new]
Glory
Member

Откуда:
Сообщений: 104760
Alexey30
Теперь допустим, что упал основной сервер. Я это заметил и изменил у сайта строку подключения на вторичный. Дальше сайт работает с вторичным сервером.

Сначала придется перевести базу на вторичном сервере в нормальный режим работы
А при падении первичерого сервера может быть потеряна какая то часть бэкапов его журнала. например, последний.
Alexey30
Прошел день, я заменил первичный сервер. Пусть даже на абсолютно новый.
Сделал бэкап базы на вторичном и развернул его на первичном. Переключил сайты на первичный и опять назначил первичный главным.

Лог шиппинг придется настраивать с 0ля. Потому что база на вторичном сервере уже была переведена в нормальный режим. Нельзя на нее вот так сразу применять бэкапы журнала.
25 сен 12, 16:16    [13219937]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация двух SQL Server'ов  [new]
ziktuw
Member

Откуда:
Сообщений: 3552
stavgreengo
Alexey30
Я видимо неправильно понимаю, что при лог шипинге база на втором сервере это та же база, что и на первом, но с небольшим запозданием?

да, но по факту идёт бэкап логов на основном сервере и их рестор на сервере приёмнике(в это время он доступен только на чтение) + слишком малые интервалы для синхронизации не сделаешь, будет в лучшем случае 10-15мин. разницы. Сервер приёмник не вкуривает ни разу о падении основного сервера и необходимости переключения. А оно тебе надо ?


Поправочка. Во время рестора логов сервер-приемник доступен, но не база, на которую восстанавливается лог :-) База недоступна даже на чтение.
25 сен 12, 16:17    [13219943]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация двух SQL Server'ов  [new]
Glory
Member

Откуда:
Сообщений: 104760
Глеб
Поправочка. Во время рестора логов сервер-приемник доступен, но не база, на которую восстанавливается лог :-) База недоступна даже на чтение.

Вторичную базу можно сделать доступной для чтения.
Но при восстановлении каждого лога придется всех отключать от нее.
25 сен 12, 16:19    [13219957]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация двух SQL Server'ов  [new]
stavgreengo
Member

Откуда:
Сообщений: 710
Глеб
stavgreengo
пропущено...

да, но по факту идёт бэкап логов на основном сервере и их рестор на сервере приёмнике(в это время он доступен только на чтение) + слишком малые интервалы для синхронизации не сделаешь, будет в лучшем случае 10-15мин. разницы. Сервер приёмник не вкуривает ни разу о падении основного сервера и необходимости переключения. А оно тебе надо ?


Поправочка. Во время рестора логов сервер-приемник доступен, но не база, на которую восстанавливается лог :-) База недоступна даже на чтение.

Да, спасибо. Перепутал с режимом STANDBY, который используется для снятия нагрузки с основного сервера, предоставляя уже после рестора БД пользователям на чтение.
25 сен 12, 16:23    [13220006]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация двух SQL Server'ов  [new]
Alexey30
Member

Откуда:
Сообщений: 163
Glory, потеря одного последнего бэкапа не так критична - это все-таки не банковская система.
Настройка шиппинга заново - тоже не проблема - если есть время, то это вполне решаемо.

А может быть есть еще какой-то вариант? По сути дела не столь важно, чтобы на пторичном сервере сразу была готовая база - достаточно, чтобы были готовы бекапы, которые можно быстро восстановить. Может быть ,как вариант, раз в сутки делать полный бэкап, а в течение дня, каждые 15 минут, отправлять куски лога?
25 сен 12, 16:25    [13220019]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация двух SQL Server'ов  [new]
Glory
Member

Откуда:
Сообщений: 104760
Alexey30
А может быть есть еще какой-то вариант? По сути дела не столь важно, чтобы на пторичном сервере сразу была готовая база - достаточно, чтобы были готовы бекапы, которые можно быстро восстановить. Может быть ,как вариант, раз в сутки делать полный бэкап, а в течение дня, каждые 15 минут, отправлять куски лога?

Зачем тогда вторичный сервер вообще, если будут бэкапы ??
Устанавливаете упавшую машину и на нее восстанавливаете бэкапы ?
25 сен 12, 16:29    [13220053]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация двух SQL Server'ов  [new]
stavgreengo
Member

Откуда:
Сообщений: 710
Alexey30
stavgreengo, ну например база 10ГБ. Логи особо большими не будут. Раз в 15 минут если отправлять, то за минуту, а то и быстрее, я полагаю он развернется. В Read-only только восстанавливаемая база, верно?
Теперь допустим, что упал основной сервер. Я это заметил и изменил у сайта строку подключения на вторичный. Дальше сайт работает с вторичным сервером. Прошел день, я заменил первичный сервер. Пусть даже на абсолютно новый.
Сделал бэкап базы на вторичном и развернул его на первичном. Переключил сайты на первичный и опять назначил первичный главным.

А если не заметил ? Как планируешь "замечать" ? + как сказал Glory высоки риски потерь. Выбирать вам, простой в реализации логшипинг и куча потенциального геморроя или автоматизированная работа в репликация слиянием, но достаточно сложная грамотная её реализация.
25 сен 12, 16:30    [13220058]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация двух SQL Server'ов  [new]
invm
Member

Откуда: Москва
Сообщений: 9397
А были ли выявлены причины неудовлетворительной производительности сиквела?
Или решение о распределении нагрузки просто дань моде?
25 сен 12, 16:30    [13220069]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация двух SQL Server'ов  [new]
Alexey30
Member

Откуда:
Сообщений: 163
Glory, восстановление упавшей машины может занять несколько дней (в случае проблем с железом, например). А восстановление из бэкапа - полчаса-час.
stavgreengo, заметить легко - сайты круглосуточно мониторятся хосттрекером, как только есть проблема - сразу приходит SMS.
invm, на сервере штук 20 баз, но две из них критически важные. Одна простая, всего несколько таблиц, но с использованием FileStream (большая нагрузка на хдд), вторая относительно сложная и к ней много запросов. По этому хочу разнести эти две базы по разным серверам.

PS Небольшой оффтоп: первая бд, которая с FileStream, бекапится 2 ч 20 минут. Бэкап без сжатия, весит 28ГБ. Как-это это крайне долго, мне кажется. Кроме того, до перевода на FileStream (когда файлы хранились прямо в таблице), бэкап занимал значительно меньше времени.
25 сен 12, 16:38    [13220133]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить