Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения:SQL Server
Зеркальное отображение базы данных может использоваться совместно с репликацией для повышения доступности базы данных публикации. В зеркальном отображении базы данных участвуют две копии одной базы данных, которые обычно расположены на разных компьютерах. В любой момент только одна копия базы данных доступна клиентам. Эта копия называется основной базой данных. Обновления, вносимые клиентами в основную базу данных, применяются к другой копии базы данных, называемой зеркальной базой данных. Зеркальное отображение включает применение к зеркальной базе данных журнала транзакций всех вставок, обновлений или удалений, выполненных в основной базе данных.
Переключение репликации на зеркальную базу данных полностью поддерживается для баз данных публикаций, а для баз данных подписок поддержка ограничена. Для базы данных распространения зеркальное отображение не поддерживается. Сведения о восстановлении базы данных распространителя или базы данных подписки без перенастройки репликации см. в статье Создание резервной копии и восстановление из копий реплицируемых баз данных.
Примечание.
После переключения при отказе зеркальная база данных становится основной. В этом разделе термины «основной сервер» и «зеркальный сервер» всегда обозначают исходный основной и зеркальный серверы.
Требования и аспекты использования репликации с зеркальным отображением баз данных
При использовании репликации совместно с зеркальным отображением базы данных помните о следующих требованиях и правилах.
Основная и зеркальная базы данных должны использовать один и тот же дистрибьютор. Мы рекомендуем использовать удаленный Распространитель, поскольку он обеспечивает более высокую отказоустойчивость в случае незапланированного переключения при отказе у Издателя.
Репликация поддерживает зеркалирование базы данных публикаций для репликации слиянием и для транзакционной репликации с подписчиками только для чтения или с подписчиками с обновлением через очередь. Подписчики с немедленным обновлением, издатели Oracle, издатели в одноранговой топологии, а также повторная публикация не поддерживаются.
Метаданные и объекты, которые существуют за пределами базы данных, не копируются на зеркало. Это касается имен входа, заданий, связанных серверов и так далее. Если в зеркальной базе данных нужны метаданные и объекты, их необходимо скопировать вручную. Дополнительные сведения см. в статье Управление именами входа и заданиями после переключения ролей (SQL Server).
Настройка репликации с зеркальным отображением базы данных
Настройка репликации и зеркального отображения базы данных состоит из пяти шагов. Каждый шаг описывается в следующем разделе.
Настройка издателя.
Настройка зеркального отображения базы данных.
Настройте зеркало так, чтобы оно использовало того же распространителя, что и основная база данных.
Настройте агенты репликации для аварийного переключения.
Добавьте основную и зеркальную базы данных в Монитор репликации.
Шаги 1 и 2 могут быть выполнены в обратном порядке.
Настроить зеркальное отображение для базы данных публикации
Настройте Publisher:
Рекомендуется использовать удаленный распространитель. Дополнительные сведения о настройке распространения см. в статье Настройка распространения.
Базу данных можно включить для публикаций моментальных снимков, транзакционных публикаций и/или публикаций слияния. Для зеркальных баз данных, которые будут содержать более одного типа публикаций, базу данных при помощи процедуры sp_replicationdboptionследует активировать для обоих типов публикаций на том же узле. Например, можно было бы выполнить следующие вызовы хранимых процедур в основной базе данных:
exec sp_replicationdboption @dbname='<PublicationDatabase>', @optname='publish', @value=true; exec sp_replicationdboption @dbname='<PublicationDatabase>', @optname='mergepublish', @value=true;Дополнительные сведения о создании публикаций см. в статье Публикация данных и объектов базы данных.
Настройка зеркального отображения базы данных. Дополнительные сведения см. в статьях Установка сеанса зеркального отображения базы данных с использованием проверки подлинности Windows и Настройка зеркального отображения базы данных (SQL Server).
Настройте распределение для зеркала. Укажите имя зеркальной базы данных в качестве имени издателя и укажите те же самые распространитель и папку моментальных снимков, которые используются основной базой данных. Например, если проводится настройка репликации с помощью хранимых процедур, выполните sp_adddistpublisher на распространителе, а затем sp_adddistributor на зеркальном сервере. Для sp_adddistpublisherвыполните следующее:
установите значение параметра @publisher равным сетевому имени зеркала;
Установите для параметра @working_directory значение папки моментальных снимков, используемой основным сервером.
Укажите имя зеркала в параметре агента –PublisherFailoverPartner. Агент Этот параметр требуется следующим агентам для идентификации зеркала после переключения при отказе:
Агент снимков (для всех публикаций)
Агент чтения журнала (для всех публикаций транзакций)
Агент чтения очередей (для транзакционных публикаций, поддерживающих подписки с обновлением через очередь)
Агент слияния (для подписок на слияние)
Компонент прослушивателя репликации SQL Server (replisapi.dll: для подписок на слияние, синхронизируемых с помощью веб-синхронизации)
элемент управления SQL Merge ActiveX (для подписок на слияние, синхронизируемых с этим элементом управления)
Агент распространителя и элемент управления ActiveX распространения не имеют этого параметра, потому что они не подключаются к издателю.
Изменения параметров агента вступают в действие при следующем запуске агента. Если агент работает непрерывно, необходимо остановить и перезапустить агент. Параметры могут быть заданы в профилях агента или из командной строки. Дополнительные сведения см. в разделе:
Рекомендуется добавить параметр –PublisherFailoverPartner в профиль агента, а затем указать в профиле имя зеркала. Например, если настраивается репликация с помощью хранимых процедур:
-- Execute sp_help_agent_profile in the context of the distribution database to get the list of profiles. -- Select the profile id of the profile that needs to be updated from the result set. -- In the agent_type column returned by sp_help_agent_profile: -- 1 = Snapshot Agent; 2 = Log Reader Agent; 3 = Distribution Agent; 4 = Merge Agent; 9 = Queue Reader Agent. exec sp_help_agent_profile; -- Setting the -PublisherFailoverPartner parameter in the default Snapshot Agent profile (profile 1). -- Execute sp_add_agent_parameter in the context of the distribution database. exec sp_add_agent_parameter @profile_id = 1, @parameter_name = N'-PublisherFailoverPartner', @parameter_value = N'<Failover Partner Name>'; -- Setting the -PublisherFailoverPartner parameter in the default Merge Agent profile (profile 6). -- Execute sp_add_agent_parameter in the context of the distribution database. exec sp_add_agent_parameter @profile_id = 6, @parameter_name = N'-PublisherFailoverPartner', @parameter_value = N'<Failover Partner Name>';Добавьте основную и зеркальную базы данных в Монитор репликации. Дополнительные сведения см. в статье Добавление и удаление издателей в мониторе репликации.
Поддержка зеркальной базы данных публикаций
Обслуживание зеркальной базы данных публикации существенно не отличается от обслуживания незеркальной базы данных, со следующими оговорками.
Администрирование и наблюдение должны выполняться на активном сервере. В SQL Server Management Studio публикации отображаются в папке локальных публикаций только для активного сервера. Например, если выполнить переключение после отказа на зеркальный сервер, публикации отображаются на зеркальном сервере и больше не отображаются на основном сервере. Если база данных переключается на зеркальную копию, вам может потребоваться вручную обновить Management Studio и Replication Monitor, чтобы изменение отобразилось.
Монитор репликации отображает узлы издателя в дереве объектов как для основного, так и для зеркального сервера. Если активным является основной сервер, сведения о публикации отображаются в мониторе репликации только на главном узле.
Если активным является зеркальный сервер:
если возникла ошибка агента, эта ошибка показывается только в основном узле и не отображается в зеркальном узле;
если основной сервер недоступен, то в основном и зеркальном узлах отображаются идентичные списки публикаций. Мониторинг следует выполнять для публикаций в зеркальном узле.
Если для администрирования репликации на зеркале используются хранимые процедуры или объекты RMO, то для случаев, когда указывается имя издателя, необходимо указать имя экземпляра, на котором база данных активирована для репликации. Чтобы определить соответствующее имя, воспользуйтесь функцией publishingservername.
Когда база данных публикации зеркально отображается, метаданные репликации, хранимые в зеркальной базе данных, идентичны метаданным, хранимым в основной базе данных. Поэтому для баз данных публикации, активированных для репликации на основном сервере, имя экземпляра издателя, хранимое в системных таблицах на зеркале, является именем основного сервера, а не именем зеркала. Если в результате сбоя база данных публикации переходит на зеркальный сервер, это повлияет на настройку и обслуживание репликации. Например, если после аварийного переключения вы настраиваете репликацию с помощью хранимых процедур на зеркальном сервере и хотите добавить подписку на извлечение к базе данных публикации, которая была включена на основном сервере, необходимо указать имя основного сервера, а не зеркального, для параметра @publisher хранимой процедуры sp_addpullsubscription или sp_addmergepullsubscription.
Если база данных публикаций включена на зеркале после отработки отказа с переключением на зеркало, имя экземпляра издателя, хранимое в системных таблицах, представляет собой имя зеркала; в этом случае для параметра @publisher следует использовать имя зеркала.
Примечание.
В некоторых случаях, например в процедуре sp_addpublication, параметр @publisher поддерживается только для издателей, не относящихся к SQL Server, и не влияет на зеркальное отображение базы данных SQL Server.
Чтобы синхронизировать подписку в Management Studio после переключения при отказе: синхронизируйте подписки с запросом на стороне подписчика; и синхронизируйте подписки с отправкой на стороне активного издателя.
Поведение репликации, когда зеркальное отображение удалено
Если зеркальное отображение базы данных удаляется из опубликованной базы данных, необходимо учитывать следующие моменты.
Если база данных публикации на основном сервере больше не зеркалируется, репликация по-прежнему работает без изменений с исходным основным сервером.
Если опубликованная база данных в результате сбоя переключается с основной на зеркальную базу данных и если связи зеркального отображения затем отключаются или удаляются, агенты репликации не будут функционировать в зеркальной базе данных. Если основной сервер безвозвратно утерян, отключите, а затем перенастройте репликацию, указав зеркальный сервер в качестве издателя.
Если зеркальное отображение базы данных полностью удаляется, зеркальная база данных находится в состоянии восстановления и должна быть восстановлена, чтобы стать функционирующей. Поведение восстановленной базы данных в отношении репликации зависит от того, задан ли параметр KEEP_REPLICATION. Этот параметр принудительно запускает операцию восстановления, чтобы сохранить настройки репликации при восстановлении опубликованной базы данных на сервер, отличный от того, на котором была создана резервная копия. Используйте параметр KEEP_REPLICATION, только когда недоступна другая база данных публикации. Этот параметр не поддерживается, если другая база данных публикации остается неповрежденной и участвует в репликации. Дополнительные сведения о KEEP_REPLICATION см. в разделе RESTORE (Transact-SQL).
Поведение агента чтения журнала
В следующей таблице описывается поведение агента чтения журнала для различных режимов зеркального отображения базы данных.
| Режим работы | Поведение агента чтения журнала при недоступности зеркала |
|---|---|
| Безопасный режим с автоматическим переключением при отказе | Если зеркало недоступно, агент чтения журнала передает команды в базу данных распространителя. Основной сервер не может переключиться на зеркальную копию, пока зеркальный сервер снова не будет в сети и не получит все транзакции от основного сервера. |
| Высокопроизводительный режим | Если зеркало недоступно, основная база данных работает без зеркалирования (то есть не зеркалируется). Однако агент чтения журнала реплицирует только те транзакции, которые записаны в зеркальную базу данных. Если выполняется принудительное обслуживание и зеркальный сервер берет на себя роль основного сервера, агент чтения журнала начнет работать с зеркальным сервером и начнет считывать новые транзакции. Следует учитывать, что задержка репликации увеличится, если зеркальная база данных отстает от основной базы данных. |
| Режим повышенной безопасности без автоматического переключения при отказе | Гарантируется, что все зафиксированные транзакции будут записаны на диск зеркального сервера. Агент чтения журнала реплицирует только те транзакции, которые надежно зафиксированы на зеркальном сервере. Если зеркало недоступно, основной сервер запрещает дальнейшую активность в базе данных. Поэтому агент чтения журнала не имеет транзакций для репликации. |
См. также
Репликация SQL Server
Доставка журналов и репликация (SQL Server)