Как настроить одноранговую репликацию транзакций (среда SQL Server Management Studio)
В этом разделе описано создание трехузловой топологии одноранговой репликации транзакций и добавление узла к существующей топологии. Приведенное ниже описание шагов предоставляет общий обзор. Более подробное описание каждого шага содержится в этом разделе:
- Начальная топология состоит из Сервера A, Сервера B и Сервера C. Во время создания топологии необходимо, чтобы ни одна из одноранговых баз данных не была активной. Для создания топологии:
- Настройте распространение на Сервере A, Сервере B и Сервере C.
Можно воспользоваться локальным или удаленным распространителем. Если используется удаленный распространитель, то рекомендуется не применять один и тот же удаленный распространитель для всех узлов, так как такое применение приводит к возникновению потенциальной точки сбоя. Дополнительные сведения о распространителе см. в разделе Настройка распространителя. - Создайте публикацию на Сервере A, используя мастер создания публикации.
- Включите публикацию для одноранговой репликации, используя диалоговое окно Свойства публикации — <публикация>.
- Инициализируйте схему и данные на Сервере B и Сервере C вручную или при помощи восстановления базы данных с Сервера A на Сервер B и Сервер C. На всех узлах схема должна быть одинаковой.
- Добавьте в топологию Сервер B и Сервер C при помощи мастера настройки одноранговой топологии. При добавлении серверов на каждом сервере создается публикация и подписки на публикации, находящиеся на других серверах топологии.
Если в опубликованных таблицах есть столбцы идентификаторов, нужно повторно задать диапазоны идентификаторов для таблиц на Сервере B и Сервере C.
- Настройте распространение на Сервере A, Сервере B и Сервере C.
- После создания топологии добавляется Сервер D. Предполагается, что для добавления узла к существующей топологии она должна быть активной и время простоя должно быть минимизировано. Для добавления узла к существующей топологии выполните следующие действия:
- Настройте распространение на Сервере D.
- Инициализируйте схему и данные на Сервере D при помощи восстановления базы данных с Сервера A на Сервер D.
- Добавьте в топологию Сервер D при помощи мастера настройки одноранговой топологии. В этом случае при добавлении Сервера D создается публикация на Сервере D, а также создаются подписки между Сервером A и Сервером D.
Если в опубликованных таблицах есть столбцы идентификаторов, нужно повторно задать диапазоны идентификаторов для таблиц на Сервере D.
На данный момент Сервер D может отправлять и принимать изменения от всех серверов, но все изменения должны пройти через Сервер A, связанный с Сервером B и Сервером C. Если требуется добавить подписки между Сервером D и другими узлами, перейдите к шагу 4. Добавление подписок не обязательно, но оно обеспечивает большую отказоустойчивость, чем конфигурация с одним соединением между Сервером A и Сервером D. - Приостановите топологию, что приведет к остановке всех изменений и синхронизации всех серверов.
- Добавьте подписки между Сервером D и другими узлами при помощи мастера настройки одноранговой топологии.
Создание топологии одноранговой репликации
Следующий набор процедур показывает, как создать одноранговую топологию с тремя узлами.
Примечание. |
---|
Убедитесь в том, что агент Microsoft SQL Server запущен на каждом узле и что агент чтения журнала и агент распространителя запущены после настройки топологии. Сведения об агенте SQL Server см. в разделе Запуск агента SQL Server. Сведения о запуске и остановке агентов см. в разделе Как запустить и остановить агент репликации (среда SQL Server Management Studio). |
Настройка распространения для каждого узла
В Microsoft SQL Server Management Studio подключитесь к Серверу A (этот процесс настройки необходимо повторить на Сервере B и Сервере C).
Раскройте узел сервера, щелкнув правой кнопкой мыши папку Репликация, а затем щелкните мышью Настройка распространения.
На странице Распространитель мастера настройки распространения выберите распространитель.
Для использования локального распространителя выберите '<имя_сервера>' будет выступать в качестве своего собственного распространителя; SQL Server создаст базу данных распространителя и журнал. Для использования удаленного распространителя выберите Использовать следующий сервер в качестве распространителя, а затем выберите сервер. Сервер должен быть сконфигурирован в качестве распространителя, а издатель должен быть включен для использования распространителя. Дополнительные сведения см. в разделе Как включить удаленный издатель на распространителе (среда SQL Server Management Studio).
Если выбран удаленный распространитель, необходимо ввести пароль на странице Административный пароль для соединений, созданных между Сервером A и распространителем. Этот пароль должен совпадать с паролем, введенным при определении Сервера A в качестве издателя на удаленном распространителе.
На странице Папка моментальных снимков определите папку моментальных снимков.
Папка моментальных снимков — это просто каталог, назначенный общим ресурсом. Агенты, считывающие и записывающие данные в эту папку, должны иметь права доступа к ней. В этом каталоге хранятся объекты, необходимые для репликации на первом узле, он не используется для одноранговой репликации на других узлах, но этот каталог необходим для настройки распространителя. Дополнительные сведения о надлежащей защите папок см. в разделе Защита папки моментальных снимков.
На странице База данных распространителя укажите имя базы данных распространителя.
В базе данных распространителя хранятся транзакции, метаданные и данные журнала.
При необходимости на странице Издатели включите других издателей на использование Сервера A в качестве удаленного распространителя.
Если другие издатели имеют разрешение на использование Сервера A в качестве удаленного распространителя, следует ввести пароль на странице Пароль распространителя для созданных соединений между издателем и распространителем.
При необходимости на странице действий мастера создайте сценарий для установки настроек. Дополнительные сведения см. в разделе Создание сценариев репликации.
Создание публикации на первом узле
Подключитесь к Серверу A в SQL Server Management Studio, а затем раскройте узел сервера.
Раскройте папку Репликация, а затем щелкните правой кнопкой мыши папку Локальные публикации.
Щелкните Созадть публикацию.
На странице База данных публикации мастера создания публикации выберите базу данных, которую хотите опубликовать.
На странице Тип публикации выберите Публикация транзакций.
На странице Статьи выберите объекты базы данных, которые нужно опубликовать.
Щелкните мышью Свойства статьи для просмотра и изменения свойств статьи. Следующие свойства нельзя изменять:
- Имя целевого объекта
- Владелец целевого объекта
- Параметрам Формат доставки <ACTION> (где ACTION — это инструкции INSERT, UPDATE или DELETE) нельзя присвоить значения инструкция <ACTION> или инструкция <ACTION> без списка столбцов.
Фильтры нельзя определить на странице Фильтрация строк таблицы; фильтрация одноранговых публикаций не поддерживается.
На странице Агент моментальных снимков снимите флажок Создать моментальный снимок немедленно.
На странице Безопасность агента укажите учетные данные для агента моментальных снимков и агента чтения журнала.
Дополнительные сведения по разрешениям, необходимым для каждого агента, см. в разделе Модель безопасности агента репликации и Рекомендации по защите репликации.
На странице Действия мастера при необходимости можно создать сценарий публикации. Дополнительные сведения см. в разделе Создание сценариев репликации.
На странице Завершение работы мастера укажите имя публикации. Имена публикаций должны быть одинаковыми во всей топологии, поэтому мастер создания одноранговой топологии использует это имя при создании публикации на каждом узле.
Включение для публикации одноранговой репликации
Раскройте папку Репликации на Сервере A, а затем раскройте папку Локальные публикации.
Щелкните правой кнопкой мыши созданную публикацию и затем щелкните Свойства.
В диалоговом окне Свойства публикации — <публикация> на странице Параметры подписки выберите значение True для свойства Разрешать одноранговые подписки.
Нажмите кнопку ОК.
Инициализация схемы и данных на каждом узле
Одноуровневые узлы могут быть инициализированы одним из следующих способов:
- Вручную. Скопируйте схему и данные с Сервера A на Сервер B и Сервер C, используя Integration Services (SSIS), сценарии или другие методы. Перед настройкой данных серверов в качестве одноранговых узлов убедитесь в том, что схема и данные на Сервере B и Сервере C идентичны схеме и данным Сервера A.
- При помощи восстановления резервной копии базы данных публикации с Сервера A на Сервер B и Сервер C. Дополнительные сведения о резервном копировании и восстановлении баз данных см. в разделе Резервное копирование и восстановление баз данных в SQL Server.
Важно! При восстановлении базы данных не определяйте параметр KEEP_REPLICATION (для Transact-SQL) или параметр Сохранить настройки репликации (для SQL Server Management Studio). Репликация произведет настройку базы данных соответствующим образом при запуске мастера настройки одноранговой топологии.
Добавление узлов к топологии во время начальной настройки
Щелкните правой кнопкой мыши публикацию, созданную на Сервере A, затем выберите пункт Настройка одноранговой топологии. Возможно, потребуется обновить узел публикаций для отображения параметра Настройка одноранговой топологии.
На странице Публикация в мастере настройки одноранговой топологии будет выбрана публикация, созданная на Сервере A.
На странице Узлы добавьте Сервер B, а затем повторите это действие для Сервера C:
- Щелкните Добавить SQL Server.
- Подключитесь к Серверу B в окне Соединение с сервером. Теперь Сервер B отображается в столбце Одноранговый экземпляр сервера.
- Выберите базу данных на Сервере B в меню Одноранговая база данных.
Примечание. Сервер A также будет отображен, но он уже настроен, поэтому не устанавливайте флажок для Сервера A. На странице Безопасность агента чтения журнала укажите учетные данные для агента чтения журнала на каждом узле.
Дополнительные сведения по разрешениям, необходимым для агента чтения журнала, см. в разделе Модель безопасности агента репликации и Рекомендации по защите репликации.
На странице Безопасность агента распространителя укажите учетные данные для агентов распространителей, обслуживающих подписки, на каждом узле.
Мастер настройки одноранговой топологии создает принудительные подписки (агент распространителя выполняется на распространителе) с независимым агентом для каждой подписки. В трехузловой топологии каждый узел будет иметь подписки для двух остальных узлов, поэтому на каждом распространителе будет запущено по два агента распространителя.
Дополнительные сведения по разрешениям, необходимым для агента распространителя, см. в разделе Модель безопасности агента репликации и Рекомендации по защите репликации.
На странице Инициализация нового узла выберите Равноправная база данных создана вручную либо Восстановлена резервная копия исходной базы данных публикации, которая не изменялась с тех пор, как была сделана резервная копия.
Завершите работу мастера. На странице Построение одноранговой топологии появляется предупреждение о том, что агент чтения журнала для Сервера A уже существует. Это предупреждение имеет информационный характер и не требует выполнения каких-либо действий.
Если в опубликованных таблицах есть столбцы идентификаторов, то после восстановления диапазон идентификаторов, назначенный для таблиц на Сервере A, будет также использоваться в таблицах на Сервере B и Сервере C. Необходимо использовать DBCC CHECKIDENT для переустановки идентификаторов таблиц на Сервере B и Сервере C, чтобы обеспечить использование разных диапазонов для каждого сервера.
Дополнительные сведения об управлении диапазонами идентификаторов см. в подразделе «Присвоение диапазонов для ручного управления диапазонами идентификаторов» раздела Репликация столбцов идентификаторов.
Добавление узла к существующей топологии
Следующие рекомендации «Как…» описывают шаги добавления нового узла к существующей топологии:
- На первом шаге, описанном в трех первых рекомендациях «Как…», происходит частичное подключение Сервера D к топологии при помощи создания подписок между Сервером A и Сервером D. Это позволяет продолжить изменение настроек Сервера A, Сервера B и Сервера C. Изменения настроек Сервера D может начаться только после создания подписок между Сервером A и Сервером D.
- На втором шаге, описанном в двух последних рекомендациях «Как…», происходит окончательное подключение Сервера D к топологии при помощи создания подписок между Сервером B и Сервером D, а также между Сервером C и Сервером D. Для этого шага необходимо приостановить систему.
Второй шаг необязателен, но он обеспечивает большую отказоустойчивость, чем конфигурация с одним соединением между Сервером A и Сервером D.
Примечание. |
---|
Убедитесь в том, что агент SQL Server запущен на каждом узле и что агент чтения журнала и агент распространителя запущены после настройки топологии. Сведения о запуске агента SQL Server см. в разделе Запуск агента SQL Server. Сведения о запуске агентов репликации см. в разделе Как запустить и остановить агент репликации (среда SQL Server Management Studio). |
Настройка распространения для нового узла
- Обратитесь к процедуре предыдущего раздела.
Инициализация нового узла
- Восстановите на Сервере D последнюю резервную копию базы данных публикаций с Сервера A. Также можно использовать резервную копию с Сервера B или Сервера C, но этот сервер и база данных должны быть выбраны на странице Публикация мастера настройки одноранговой топологии при добавлении Сервера D.
Добавление нового узла в топологию (создания подписок между Сервером А и Сервером D)
Щелкните правой кнопкой мыши публикацию, созданную на Сервере A, затем выберите пункт Настройка одноранговой топологии.
На странице Публикация в мастере настройки одноранговой топологии будет выбрана публикация, созданная на Сервере A.
На странице Узлы добавьте Сервер D:
- Щелкните Добавить SQL Server.
- Подключитесь к Серверу D в диалоговом окне Соединение с сервером. Теперь Сервер D отображается в столбце Одноранговый экземпляр сервера.
- Выберите базу данных на Сервере D из меню Одноранговая база данных.
Примечание. Сервер A также будет отображен, но он уже настроен, поэтому не устанавливайте флажок для Сервера A. На странице Безопасность агента чтения журнала укажите учетные данные для агента чтения журнала на Сервере D.
На странице Безопасность агента распространителя укажите учетные данные для агентов распространителей на Сервере A и Сервере D.
На странице Инициализация нового узла выберите Восстановлена резервная копия исходной базы данных публикации, которая не изменялась с тех пор, как была сделана резервная копия.
Если будет выбран этот параметр, то все изменения, не вошедшие в резервную копию с Сервера A, будут добавлены в восстановленную базу данных на Сервере D. При включении публикации для одноранговой репликации свойству публикации allow_initialize_from_backup присваивается значение True. Репликация немедленно начинает отслеживать изменения в базе данных публикации на Сервере A, поэтому другие одноранговые узлы после восстановления будут содержать все последние изменения.
Нажмите кнопку Обзор для выбора используемой резервной копии, и репликация прочитает номер LSN из резервной копии. Все изменения в базе данных публикации на Сервере A, которые имеют более высокий номер LSN, будут переданы на Сервер D.
Завершите работу мастера.
Если в опубликованных таблицах есть столбцы идентификаторов, то диапазон идентификаторов, назначенный для таблиц на Сервере A, также будет использоваться и на Сервере D. Если не будет приостановлена система и полностью подключены все узлы, то назначьте соответствующий диапазон для каждой таблицы на Сервере D при помощи следующей процедуры. Если будут полностью подключены все узлы, то можно назначить диапазоны после завершения приостановки:
- Выполните sp_requestpeerresponse (Transact-SQL) на Сервере D и получите возвращаемый параметр @request_id.
- По умолчанию агент распространителя работает непрерывно, поэтому маркеры отправляются на все узлы автоматически. Если агент распространителя не выполняется в непрерывном режиме, запустите его. Дополнительные сведения см. в разделе Programming Replication Agent Executables или Как запустить и остановить агент репликации (среда SQL Server Management Studio).
- Выполните sp_helppeerresponses (Transact-SQL), указав значение @request_id, полученное в шаге b. Подождите, пока все узлы сообщат о получении однорангового запроса.
- Используйте DBCC CHECKIDENT для переустановки идентификаторов всех таблиц на Сервере D для гарантии того, что используется подходящий диапазон.
Приостановка топологии
Остановите все действия со всеми опубликованными таблицами одноранговой топологии.
Выполните sp_requestpeerresponse (Transact-SQL) в базе данных на Сервере A, Сервере B, Сервере C и Сервере D и получите возвращаемый параметр @request_id.
По умолчанию агент распространителя работает непрерывно, поэтому маркеры отправляются на все узлы автоматически. Если агент распространителя не выполняется в непрерывном режиме, запустите его. Дополнительные сведения см. в разделе Programming Replication Agent Executables или Как запустить и остановить агент репликации (среда SQL Server Management Studio).
Выполните sp_helppeerresponses (Transact-SQL), используя значение @request_id, полученное на шаге 2. Дождитесь, пока все узлы не сообщат, что они получили одноранговый запрос.
При необходимости назначьте идентификаторам новые диапазоны. Теперь можно полностью подключить топологию, добавляя оставшиеся подписки.
Создание дополнительных подписок на новом узле
Щелкните правой кнопкой мыши публикацию, созданную на Сервере A, затем выберите пункт Настройка одноранговой топологии.
На странице Публикация в мастере настройки одноранговой топологии будет выбрана публикация, созданная на Сервере A.
На странице Узлы добавьте Сервер B, а затем повторите это действие для Сервера C и Сервера D:
- Щелкните Добавить SQL Server.
- Подключитесь к Серверу B в окне Соединение с сервером. Теперь Сервер B отображается в столбце Одноранговый экземпляр сервера.
- Выберите базу данных на Сервере B в меню Одноранговая база данных.
Примечание. Сервер A также будет отображен, но он уже настроен, поэтому не устанавливайте флажок для Сервера A. На странице Безопасность агента чтения журнала укажите учетные данные для агента чтения журнала на Сервере B, Сервере C и Сервере D.
На странице Безопасность агента распространителя укажите учетные данные для агентов распространителей на Сервере A, Сервере B, Сервере C и Сервере D.
На странице Инициализация нового узла выберите Равноправная база данных создана вручную либо Восстановлена резервная копия исходной базы данных публикации, которая не изменялась с тех пор, как была сделана резервная копия. Во всех узлах уже есть данные; выбор этого параметра дает гарантию того, что будут установлены правильные отношения подписок между всеми узлами.
Завершите работу мастера.
См. также
Основные понятия
Одноранговая репликация транзакций
Обзор агентов репликации