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

Откуда: *мск
Сообщений: 114
Настроили зеркало, поскольку используется SQL Server 2005 Standart Edition, доступен только вариант с синхронизацией (следящий сервер не используем). Так вот, вопрос в следующем - если зеркальный сервер (по производительности он немного отличается от основного, в худшую сторону) внезапно откажет - что произойдет на основном?
Дело в том, что ночью на зеркальном сервере закончилось место на разделе с журналом транзакций и состояние базы стало определяться Non-Synchronized (или примерно так), причем рос размер неотправленного журнала транзакций.
Насколько я понял из BOL, до тех пор пока зеркальный сервер не "закоммитит" транзакцию, основной так же не будет этого делать. Это правильно, или я ошибаюсь? Если это так - значит ли это, что в случае сбоя на основном сервере, после его перезагрузки все транзакции с момента отказа зеркального сервера откатятся?
20 авг 09, 07:41    [7559314]     Ответить | Цитировать Сообщить модератору
 Re: High protection mirror. Объясните, пожалуйста..  [new]
rancid
Member

Откуда: *мск
Сообщений: 114
Ответов нет потому что вопрос глупый? Или, мб, сложный:)?
20 авг 09, 12:45    [7561109]     Ответить | Цитировать Сообщить модератору
 Re: High protection mirror. Объясните, пожалуйста..  [new]
pr0ger
Member

Откуда: Москва
Сообщений: 1933
Транзакции не откатятся, они будут накапливаться в журнале транзакций. После возобновления работы зеркального сервера произойдет синхронизация баз. Само понятие "синхронный режим" говорит только о том что зеркало БД можно в любое время запустить в работу, без потери данных. Для этого базы должны быть в состоянии Synchronized. В режимах SUSPENDED, DISCONNECTED, SYNCHRONIZING возможен только принудительный переход с возможной потерей данных.
20 авг 09, 13:05    [7561302]     Ответить | Цитировать Сообщить модератору
 Re: High protection mirror. Объясните, пожалуйста..  [new]
rancid
Member

Откуда: *мск
Сообщений: 114
Спасибо за ответ. Только я все равно не до конца понял.
Вот смотрите, к примеру такая схема:
00:40. Выходит из строя зеркальный сервер, основной сервер не получает сообщения от зеракльного о том, что зеркало получило данные, думает, что нужно время и БД переходит в режим SYNCHRONIZING.
00:45 (к примеру). Основной сервер понимает, что с зеркальным что-то случилось и БД переходит в состояние SUSPENDED (DISCONNECTED), при этом принципал продолжает надеяться на лучшее и копит журнал транзакций, чтобы с оказией отправить его зеркалу для синхронизации.
00:50. Форс-мажор, основной сервер отрубается.
00:55. Основной сервер возвращается к жизни, стартует служба SQL Server и начинает проверять журнал транзакций на предмет "че бы откатить, что бы обеспечить целостность данных". Вопрос в чем - транзакции, произведенные в период с 00:40 по 00:50 - они будут откатываться, или нет? Если нет, то каким образом сервер понимает, что эти транзакции должны оставаться в журнале транзакций, но не должны усекаться?
20 авг 09, 13:17    [7561391]     Ответить | Цитировать Сообщить модератору
 Re: High protection mirror. Объясните, пожалуйста..  [new]
pr0ger
Member

Откуда: Москва
Сообщений: 1933
зафиксированные транзакции откатываться не могут. Я не знаю тонкостей работы внутренних механизмов сервера, скорее всего непереданные на зеркало транзакции каким-либо образом помечены.
20 авг 09, 13:29    [7561512]     Ответить | Цитировать Сообщить модератору
 Re: High protection mirror. Объясните, пожалуйста..  [new]
rancid
Member

Откуда: *мск
Сообщений: 114
BOL
Чтобы сеанс проходил в синхронном режиме, зеркальный сервер должен синхронизировать зеркальную базу данных с базой данных участника. С началом сеанса сервер участника начинает передачу своего активного журнала зеркальному серверу. Зеркальный сервер записывает все поступающие записи журнала на диск с максимально возможной скоростью. Как только все полученные записи журнала оказываются записанными на диск, происходит синхронизация баз данных. До тех пор пока связь между участниками не прекращается, синхронизация баз данных сохраняется.
...
После завершения синхронизации любая транзакция, зафиксированная в основной базе данных, фиксируется и на зеркальном сервере, что гарантирует защиту данных. Это достигается за счет того, что транзакция не фиксируется в базе данных участника до тех пор, пока сервер участника не получит от зеркального сервера сообщение, подтверждающее, что последний записал журнал транзакции на диск. Отметим, что время ожидания этого сообщения приводит к увеличению задержки транзакции.
...
Синхронность операции достигается следующим образом:

1. Получив транзакцию от клиента, основной сервер записывает ее в журнал транзакций.

2. Сервер участника записывает транзакцию в базу данных и одновременно направляет журнальную запись зеркальному серверу. Основной сервер ждет, пока от зеркального сервера поступит подтверждение, после чего он направляет клиенту одно из следующих подтверждений: о фиксации или откате транзакции.

3. Зеркальный сервер записывает журнал на диск и возвращает подтверждение серверу участника.

4. Получив подтверждение от зеркального сервера, сервер участника направляет клиенту сообщение с подтверждением.


И вот самая странная фраза:
BOL
В режиме высокой безопасности данные защищаются за счет их синхронизации в двух местах хранения. Гарантируется запись всех зафиксированных транзакций на диск зеркального сервера.

Именно из-за нее и возникает у меня вопрос - что происходит, пока зеркальный сервер недоступен? Будут ли зафискисрованы на основном сервере транзакции, не доставленные зеркалу?
20 авг 09, 13:34    [7561560]     Ответить | Цитировать Сообщить модератору
 Re: High protection mirror. Объясните, пожалуйста..  [new]
rancid
Member

Откуда: *мск
Сообщений: 114
pr0ger,
согласен, зафикисрованные не могут, но фиксируются ли те транзакции, которые не были доставлены на зеркальный сервер, а только ждут отправки?
20 авг 09, 13:36    [7561579]     Ответить | Цитировать Сообщить модератору
 Re: High protection mirror. Объясните, пожалуйста..  [new]
pr0ger
Member

Откуда: Москва
Сообщений: 1933
BOL
До тех пор пока связь между участниками не прекращается, синхронизация баз данных сохраняется.

Т.е. пока есть связь и обе базы работоспособны работает описанный в BOL механизм синхронизации. Как только связь прерывается, неотправленные транзакции начинают накапливаться в журнале транзакций. Они зафиксированные, откатываться не будут. Т.е. это просто хранилище непереданых транзакций, аналогичный механизм работает и в репликации транзакций.
20 авг 09, 13:48    [7561680]     Ответить | Цитировать Сообщить модератору
 Re: High protection mirror. Объясните, пожалуйста..  [new]
rancid
Member

Откуда: *мск
Сообщений: 114
Я, наверное, старшно туплю, но почему транзакции будут зафиксированными? Ведь:
BOL
...
1. Получив транзакцию от клиента, основной сервер записывает ее в журнал транзакций.

2. Сервер участника записывает транзакцию в базу данных и одновременно направляет журнальную запись зеркальному серверу. Основной сервер ждет, пока от зеркального сервера поступит подтверждение, после чего он направляет клиенту одно из следующих подтверждений: о фиксации или откате транзакции.
...

Насколько я понимаю "записывает в журнал транзакций" - это совсем не "фиксирует транзакцию". Спасибо за терпение).
20 авг 09, 13:56    [7561747]     Ответить | Цитировать Сообщить модератору
 Re: High protection mirror. Объясните, пожалуйста..  [new]
rancid
Member

Откуда: *мск
Сообщений: 114
Или основному серверу пофигу что там сделает зеркальный - откатит или зафиксирует? Т.е. основной сервер уже сам все сделал и поскольку знает, что на зеркальном БД в том же самом состоянии - уверен, что зеркальный "примет то же решение", что и основной, но клиенту об этом не говорит, поскольку хочет дождаться завршения всех операций, вызванных транзакцией, на зеркальном сервере..
20 авг 09, 13:59    [7561769]     Ответить | Цитировать Сообщить модератору
 Re: High protection mirror. Объясните, пожалуйста..  [new]
pr0ger
Member

Откуда: Москва
Сообщений: 1933
rancid
Я, наверное, старшно туплю, но почему транзакции будут зафиксированными? Ведь:
BOL
...
1. Получив транзакцию от клиента, основной сервер записывает ее в журнал транзакций.

2. Сервер участника записывает транзакцию в базу данных и одновременно направляет журнальную запись зеркальному серверу. Основной сервер ждет, пока от зеркального сервера поступит подтверждение, после чего он направляет клиенту одно из следующих подтверждений: о фиксации или откате транзакции.
...

Насколько я понимаю "записывает в журнал транзакций" - это совсем не "фиксирует транзакцию". Спасибо за терпение).

BOL
До тех пор пока связь между участниками не прекращается, синхронизация баз данных сохраняется.

Как только связь прекращается, работает обычный механизм работы транзакций и зафиксированные транзакции сохраняются в журнале для последующей передачи на зеркальный сервер.
20 авг 09, 14:01    [7561782]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить