|
AlwaysOn AG после сбоя
|
|||
---|---|---|---|
#18+
Добрый день. Есть кластер AlwaysOn AG из двух нод. После сбоя праймари нормально работало на оставшейся ноде. Вторую ноду удалось восстановить не сразу и синхронизация заняла прилично времени. Есть запросы с параметром Readonly, в нормальных условиях подключается к вторичной ноде для чтения. Но когда второй хост включился, а базы ещё были в стадии запуска\синхронизации, запросы с Readonly подключались к вторичной, получали ошибку "база недоступна" и отваливались. Сейчас со стороны приклада нет никакой проверки, сам SQL перенаправляет запросы, если сервер не доступен. Но проверки доступности базы похоже нет, database level health detection - при недоступности базы перемещает первичную реплику, но это и так было сделано. Есть ли возможность включить проверку состояния баз данных для запросов с Readonly на стороне СУБД или как-то не слишком затратно делали со стороны приклада? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2020, 13:06 |
|
AlwaysOn AG после сбоя
|
|||
---|---|---|---|
#18+
Danion Есть ли возможность включить проверку состояния баз данных для запросов с Readonly на стороне СУБД Делать отдельный процесс, который будет следить за состоянием баз(ы) вторичной(ых) реплик(и) и удалять и восстанавливать RO роутинг ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2020, 13:52 |
|
AlwaysOn AG после сбоя
|
|||
---|---|---|---|
#18+
Используйте для подключения прослушивателя (листенер) с настроенным роутингом подключений. На клиентах в строке подкючения пропишите ApplicationIntent=ReadOnl ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2020, 10:53 |
|
AlwaysOn AG после сбоя
|
|||
---|---|---|---|
#18+
Спасибо за ответы. msLex, я правильно понимаю, что встроенных вариантов нет, только лепить костыли? Александр, Листнер есть, по нему и подключаются. Часть запросов с параметром ApplicationIntent=ReadOnly. Тут и выяснилась проблема, что если вторичная нода совсем лежит, то всё хотя бы работает и все запросы идут на работающую первичную. А вот если вторичную включили, а базы там ещё не пришли в рабочее состояние, то запросы с ApplicationIntent=ReadOnly уже на вторичную ноду уходят, а базы доступной там нет. Какая-то странная отказоустойчивость выходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2020, 15:12 |
|
AlwaysOn AG после сбоя
|
|||
---|---|---|---|
#18+
Нет вариантов. Сервер запросто может редиректить читателей на реплику, на которой база не додступна для чтения. Или встриавайте в приложение логику "если вдруг не читается с ApplicationIntent=ReadOnly, то коннектимся к основной ноде без всяких интентов", или спиливайте своевременно роутинг на недоступную для чтения реплику. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2020, 15:16 |
|
|
start [/forum/topic.php?fid=46&fpage=63&tid=1686236]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
31ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 141ms |
0 / 0 |