Чи можуть групи доступності забезпечити безперебійну відмову (без відмов запиту)?


9

Я тестував функцію груп доступності в SQL Server 2012 і виявляю, що приблизно 15 секунд часу простою, коли основний сервер переходить на вторинний сервер. Усі запити SQL, виконані за цей час, не спрацьовують, доки не буде завершено перехід до відмови.

Чи є спосіб зменшити це на 0 секунд і не допустити, щоб запити не виходили під час переходу з відмовлення?

Іншими словами, чи є спосіб отримати будь-які запити, запущені під час невдалого перенаправлення на основний сервер замість відмови ... і чи є спосіб отримати нові db-з’єднання, щоб негайно підключитися до вторинного сервера замість відмови підключитися під час переходу на відмову?

На даний момент у групі доступності встановлено 2 сервери.


1
Перевірте це питання (і відповіді): dba.stackexchange.com/questions/25124/…
Макс Вернон

Це може зробити тільки Oracle RAC.
Річард Браун

Або ви повинні використовувати linux loadballancer у відповідних налаштуваннях перед sql сервером, як HAproxy.
каказ

Відповіді:


9

Ні, немає способу зробити відмову від простою з простою з AlwaysOn (або взагалі на SQL Server, наскільки мені відомо). Для цього SQL-серверу, до якого ви підключені, потрібно було б перенести стан на інший вузол середини запиту, і оскільки багато аварійних помилок несподівані, це неможливо.

Однак ви можете ввімкнути "лише для читання вторинники" в AlwaysOn, і тоді ваші читачі матимуть нульовий час простою, коли основний сервер не завершиться - оскільки вони підключаються до вторинної копії так чи інакше, щоб робити свої SELECT запити, вони не будуть навіть помітити відмову. Користувачам із відкритим з’єднанням "Написати" все ще буде перерва, але принаймні якась частина вашої користувальної бази буде безперебійною.


Якщо ввімкнено функцію "лише для читання", чи виникають будь-які запити на читання на первинному або вони завжди виконуються у вторинних? А що станеться, якщо вторинний сервер має помилку в цій ситуації?
Джон

Читання проти вторинного відбувається лише в тому випадку, якщо ви налаштуєте клієнта для підключення до вторинного.
Макс Вернон

1
Я бачу, так що для цього потрібен розумніший клієнтський додаток.
Джон

@JohnHughes: Ознайомтеся з цим документом Microsoft (середина сторінки 5): tinyurl.com/9dtvndv та цим дописом у блозі: tinyurl.com/8cyr9za . Вам не обов’язково потрібен розумніший додаток - коли ви ввімкнете цю функцію, ви можете вказати, що будь-яка програма може підключитися до читаного вторинного, але будь-яка спроба зробити транзакцію DDL / DML не вдасться. Якщо ви використовуєте новий новітній клієнт, ви можете вказати "ReadIntent", що означає, що новий клієнт буде читати з вашого вторинного, тоді як старші клієнти продовжуватимуть робити всі транзакції проти вашого основного. Варіант, але потрібне читання.
SqlRyan

SqlRyan вірно, немає способу відмовитись від екземпляра SQL Server за допомогою AlwaysOn групи доступності без відключення клієнтів.
mrdenny
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.