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

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

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

Нельзя осуществлять зеркальное отображение баз данных 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), участники зеркального отображения базы данных и следящие серверы поддерживаются в выпусках SQL Server Standard и SQL Server Enterprise. При этом на всех участниках должен быть установлен один и тот же выпуск; асинхронное зеркальное отображение базы данных (режим высокой производительности) поддерживается только в выпуске SQL Server Enterprise. Следящие серверы также поддерживаются в выпусках SQL Server Workgroup и SQL ServerExpress.

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