Как достичь высокого уровня доступности сервера SQL Server - Зеркальное отображение баз данных

ОГЛАВЛЕНИЕ

 

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

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

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

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

Роль  показывает, служит конкретный сервер основным или зеркальным.

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

Партнер  — основной или зеркальный сервер.

В обычной среде на основном сервере выполняется резервная копия базы данных основного сервера, которая затем восстанавливается на зеркальном сервере (см. рис. 2). После этого на основном сервере необходимо настроить зеркальное отображение: либо в окне свойств базы данных основного сервера в среде SQL Server Management Studio (SMSS), либо с помощью сценариев языка T-SQL.


Figure 2 Database mirroring architecture

После того как зеркальное отображение настроено и сеанс зеркального отображения установлен, базы данных основного и зеркального серверов начинают синхронизироваться. База данных основного сервера отправляет свой журнал транзакций с записью событий, которые произошли после развертывания последней резервной копии базы данных на зеркальном сервере. Зеркальный сервер получает журнал и пытается как можно скорее применить его. При использовании приложения SQL Server 2005 Enterprise Edition этот процесс является многопоточным, в противном случае он представляет собой однопоточную операцию. После применения журналов на зеркальном сервере базы данных считаются синхронизированными и будут оставаться таковыми до разрыва сеанса зеркального отображения.

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

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

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

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

Обратите внимание, что при использовании зеркального отображения на основном и зеркальном серверах должен быть установлен одинаковый выпуск сервера SQL Server. Это не относится к следящему серверу, на котором может быть установлен выпуск SQL Server Express Edition. Кроме того, важно, чтобы база данных основного сервера находилась в режиме полного восстановления.

Технология ADO.NET 2.0 интегрирована в приложение SQL Server 2005 и включает возможность поддержки зеркального отображения баз данных и обеспечения для этого приложения прозрачного переключения при сбое на среду зеркального отображения. Это позволяет приложению ADO.NET автоматически переходить на другой ресурс, если подключение к базе данных основного сервера невозможно. Для этого не требуется дополнительной настройки или написания добавочного кода. Для настройки достаточно указать в строке подключения общего пользователя для обоих серверов и партнера по переходу на другой ресурс. Ниже приведен пример строки подключения ADO.NET, в которой указан партнер по переходу на другой ресурс для среды базы данных с зеркальным отображением:

"Provider=SQLNCLI.1;Data Source=MirrorDB;Failover Partner=SQL03;  Initial Catalog=AdventureWorks; Persist Security Info=True;User ID=TestUser; Password=TestPswd; Pooling=True; Connect Timeout=5;Application Name=ADOMirrorTest" 

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

Зеркальное отображение баз данных может оказаться особенно удачным вариантом, если необходимо сократить издержки. Действительно, чтобы реализовать архитектуру зеркального отображения баз данных, не требуются ни общие диски, ни углубленные или специальные навыки. В отличие от кластеризации, для зеркального отображения баз данных не требуется, чтобы оборудование обоих партнеров было одинаковым. К тому же реализовать зеркальное отображение достаточно просто. Это делается с помощью мастера настройки, который можно найти на вкладке Mirroring (зеркальное отображение) окна свойств базы данных (см. рис. 3). Для получения дополнительных сведений я также рекомендую прочитать технический документ «Database Mirroring Best Practices and Performance Considerations» (Лучшие методы работы с зеркальными отображениями баз данных и вопросы производительности), расположенный по адресу go.microsoft.com/fwlink/?LinkId=80897 (на английском языке).


Figure 3 Mirroring setup wizard