AlwaysOn Availability Groups

реклама
SQL SERVER 2012 ALWAYSON:
НОВЫЕ ВОЗМОЖНОСТИ ПО СОЗДАНИЮ КАТАСТРОФО
УСТОЙЧИВЫХ РЕШЕНИЙ
Дмитрий Артемов
Старший консультант
[email protected]
Терминология
1. AlwaysOn – «покрывающий» термин для описания отказоустойчивых
решений на базе SQL Server 2012
2. AlwaysOn описывает два решения
AlwaysOn Availability Group (AG) для защиты на уровне БД
Физическая репликация записей журнала транзакций (сходное с
зеркалированием) для синхронизации Primary-Secondary серверов
AlwaysOn Failover Cluster Instance (FCI) для защиты на уровне экземпляра
(расширенные возможности SQL Server Failover Cluster Instance)
Классическая схема с разделяемым хранилищем, без синхронизации журналов
(возможно использование SRDF в соответствующих сценариях)
3. В обоих решения используется Windows Server Failover Cluster
И AlwaysOn AG и AlwaysOn FCI требуют нахождения всех узлов в одном Windows
Server Failover Cluster (WSFC), отличие в том, что AlwaysOn FCI также требует
разделяемого хранилища
AlwaysOn AG похож на зеркалирование, когда все узлы работаю с собственными
дисками и синхронизация выполняется посредством передачи записей журнала
транзакций
4. AlwaysOn FCI может использоваться совместно с AlwaysOn AG
Представляем SQL Server AlwaysOn
Перевод группы БД как
единого набора
Несколько резервных
серверов
Активные резервные
серверы
Встроенное управление
Multisite Clustering
Гибкая политика перехода
Расширенная диагностика
Подходит для сценариев
консолидации
Сценарии использования (1)
 Direct Attached Storage
 Локальные, региональные и гео распределенные реплики
AG
AG
AG
AG
Асинхронная
репликация
AG
Пример
 Primary в Казани
 Failover Partner в Москве
 Синхронная копия в
Красноярске
Синхронная
репликация
 Асинхронная копия в
Иркутске (отчетность)
 Асинхронная копия в
ПетропавловсеКамчатском (Гео кластер)
Сценарии использования (2)
AG
AG
AG
Синхронная
репликация
 Shared Storage
 Локальные,
региональные и гео
распределенные
реплики
 Смешанная
конфигурация с
использованием Direct
Attached Storage
Асинхронная
репликация
Пример
 Primary Failover Cluster в Екатеринбурге
 Синхронный Secondary Failover Cluster в
Москве
 Асинхронный резервный сервер в
Хабаровске
защита на уровне БД
v
AlwaysOn Availability Groups
AlwaysOn Availability Groups – новый функционал, который расширяет и
комбинирует возможности database mirroring и log shipping
Переход группы БД
Множественные
резервные серверы
До 4 резервных
серверов
2 с синхронной
репликацией
Синхронное и
асинхронное
перемещение данных
Встроенная компрессия
и шифрование
Автоматический и
ручной переход
Гибкая политика
перехода
Автоматическое
восстановление страниц
Единое виртуальное
имя
Мастер
конфигурации
Dashboard
Интеграция с System
Center
Развитые средства
диагностики
Синхронизация Filestream
Поддержка
репликации
Активные
резервные
серверы
Readable
Backup
Автоматизация
средствами
power-shell
Переход при сбое
HR
DB
HR
DB
HR
DB
Secondary
Primary
Secondary
AG_HR
HR_VNN
Primary
Приложение пытается восстановить соединение после перехода
server HR_Listener;-catalog HRDB
После завершения перехода и
подъема listener
восстанавливается соединение к
новому primary
Availability Group - архитектура
AG
Windows Server Failover Cluster
AG-VNN
AG-IP
Database
Active Log Synchronization
DB
DB
DB
DB
Проверки «здоровья» узлов кластера,
Координации перехода,
Проверки «здоровья» Primary реплики,
Организации распределенного хранилища
данных с настройками и состояниями,
Распределенного управления
уведомлениями
Database
Active Log Synchronization
DB
DB
По данным в журнале транзакций
Посредством TCP Endpoint
Синхронно\Асинхронно
Со сжатием в канале
С шифрованием
Что такое Availability Group
«Контейнер»
1 или более БД
Listener (виртуальное сетевое имя)
1 или более IP адресов (DHCP или
статика, aka virtual IP)
DB
DB
DB
Реплика
Primary/Secondaries
Automatic Failover Partner
Sync/Async Secondaries
Readonly Routing list
AG
AG-VNN
AG-IP
AlwaysOn Active Secondary
Балансировки read-only нагрузки
Выполнения операций резервного копирования
Active Secondary – как сделать
Secondary доступной
DB1
DB2
DB1
DB2
Readable secondary позволяет перенаправить часть запросов на
резервный сервер
«Свежесть» данных зависит от задержек синхронизации, резервный
сервер обновляется в режиме близком к реальному времени
Что же такое «близко к реальному времени»?
Точное время отставания определить
невозможно
Это связано с работой процесса фиксации
записей в БД
Вначале переданные записи фиксируются в журнале
Затем они из журнала поднимаются в БД (Redo)
Рабочий процесс, выполняющий операции Redo
работает асинхронно и исполняется в фоновом режиме
При передаче записей журнала от интенсивных
операций (массивный импорт, перестройка индексов),
задержки могут быть выше (обычно это секунды)
Использование синхронной реплики сокращает
расхождения, вызванные сетевыми задержками
Active Secondary: Backup на резервном
сервере
 Backup может быть снят на
любой из реплик
R/W workload
Secondary
 Backup на primary попрежнему работает
Backups
 Log backup, выполненные
на любой реплике
формируют единую
цепочку копий
 Database Recovery
Advisor облегчает
восстановление
Backups
Backups
Primary
Secondary
Резервное копирование/Восстановление
Дифференциальная копия не поддерживаются на secondary
Полная копия поддерживается на secondary только в виде Copy-only
Т.к. не реализована очистка Differential bitmap для полного копирования
И Дифференциальная копия будет расти, пока не станет размером с БД
Рекомендуется использовать центральное хранилище для размещения
копий
Резервная копия на «отставшей» асинхронной реплике также будет
отставать
В среде AlwaysOn все копии журнала транзакций, независимо от места
сбора, формируют единую цепочку (log chain)
Т.е. копирование журнала на replica A, затем на replica B и на replica C, для
полного восстановления нужны все три копии
Recovery Advisor
Recovery Advisor собирает
информацию о доступных
файлах резервной копии и
из них формирует
временнОй период,
визуально
представленный на
диалоговом окне.
Администратор выбирает
нужную точку времени для
восстановления
Когда выбор сделан,
инструмент формирует
команду RESTORE
Read-Only Client Connectivity
AlwaysOn Failover Cluster Instances
Защита на уровне экземпляра
v
Основные расширения



sp_server_diagnostics
Позволяет выполнить консолидацию более 26 экземпляров The current results
are that TPCC running over an SMB link as described above performs at 97% of the
speed of direct-attach”)
Гибкая политика перехода
Пользователь назначает новые свойства
HealthCheckTimeout и FailureConditionLevel
FailureConditionLevel (0 до 5)
5 – Failover or restart on any qualified failure
4 – Failover or restart on moderate SQL Server errors
3 – Failover or restart on critical SQL Server errors
2 – Failover or restart on SQL Server unresponsive
1 – Failover or restart on SQL Server down
Диагностика
Exec sp_server_diagnostics
0 – No Automatic Failover or restart
WSFC Service
Результат IsAlive/ LooksAlive
Зависит от данных диагностики
и установленного уровня
FailureConditionLevel
IsAlive/LooksAlive
WSFC запрашивает ресурсную
DLL жив ли кластер SQL
Сокращение запланированных простоев


ACTIVE SECONDARY:
РАСПРЕДЕЛЕНИЕ ОТЧЕТНОЙ
НАГРУЗКИ
Отчетная нагрузка сейчас
Зеркалирование
Вся нагрузка падает на Primary (в том числе и
отчеты)
Негативное влияние на потребление
ресурсов/блокировки
Отчеты на зеркале с использованием snapshot
Задержка данных
Усложнение администрирования
Нет перехода на резервный узел
При создании snapshot – падение
производительности
Репликация
Чаще всего используется для
организации отчетов
За:
Большое число подписчиков,
фильтрация данных
Добавление индексов для отчетов
Против:
Сложность управления и оптимизации
Active Secondary – Readable
Secondary
SQLservr.exe
InstanceA
CRASH
DB1
DB2
Отчеты
Secondary
Primary
SQLservr.exe
Secondary
Primary
InstanceB
Синхронизация
журналов
DB1
DB2
Отчеты
Readable secondary позволяет перенести нагрузку от отчетов на secondary
Невысокая задержка
После перехода (failover) «читающие» приложения могут быть автоматически
перенаправлены на новый Secondary (требуется явный запрос на
соединение)
Не годится как замена сценариям репликации
Дисковая подсистема: влияние на
отчеты (1)
Воздействие на RTO
Отчеты отбирают
ресурсы от REDO
процесса
Увеличение recovery
time (RTO)
Secondary
Log Apply
Log
Cache
DB1 Log
Интенсивная
нагрузка
(IO., Memory, CPU)
DB1
Redo
Thread
Redo
Pages
DB1
Data
Отчеты
Что делать
Использовать Use
resource-governor для
контроля ресурсов под
отчеты
При использовании
комбинации
SYNC/ASYNC secondary,
лучше направить отчеты
на Async Secondary.
Дисковая подсистема: влияние на отчеты (2)
Конкурентный доступ и блокировки
Отчеты могут заблокировать REDO
Отчеты и REDO могут попасть в deadlock
Решение
Все уровни блокировки, используемые приложением,
автоматически преобразуются в Snapshot Isolation
Полностью прозрачно для приложения
Все подсказки оптимизатору игнорируются (часто отчеты
используют с опцией NOLOCK)
SQL Server никогда не выберет REDO как жертву deadlock
В результате
Снижение уровня блокирований между отчетами и REDO
Проблемы с DML (INSERT/DELETE/UPDATE) отсутствуют т.к.
это просто не позволено
Дополнительная нагрузка на TempDb за счет использования
версионирования
Производительность отчетов на
Secondary
Оптимизированные планы запросов
Цель: Сходные планы на Readable Secondary
Оптимизация запросов и статистика
SQL Server использует cost based optimizer, работа которого сильно зависит от
статистики
Если статистика отсутствует, SQL Server автоматически создает ее и хранит
Автоматическое создание/обновление статистики требует физических
изменений
Пример: Table T1 (C1, C2, C3)
Запрос на Primary с условием (C3 > 10).
SQL Server, если нужно, автоматически создаст статистику, на поле C3
На Secondary это невозможно т.к. физические изменения в БД запрещены
Аналогичная проблема при попытке обновить статистику
Решение
Статистика создается, но хранится в (многострадальной) TempDB
Системные представления (напр. sys.stats) показывают временную статистику
Не используется FULLSCAN (очень долго)
Проблемы
Рестарт сервера = потеря статистики
Для «скошенных» данных sampling может не дать качественной статистики
Создайте статистику WITH FULLSCAN на Primary и она перейдет на Secondary
Демо
v
Ресурсы по AlwaysOn
http://msdn.microsoft.com/en-us/sqlserver/gg490638(en-us,MSDN.10)
СПАСИБО!
Вопросы?
© 2011 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.
The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market
conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation.
MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
Скачать