Обзор зеркального отображения базы данных

Зеркальное отображение базы данных — это преимущественно программное решение, направленное на повышение доступности базы данных. Зеркальное отображение каждой базы данных осуществляется отдельно и работает только с теми базами данных, которые используют модель полного восстановления. Простая модель восстановления и модель восстановления с неполным протоколированием не поддерживают зеркальное отображение базы данных. Следовательно, все массовые операции всегда полностью протоколируются. Зеркальное отображение базы данных работает при любом поддерживаемом уровне совместимости базы данных.

ПримечаниеПримечание

Зеркальное отображение баз данных master, msdb, tempdb и model не поддерживается.

Зеркальное отображение базы данных поддерживает две копии одной базы данных, которые должны находиться на различных экземплярах сервера SQL Server Database Engine. Обычно такие экземпляры находятся на компьютерах, расположенных в разных местах. Один экземпляр сервера обслуживает базу данных для клиентов (основной сервер). Второй экземпляр служит в качестве горячего или теплого резервного сервера (зеркальный сервер), в зависимости от конфигурации и состояния сеанса зеркального отображения. Синхронизация сеанса зеркального отображения базы данных позволяет получить сервер «горячего» резервирования, поддерживающий быструю отработку отказа без потери данных зафиксированных транзакций. Если сеанс не синхронизирован, то зеркальный сервер обычно работает в качестве сервера «теплого» резервирования (с возможной потерей данных).

Преимущества зеркального отображения базы данных

Зеркальное отображение базы данных — это простая стратегия обеспечения надежности, имеющая следующие преимущества:

  • Повышает защиту данных.

    Зеркальное отображение обеспечивает полную или почти полную избыточность данных в зависимости от того, какой режим установлен: высокой безопасности или высокой производительности. Дополнительные сведения см. в подразделе «Режимы работы» ниже в этом разделе.

    Участник зеркального отображения, запущенный в SQL Server 2008 Enterprise или более поздней версии, автоматически пытается разрешить некоторые виды ошибок, которые могут мешать чтению страницы данных. Участник, который не может прочитать страницу, запрашивает новую копию у другого участника. Если этот запрос завершился успешно, то нечитаемая страница заменяется копией, которая обычно дает ошибку. Дополнительные сведения см. в разделе Автоматическое восстановление страниц во время сеанса зеркального отображения базы данных.

  • Повышает доступность базы данных.

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

  • Повышает доступность рабочей базы данных при обновлениях.

    Чтобы уменьшить время простоя базы данных, подвергаемой зеркальному отображению, можно последовательно обновить экземпляры SQL Server, участвующие в сеансе зеркального отображения. Это вызовет простой только на время одной отработки отказа. Такая форма обновления называется последовательным обновлением. Дополнительные сведения см. в разделе Как установить пакет обновления на систему с минимальным временем простоя для зеркально отображаемых баз данных.

Как работает зеркальное отображение базы данных

Основной и зеркальный серверы соединены и работают совместно, являясь участникамисеанса зеркального отображения базы данных. Два участника выполняют в сеансе взаимодополняющие роли: основную роль и зеркальную роль. В любой момент времени один из участников играет роль основного сервера, а другой участник — зеркального. При этом говорится, что участник владеет своей текущей ролью. Участник, владеющий основной ролью, называется основным сервером, а его копия базы данных является текущей основной базой данных. Участник, владеющий зеркальной ролью, называется зеркальным сервером, а его копия базы данных является текущей зеркальной базой данных. При развертывании зеркального отображения базы данных в рабочей среде основная база данных является рабочей базой данных.

Зеркальное отображение базы данных заключается в том, что в зеркальной базе данных повторяются все операции вставки, обновления и удаления, производимые в основной базе данных. Для этого поток записей активных транзакций с максимально возможной быстротой отправляется на зеркальный сервер. В отличие от репликации, которая работает на логическом уровне, зеркальное отображение базы данных работает на уровне физической записи журнала. Начиная с SQL Server 2008, основной сервер сжимает поток записей журнала транзакций перед отправкой на зеркальный сервер. Сжатие осуществляется во всех сеансах зеркального отображения.

Режимы работы

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

Существует два режима работы зеркального отображения. Первый режим высокого уровня безопасности поддерживает синхронную работу. В этом режиме в момент начала сеанса зеркальный сервер с максимально возможной скоростью синхронизирует зеркальную базу данных с основной базой данных. После синхронизации базы данных транзакция фиксируется на обоих участниках за счет повышения риска задержки транзакции.

Второй режим высокой производительности работает асинхронно. Зеркальный сервер пытается соответствовать записям в журнале, отправляемым основным сервером. Зеркальная база данных может несколько отставать от основной базы данных. Хотя разрыв между базами данных, как правило, очень мал. Однако этот разрыв может стать существенным, если основной сервер сильно загружен или перегружена система зеркального сервера.

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

Для всех сеансов зеркального отображения базы данных поддерживается только один основной и один зеркальный сервер. Эта конфигурация показана на следующем рисунке.

Участники сеанса зеркального отображения базы данных

Для режима высокого уровня безопасности с автоматической отработкой отказа требуется третий экземпляр сервера, называемый следящим. В отличие от двух участников зеркального отображения, следящий сервер не обслуживает базу данных. Он отвечает за автоматическую отработку отказа, следя за работоспособностью и функциональностью основного сервера. Зеркальный сервер инициирует автоматическую отработку отказа только в том случае, если есть соединение между зеркальным и следящим серверами после отключения обоих серверов от основного сервера.

На следующей иллюстрации показана конфигурация с участием следящего сервера.

Сеанс зеркального отображения, в котором участвует следящий сервер

Дополнительные сведения см. в подразделе «Переключение ролей» ниже в этом разделе.

ПримечаниеПримечание

Установление нового сеанса зеркального отображения или добавление следящего сервера к существующей конфигурации требует, чтобы на всех экземплярах серверов работала одна и та же версия SQL Server. Однако при обновлении до версии SQL Server 2008 или более поздней версии экземпляров могут различаться. Дополнительные сведения см. в разделе Как снизить время простоя зеркальных баз данных при обновлении экземпляров сервера.

Безопасность транзакций и рабочие режимы

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

При настройке зеркального отображения базы данных с помощью инструкций Transact-SQL необходимо обладать знаниями о настройке безопасности транзакций. Безопасность транзакций управляется свойством SAFETY инструкции ALTER DATABASE. Для базы данных, зеркальная копия которой создается, свойство SAFETY имеет значение FULL или OFF.

  • Если параметр SAFETY имеет значение FULL, операция зеркального отображения базы данных выполняется в синхронном режиме после начальной фазы синхронизации. Если следящий сервер установлен в режим высокой производительности, то в сеансе поддерживается автоматическая отработка отказа.

  • Если параметр SAFETY имеет значение OFF, то операция зеркального отображения базы данных выполняется в асинхронном режиме. Сеанс работает в режиме высокой производительности, и параметр WITNESS также должен иметь значение OFF.

Дополнительные сведения см. в разделе Настройки Transact-SQL и режимы зеркального отображения базы данных.

Переключение ролей

В контексте сеанса зеркального отображения базы данных роли основного и зеркального серверов обычно взаимозаменяемы посредством так называемого переключения ролей. Переключение ролей заключается в передаче основной роли зеркальному серверу. При этом зеркальный сервер действует в качестве участника отработки отказа для основного сервера. При переключении роли зеркальный сервер принимает на себя роль основного и переводит свою копию базы данных в режим «в сети», начиная функционировать в качестве основной базы данных. Бывший основной сервер (если он доступен) принимает на себя роль зеркального, а его база данных становится новой зеркальной базой данных. В принципе, переключение ролей туда и обратно может выполняться многократно.

Существует три формы переключения ролей.

  • Автоматическая отработка отказа

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

    Роль следящего сервера заключается в определении готовности и функциональности указанного сервера-участника. При нарушении соединения зеркального сервера с основным сервером, но сохранении соединения следящего сервера с основным следящий сервер не инициирует отработку отказа. Дополнительные сведения см. в разделе Следящий сервер зеркального отображения базы данных.

  • Переход на другой ресурс вручную

    Для перехода требуется режим высокого уровня безопасности. Участники должны быть подключены друг к другу, а база данных должна быть уже синхронизирована.

  • Принудительное обслуживание (с возможной потерей данных)

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

    Важное примечаниеВажно!

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

При любом сценарии переключения ролей, как только новая основная база данных переходит в режим «в сети», клиентские приложения быстро восстанавливают свою работу, заново соединившись с базой данных.

Возможности взаимодействия и совместной работы с другими функциями компонента Database Engine

Зеркальное отображение базы данных можно использовать со следующими возможностями и компонентами SQL Server.

Поддержка зеркального отображения базы данных

Начиная с версии SQL Server 2005 с пакетом обновления 1 (SP1), в качестве участников зеркального отображения и следящих серверов поддерживаются выпуски Standard и Enterprise. При этом на всех участниках должен быть установлен один и тот же выпуск; асинхронное зеркальное отображение базы данных (режим высокой производительности) поддерживается только в выпуске Enterprise. Следящие серверы также поддерживаются в выпусках Workgroup Edition и Express Edition. 

Разделы, связанные с зеркальным отображением базы данных