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

Откуда:
Сообщений: 468
Добрый день!

Правильно ли я понимаю, что при запущенной системе AlwaysOn, например в режиме зеркалирования или доставка журналов (log shipping) запрос из системных таблиц типа:
select * from master..sysdatabases where dbid = db_id()

на разных узлах SQL сервера может вернуть разные данные?
18 авг 17, 12:34    [20733895]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про AlwaysOn  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36972
Lisichkin
при запущенной системе AlwaysOn, например в режиме зеркалирования или доставка журналов (log shipping)
Щито?..

Lisichkin
на разных узлах SQL сервера может вернуть разные данные?

Естественно, может.

Сообщение было отредактировано: 18 авг 17, 12:39
18 авг 17, 12:38    [20733907]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про AlwaysOn  [new]
0wl
Member

Откуда:
Сообщений: 54
Lisichkin,

AO -- это продолжение эволюции технологии: log shipping -> mirroring -> AO, так что вопрос не совсем корректен.

А так, да, результаты запроса могут быть разными
18 авг 17, 12:41    [20733921]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про AlwaysOn  [new]
Lisichkin
Member

Откуда:
Сообщений: 468
Спасибо!
А разве это нормально, что "один", с точки зрения пользователя сервер, на самом деле имеет разные данные в системных таблицах? Как это можно избежать? backup/restore master?
18 авг 17, 13:42    [20734133]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про AlwaysOn  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36972
Lisichkin
Спасибо!
А разве это нормально, что "один", с точки зрения пользователя сервер, на самом деле имеет разные данные в системных таблицах? Как это можно избежать? backup/restore master?
С чего это вдруг пользователю итересны данные в системных таблицах? O_o
18 авг 17, 13:45    [20734155]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про AlwaysOn  [new]
aleksrov
Member

Откуда:
Сообщений: 948
Lisichkin,

Вы вообще не понимаете как работает AlwaysOn.
Есть два режима: синхронный и асинхронный.
В первом данные на реплике должны быть такие как и на Primary, во втором нет.
В синхронном вы выполняете транзакцию, вставляете строку к примеру, происходит commit, из-за коммита все данные которые были в кешэ лога (а такой есть), записываются в файл журнала, параллельно этот блог записывается в специальный pool, который читается специальным thread log capture, для каждой реплики свой, и отправлятеся на реплики, там спец. thread называемый log receive получает эти блоки и записывает в log cache, оттуда их читает специальный Redo Thread и накатывает эти изменения (он также может читать эти блоки из файла журнала реплики, т.к. если произойдет коммит или лог заполнится или просто redo thread отстает, данные отправятся в файл лога и в кэше их небудет). Когда данные о транзакции записанны в файл лога в реплике, primary отправляется уведомление об этом и уже потом клиент получает информацию что транзакция завершина. Здесь основная разница, в о втором режиме primary не ждет уведомления от вторичной реплики, а сразу говорит клиенту, что транзакция завершина, поэтому и данные могут отличаться.
И системные БД не могут быть частью AlwaysOn.
21 авг 17, 12:19    [20738246]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про AlwaysOn  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36972
aleksrov
В первом данные на реплике должны быть такие как и на Primary, во втором нет.
Я вам по секрету скажу, что в синхронном режиме данные на второй реплике не должны и не обязаны быть одинаковыми, ибо синхронизируется только запись commit в журнал, а не его redo на вторичной реплике.
21 авг 17, 12:33    [20738293]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про AlwaysOn  [new]
aleksrov
Member

Откуда:
Сообщений: 948
Гавриленко Сергей Алексеевич,

Ну так да, согласен, redo работают независимо, и если они еще отстают прилично, данные могут быть разные, моя неправда :)
21 авг 17, 12:37    [20738302]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про AlwaysOn  [new]
o-o
Guest
у товарища Лисичкина просто вообще своя собственная терминология.
под AlwaysOn он понимает SQL Server High-Availability Solutions.
21 авг 17, 13:07    [20738410]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про AlwaysOn  [new]
tazzman
Member

Откуда:
Сообщений: 15
AlwaysOn бывает двух типов: Failover Cluster Instances (FCI) и Availability Groups (AG) . Более подробно о них можно прочитать вот здесь:
https://msdn.microsoft.com/en-us/library/ms190202(v=sql.120).aspx - Overview
https://msdn.microsoft.com/en-us/library/ff929171(v=sql.120).aspx - FCI
https://msdn.microsoft.com/en-us/library/ms189134(v=sql.120).aspx - AG

Когда говорят про AlwaysOn без добавления какой-либо аббревиатуры, как правило имеют ввиду AG, и в таком разрезе - любые запросы к системным базам могут вернуть разные значения (как уже писали выше), поскольку это 2 разных сервера, которые зеркалят между собой только пользовательские базы.

Ваш же вопрос, скорее всего, про FCI. В данном случае, запрос на пассивном сервере выполнить вообще не получится, поскольку служба SQL-сервера на нём будет остановлена.
22 авг 17, 12:40    [20741021]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про AlwaysOn  [new]
aleksrov
Member

Откуда:
Сообщений: 948
tazzman
AlwaysOn бывает двух типов: Failover Cluster Instances (FCI) и Availability Groups (AG) . Более подробно о них можно прочитать вот здесь:
https://msdn.microsoft.com/en-us/library/ms190202(v=sql.120).aspx - Overview
https://msdn.microsoft.com/en-us/library/ff929171(v=sql.120).aspx - FCI
https://msdn.microsoft.com/en-us/library/ms189134(v=sql.120).aspx - AG

Когда говорят про AlwaysOn без добавления какой-либо аббревиатуры, как правило имеют ввиду AG, и в таком разрезе - любые запросы к системным базам могут вернуть разные значения (как уже писали выше), поскольку это 2 разных сервера, которые зеркалят между собой только пользовательские базы.

Ваш же вопрос, скорее всего, про FCI. В данном случае, запрос на пассивном сервере выполнить вообще не получится, поскольку служба SQL-сервера на нём будет остановлена.


-
22 авг 17, 13:00    [20741130]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про AlwaysOn  [new]
komrad
Member

Откуда:
Сообщений: 5244
Lisichkin
Добрый день!

Правильно ли я понимаю, что при запущенной системе AlwaysOn, например в режиме зеркалирования или доставка журналов (log shipping) запрос из системных таблиц типа:
select * from master..sysdatabases where dbid = db_id()

на разных узлах SQL сервера может вернуть разные данные?

выполняйте его из master, model, tempdb и msdb - тогда он вернет одинаковые данные
22 авг 17, 13:26    [20741248]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить