Реализация отказа в MS SQL Server 2017 Standard

Автор: admin от 14-11-2017, 12:20, посмотрело: 103

Предисловие



Достаточно нередко можно встретить задачу об обеспечении отказоустойчивости СУБД MS SQL Server. Еще интереснее становится, когда нет лицензии Enterprise, а только Standard.



Сразу отметим, что рассматриваться лицензия Express не будет, т к по данному экземпляру есть существенные ограничения. Да, некоторые из них можно обойти. Например, максимальный размер БД в 10 ГБ легко решается путем декомпозиции большой БД на более маленькие (например, по какому-то признаку создавать новую БД, а в главной БД в представлениях объединять выборки из одних таблиц разных БД). Но отказоустойчивость в Express будет достигаться либо силами системного администратора, либо использованием собственно разработанного (или стороннего) ПО.



В данной статье будут вкратце разобраны все существующие стандартные технологии отказоустойчивости для MS SQL Server 2017 и будет рассмотрен пример реализации отказа наиболее подходящего унифицированного из них в лицензии Standard.

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



Разберем теперь один из возможных вариантов отработки отказа при доставке журналов транзакций на уровне СУБД.



Важно отметить, что данный метод подходит только для сервера, который является резервным только для одного экземпляра MS SQL Server, т к для нескольких возникает проблема в определении какие задания выполнять, а какие нет.



Опишем сначала саму последовательность действий:




  • Выполнить все задания по копированию последних файлов с источника (при продуманной архитектуре, путь должен быть доступен даже при падении основного сервера)

  • Выключить все задания по копированию файлов с источника

  • Выполнить все задания по восстановлению БД по последним файлам с источника

  • Выключить все задания по восстановлению БД по последним файлам с источника

  • Сделать БД восстановленными и основными по доставкам журнала, но без получателя

  • Создать полные резервные копии для БД

  • Создать задания для создания резервных копий журналов транзакций БД



  • Ниже приведем пример реализации выше описанной последовательности в виде хранимой процедуры.



    Стоит отметить, что здесь важно настроить логин (желательно доменный), под которым будут запускаться созданные задачи для создания резервных копий журналов транзакций.





    Для возврата на основной сервер необходимо заново настроить доставку журналов транзакций с резервного сервера на основной, а затем сделать отработку отказа (после этого основной сервер снова станет боевым). После этого настроить доставку журналов транзакций с боевого сервера на резервный.



    Настройка автокоррекции мониторинга доставки журналов транзакций



    Для мониторинга доставки журналов транзакций используется на сервере-мониторе задание LSAlert_ и отчет (Правой кнопкой мыши по экземпляру сервера-монитора, далее-ОтчетыСтандартный отчетСостояние доставки журналов транзакций).



    Достаточно часто со временем сервер-монитор (в случае, если он не является боевым) неправильно берет последнее время создания резервной копии журнала транзакций БД по боевому серверу. В следствии чего возникают ложные предупреждения.



    Решить проблему можно следующим простым скриптом:





    Вызов хранимой процедуры можно автоматизировать по времени. Например, каждые 5 минут, создав соответствующую задачу в Агенте. Естественно, что боевой сервер необходимо связать на резервном (Объекты сервераСвязанные сервера).



    Здесь используется представление [inf].[vServerLastBackupDB] в БД SRV, которое определяет последние резервные копии БД:







    Результат



    В данной статье был рассмотрен краткий обзор всех возможных вариантов отказоустойчивости и быстрой доступности в MS SQL Server 2017, а также разобраны примеры реализаций отработки отказа и автокоррекции мониторинга доставки журналов транзакций.



    Источники:



    » msdb

    » Сравнение выпусков SQL Server 2017

    » AlwaysOn

    » Кластеризация

    » Репликация

    » Зеркалирование

    » Доставка журналов транзакций

    » Настройка доставки журналов

    » When was the last time your SQL Server database was restored

    Источник: Хабрахабр

    Теги: MS SQL Server

    Категория: Программирование » Веб-разработка

    Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
    Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

    Добавление комментария

    Имя:*
    E-Mail:
    Комментарий:
    Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера
    Введите два слова, показанных на изображении: *