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

Откуда: Москва
Сообщений: 1315
Блог
SQL Server 2008 Standard Edition.
Сконфигурирована обычная транзакционная репликация с одной базы (база A) на другую (база B).
Реплицируются только часть таблиц. На базе B есть таблицы которых нет на базе A, в них тоже вносятся изменения. База A работает 24/7, с ней постоянно работают сотни (глубокой ночью) и тысячи (в активное время) пользователей. Аналогично используется база B. На базе B настроен логшиппинг на другой сервер в другом датацентре. Stand by база, база C. По определенным причинам мирроринг для stand by использовать не хочется.
Базы A,B, C находятся в разных датацентрах. Каждая в кластере.
В какой-то момент времени база B становится недоступной - проблемы с датацентром, или разрушился кластер или еще что. Хочется переконфигурировать репликацию с базы B (которая стала недоступна) на базу С, при этом не потеряв ни одной транзакции, в том числе не потеряв транзакции что были доставлены на B но не доставлены на C. Конечно, при условии что distribution cleanup их еще не удалил.
Смотрю на sp_addsubscription, и на ее параметр @subscriptionlsn. Думаю как бы его использовать. Хочется добавить новую подписку и указать @subscriptionlsn равный последнему доставленному lsn. В базе С, восстановленной из бекапа, есть таблица MSreplication_subscriptions, и там есть поле transaction_timestamp. Но как на основе этого поля понять какой lsn не понимаю. Тоже с таблицами в базе distribution.
Кто-нибудь что-то похожее делал, есть идеи?
25 авг 09, 16:58    [7578551]     Ответить | Цитировать Сообщить модератору
 Re: Как сконфигурировать транзакционную репликацию?  [new]
Crimean
Member

Откуда:
Сообщений: 13148
а изначально сделать B и С подписчиками A - не судьба?
я к тому, что база C которрая является получателем по логшиппингу подписчиком быть никак не может, вам придется и шиппинг отключать и реплику менять
может таки сразу всю схему пересмотреть? пусть C получает реплику и с A и с B
26 авг 09, 11:33    [7580918]     Ответить | Цитировать Сообщить модератору
 Re: Как сконфигурировать транзакционную репликацию?  [new]
andsm
Member

Откуда: Москва
Сообщений: 1315
Блог
После нескольких тестов, описанный в первом посте подход заработал.

Хорошо бы еще решить проблему - а что если накрылся не только B, но еще и дистрибьютор для A? Дистрибьютор для A находится на отдельном выделенном сервере который в том же датацентре что и B, поэтому это возможно, при проблемах с датацентром. Имеется сервер, находящийся в том же датацентре что и С, который можно использовать как резервный дистрибьютор если основной дистрибьютор для А упал.

Crimean
а изначально сделать B и С подписчиками A - не судьба?
я к тому, что база C которрая является получателем по логшиппингу подписчиком быть никак не может, вам придется и шиппинг отключать и реплику менять
может таки сразу всю схему пересмотреть? пусть C получает реплику и с A и с B

Реальная схема заметно более сложная чем описанная. Есть еще транзакционная репликация и с B на A, и с B на failover location для А, и с А на failover location для А.
И по ряду причин "пусть C получает реплику и с A и с B" - не подходит
26 авг 09, 18:48    [7583806]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить