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

Изменения: 5 декабря 2005 г.

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

ms189852.note(ru-ru,SQL.90).gifПримечание.
Невозможно зеркальное отображение базы данных master, msdb, tempdb и model.

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

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

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

  • Повышает защиту данных.
    Зеркальное отображение обеспечивает полную или почти полную избыточность данных, в зависимости от того, какой режим установлен: высокой защиты или высокой производительности. Дополнительные сведения см. в подразделе «Режимы работы» ниже в этом разделе.
  • Повышает доступность базы данных.
    В режиме высокого уровня защиты с автоматическим переходом на другой ресурс при возникновении сбоя резервная копия базы данных переводится в оперативный режим (без потери данных). В других режимах работы администратор базы данных может включить принудительное обслуживание (с возможной потерей данных) на резервной копии базы данных. Дополнительные сведения см. в подразделе «Переключение ролей» ниже в этом разделе.
  • Повышает доступность рабочей базы данных при обновлениях.
    Чтобы уменьшить время простоя зеркальной базы данных, можно последовательно обновить экземпляры SQL Server, участвующие в сеансе зеркального отображения базы данных, что приводит к остановке лишь на время единственного перехода на другой ресурс. Этот вид обновления известен как пошаговое обновление. Дополнительные сведения см. в разделе Как установить пакет обновления на систему с минимальным временем простоя для зеркально отображаемых баз данных.

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

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

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

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

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

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

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

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

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

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

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

Следующая схема иллюстрирует конфигурацию с участием следящего сервера.

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

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

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

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

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

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

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

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

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

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

  • Автоматический переход на другой ресурс
    Для этого требуется режим высокого уровня безопасности и наличие зеркального сервера и следящего сервера. База данных уже должна быть синхронизирована, а следящий сервер должен быть подключен к зеркальному.
    Роль следящего сервера заключается в определении готовности и функциональности указанного сервера-участника. При нарушении связи зеркального сервера с основным сервером, но при сохранении связи следящего сервера с основным следящий сервер не инициирует переход на другой ресурс. Дополнительные сведения см. в разделе Следящий сервер зеркального отображения базы данных.
  • Переход на другой ресурс вручную
    Для перехода требуется режим высокого уровня безопасности. Участники должны быть подключены друг к другу, а база данных должна быть уже синхронизирована.
  • Принудительное обслуживание (с возможной потерей данных)
    В режиме высокой производительности и режиме высокого уровня безопасности без автоматического перехода на другой ресурс принудительное обслуживание возможно при сбое основного сервера и доступном зеркальном сервере.
    ms189852.note(ru-ru,SQL.90).gifВажно!
    Режим высокой производительности предназначен для работы без следящего сервера. Но если существует следящий сервер, то для принудительного обслуживания необходимо, чтобы он был подключен к зеркальному серверу.

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

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

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

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

См. также

Другие ресурсы

Клиентские соединения с зеркальной базой данных
Зеркальное отображение базы данных и другие возможности и компоненты
sp_dbcmptlevel (Transact-SQL)

Справка и поддержка

Получение помощи по SQL Server 2005