Поделиться через


Как настроить одноранговую репликацию транзакций (среда SQL Server Management Studio)

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

Создание топологии одноранговой репликации

В следующих шагах дается общее представление о создании топологии из трех узлов. Сервер A, Сервер B и Сервер C. Каждый шаг подробно описан в данном разделе.

  1. Убедитесь в том, что агент SQL Server запущен на каждом узле, а агент чтения журнала и агент распространителя запущены после настройки топологии. Сведения об агенте SQL Server см. в разделе Запуск агента SQL Server. Сведения о запуске и остановке агентов см. в разделе Как запустить и остановить агент репликации (среда SQL Server Management Studio).

  2. Настройте распространение на Сервере A, Сервере B и Сервере C.

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

  3. Создайте публикацию на Сервере A, используя мастер создания публикаций.

  4. Включите публикацию для одноранговой репликации, используя диалоговое окно Свойства публикации — <публикация>.

  5. Инициализируйте схему и данные на Сервере B и Сервере C вручную или при помощи восстановления базы данных с Сервера A на Сервер B и Сервер C. На всех узлах схема должна быть одинаковой.

  6. Добавьте в топологию Сервер B и Сервер C при помощи мастера настройки одноранговой топологии. При добавлении серверов на каждом сервере создается публикация и подписки на публикации, находящиеся на других серверах топологии.

    Если в опубликованных таблицах есть столбцы идентификаторов, нужно повторно задать диапазоны идентификаторов для таблиц на Сервере B и Сервере C.

Настройка распространения для каждого узла

  1. В среде Среда SQL Server Management Studio подключитесь к Серверу А. Повторите этот процесс настройки для Сервера B и Сервера C.

  2. Раскройте узел сервера, щелкнув правой кнопкой мыши папку Репликация, а затем щелкните мышью Настройка распространения.

  3. На странице Распространитель мастера настройки распространения выберите распространитель.

    Для использования локального распространителя выберите '<имя_сервера>' будет выступать в качестве своего собственного распространителя; SQL Server создаст базу данных распространителя и журнал. Для использования удаленного распространителя выберите Использовать следующий сервер в качестве распространителя, а затем выберите сервер. Сервер должен быть сконфигурирован в качестве распространителя, а издатель должен быть включен для использования распространителя. Дополнительные сведения см. в разделе Как включить удаленный издатель на распространителе (среда SQL Server Management Studio).

    Если выбран удаленный распространитель, необходимо ввести пароль на странице Административный пароль для соединений, созданных между Сервером A и распространителем. Этот пароль должен совпадать с паролем, введенным при определении Сервера A в качестве издателя на удаленном распространителе.

  4. На странице Папка моментальных снимков определите папку моментальных снимков.

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

  5. На странице База данных распространителя укажите имя базы данных распространителя.

    В базе данных распространителя хранятся транзакции, метаданные и данные журнала.

  6. При необходимости на странице Издатели включите других издателей на использование Сервера A в качестве удаленного распространителя.

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

  7. При необходимости на странице действий мастера создайте сценарий для установки настроек. Дополнительные сведения см. в разделе Создание сценариев репликации.

Создание публикации на первом узле

  1. В среде Среда SQL Server Management Studio подключитесь к Серверу A и раскройте узел сервера.

  2. Раскройте папку Репликация, а затем щелкните правой кнопкой мыши папку Локальные публикации.

  3. Щелкните Создать публикацию.

  4. На странице База данных публикации мастера создания публикации выберите базу данных, которую хотите опубликовать.

  5. На странице Тип публикации выберите Публикация транзакций.

  6. На странице Статьи выберите объекты базы данных, которые нужно опубликовать.

    Щелкните мышью Свойства статьи для просмотра и изменения свойств статьи. Следующие свойства нельзя изменять:

    • Имя целевого объекта

    • Владелец целевого объекта

    • Параметрам Формат доставки <ACTION> (где ACTION — это инструкции INSERT, UPDATE или DELETE) нельзя присвоить значения инструкция <ACTION> или инструкция <ACTION> без списка столбцов.

  7. Фильтры нельзя определить на странице Фильтрация строк таблицы, поскольку фильтрация одноранговых публикаций не поддерживается.

  8. На странице Агент моментальных снимков снимите флажок Создать моментальный снимок немедленно.

  9. На странице Безопасность агента укажите учетные данные для агента моментальных снимков и агента чтения журнала.

    Дополнительные сведения о разрешениях, необходимых для каждого агента, см. в разделах Модель безопасности агента репликации и Рекомендации по защите репликации.

  10. На странице Действия мастера при необходимости можно создать сценарий публикации. Дополнительные сведения см. в разделе Создание сценариев репликации.

  11. На странице Завершение работы мастера укажите имя публикации. Имена публикаций должны быть одинаковыми во всей топологии, поскольку мастер настройки одноранговой топологии использует их при создании публикации на каждом узле.

Включение для публикации одноранговой репликации

  1. Раскройте папку Репликации на Сервере A, а затем раскройте папку Локальные публикации.

  2. Щелкните правой кнопкой мыши созданную публикацию и затем щелкните Свойства.

  3. В диалоговом окне Свойства публикации — <публикация> на странице Параметры подписки выберите значение True для свойства Разрешать одноранговые подписки.

  4. Нажмите кнопку ОК.

Инициализация схемы и данных на каждом узле

  • Инициализируйте Сервер B и Сервер C одним из следующих способов.

    • Вручную скопируйте схему и данные с Сервера A на Сервер B и Сервер C, используя службы Integration Services (SSIS), сценарии или другие методы. Перед настройкой этих серверов в качестве одноранговых узлов убедитесь в том, что схема и данные на Сервере B и Сервере C идентичны схеме и данным Сервера A.

    • Перед настройкой топологии на каждом узле должны присутствовать исходные данные. Для инициализации данных для публикации на каждом узле топологии используются возможности резервного копирования и восстановления SQL Server. Резервное копирование необходимо выполнить на первом настраиваемом узле, в данном случае это Сервер А. Резервное копирование необходимо выполнить после того, как на Сервере А будет создана и включена одноранговая репликация. В этом разделе предполагается, что на новых узлах (перед тем, как они будут добавлены) не выполняются никакие действия, поэтому одну резервную копию можно использовать для инициализации всех узлов.

      Если на новых узлах (перед тем, как они будут добавлены) выполняются какие-либо действия, необходимо создать новую резервную копию после добавления нового узла и синхронизировать его по крайней мере один раз с Сервером А. Тем самым обеспечивается наличие в резервной копии с Сервера А метаданных обо всех других узлах. Например, если добавляется Сервер B и Сервер C, на которых происходят какие-либо действия, необходимо выполнить следующее: инициализировать Сервер B с помощью резервной копии с Сервера А, настроить и синхронизировать Сервер B, выполнить новое резервное копирование на Сервере А, инициализировать Сервер C с помощью новой резервной копии и настроить и синхронизировать Сервер C.

      Дополнительные сведения о резервном копировании и восстановлении баз данных см. в разделе Резервное копирование и восстановление баз данных в SQL Server.

      Важное примечаниеВажно!

      При восстановлении базы данных не указывайте параметр KEEP_REPLICATION (в Transact-SQL) или параметр Сохранить настройки репликации (в среде Среда SQL Server Management Studio). Репликация произведет настройку базы данных соответствующим образом при запуске мастера настройки одноранговой топологии.

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

Настройка топологии

  1. Щелкните правой кнопкой мыши публикацию, созданную на Сервере A, затем выберите пункт Настройка одноранговой топологии. Для отображения параметра Настройка одноранговой топологии, возможно, потребуется обновить узел публикаций.

  2. На странице Публикация в мастере настройки одноранговой топологии будет выбрана публикация, созданная на Сервере A.

  3. На странице Настройка топологии добавьте Сервер B, а затем повторите это действие для Сервера C.

    1. Щелкните правой кнопкой мыши область конструктора и выберите команду Добавить новый одноранговый узел.

    2. В диалоговом окне Соединение с сервером подключитесь к Серверу B.

    3. В диалоговом окне Добавление нового однорангового узла выберите базу данных публикации, а затем команду Подключиться ко всем отображенным узлам. Если включено обнаружение конфликтов (по умолчанию), задайте уникальное значение для каждого узла в поле Идентификатор однорангового узла. Это значение не должно использоваться в топологии. Список использованных идентификаторов запросите в системной таблице Mspeer_originatorid_history. Дополнительные сведения об обнаружении конфликтов см. в разделе Обнаружение конфликтов в одноранговой репликации.

    4. Нажмите кнопку ОК. Теперь Сервер B отображается в области конструктора, соединенный с Сервером А. Кода добавится Сервер C, все узлы будут соединены друг с другом.

  4. На странице Безопасность агента чтения журнала укажите учетные данные для агента чтения журнала на каждом узле.

    Дополнительные сведения о разрешениях, необходимых для агента чтения журнала, см. в разделах Модель безопасности агента репликации и Рекомендации по защите репликации.

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

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

    Дополнительные сведения о разрешениях, необходимых для агента распространителя, см. в разделах Модель безопасности агента репликации и Рекомендации по защите репликации.

  6. На странице Инициализация нового узла выберите Равноправная база данных создана вручную, либо Восстановлена резервная копия исходной базы данных публикации, которая не изменялась с тех пор, как была сделана резервная копия.

  7. Завершите работу мастера. На странице Построение одноранговой топологии может появиться предупреждение о том, что агент чтения журнала или публикация для Сервера A уже существует. Это предупреждение имеет информационный характер и не требует выполнения каких-либо действий.

  8. Если в опубликованных таблицах есть столбцы идентификаторов, то после восстановления диапазон идентификаторов, назначенный для таблиц на Сервере A, будет также использоваться в таблицах на Сервере B и Сервере C. Необходимо использовать процедуру DBCC CHECKIDENT для повторной установки начальных значений таблиц на Сервере B и Сервере C, чтобы обеспечить использование разных диапазонов для каждого сервера.

    Дополнительные сведения об управлении диапазонами идентификаторов см. в подразделе «Присвоение диапазонов для ручного управления диапазонами идентификаторов» раздела Репликация столбцов идентификаторов.

Добавление к существующей топологии узла, на котором выполняется SQL Server 2008 или более поздняя версия

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

  1. Настройте распространение на Сервере D.

  2. Инициализируйте схему и данные на Сервере D при помощи восстановления базы данных с Сервера A на Сервер D.

  3. Добавьте в топологию Сервер D при помощи мастера настройки одноранговой топологии.

Настройка распространения для нового узла

  • См. процедуру «Настройка распространения для каждого узла» выше в этом разделе.

Инициализация нового узла

  • Восстановите на Сервере D последнюю резервную копию базы данных публикаций с Сервера A. Также можно использовать резервную копию с Сервера B или Сервера C, однако этот сервер и база данных должны быть выбраны на странице Публикация мастера настройки одноранговой топологии при добавлении Сервера D.

Добавление узла к топологии

  1. Щелкните правой кнопкой мыши публикацию, созданную на Сервере A, затем выберите пункт Настройка одноранговой топологии.

  2. На странице Публикация в мастере настройки одноранговой топологии будет выбрана публикация, созданная на Сервере A.

  3. На странице Настройка топологии в области конструктора отобразится Сервер А, Сервер B и Сервер C

    1. Щелкните правой кнопкой мыши область конструктора, а затем щелкните Добавление нового однорангового узла.

    2. В диалоговом окне Соединение с сервером подключитесь к Серверу D.

    3. В диалоговом окне Добавление нового однорангового узла выберите базу данных публикации.

    4. Если нужно создать соединения между всеми четырьмя узлами, установите флажок Подключиться ко всем отображенным узлам. Если нужно вручную добавить соединения только между некоторыми узлами, убедитесь, что этот флажок снят.

    5. Нажмите кнопку ОК.

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

  4. Завершить работу мастера настройки одноранговой топологии согласно описанию в процедуре «Настроить топологию», приведенной выше в разделе.

Удаление узла из топологии

Удаление узла из топологии

  1. На странице Настройка топологии мастера настройки одноранговой топологии щелкните узел правой кнопкой мыши и выберите Удалить одноранговый узел.

  2. Завершить работу мастера настройки одноранговой топологии согласно описанию в процедуре «Настроить топологию», приведенной выше в разделе.

Удаление соединения между двумя узлами

Удаление соединения между двумя узлами

  1. На странице Настройка топологии мастера настройки одноранговой топологии щелкните правой кнопкой мыши узел или область конструктора и выберите Удалить одноранговое соединение.

  2. Завершить работу мастера настройки одноранговой топологии согласно описанию в процедуре «Настроить топологию», приведенной выше в разделе.

Скрытие узла в топологии

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

Скрытие узла в топологии

  1. На странице Настройка топологии мастера настройки одноранговой топологии щелкните узел правой кнопкой мыши и выберите команду Выбрать узлы для просмотра.

  2. В диалоговом окне Добавить/удалить одноранговые узлы выберите нужные узлы.

  3. Нажмите кнопку ОК.

Добавление узла SQL Server 2005 к существующей топологии

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

  • На первом шаге Сервер D частично подключается к топологии с помощью создания подписок между Сервером А и Сервером D. Это позволяет продолжить изменение настроек Сервера A, Сервера B и Сервера C. Изменения настроек Сервера D может начаться только после создания подписок между Сервером A и Сервером D. Изменения на Сервере B и Сервере C реплицируются на Сервер D через Сервер A.

  • На втором шаге происходит окончательное подключение Сервера D к топологии при помощи создания подписок между Сервером B и Сервером D, а также между Сервером C и Сервером D. На этом шаге необходимо приостановить систему.

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

Процедуры первого шага

Настройка распространения для нового узла

  • См. процедуру «Настройка распространения для каждого узла» выше в этом разделе.

Инициализация нового узла

  • Восстановите на Сервере D последнюю резервную копию базы данных публикаций с Сервера A. Также можно использовать резервную копию с Сервера B или Сервера C, но этот сервер и база данных должны быть выбраны на странице Публикация мастера настройки одноранговой топологии при добавлении Сервера D.

Добавление нового узла в топологию (создания подписок между Сервером А и Сервером D)

  1. Щелкните правой кнопкой мыши публикацию, созданную на Сервере A, затем выберите пункт Настройка одноранговой топологии.

  2. На странице Публикация в мастере настройки одноранговой топологии будет выбрана публикация, созданная на Сервере A.

  3. На странице Настройка топологии в области конструктора отобразится Сервер А, Сервер B и Сервер C.

    1. Щелкните правой кнопкой мыши область конструктора, а затем щелкните Добавление нового однорангового узла.

    2. В диалоговом окне Соединение с сервером подключитесь к Серверу D.

    3. В диалоговом окне Добавление нового однорангового узла выберите базу данных публикации.

    4. Нажмите кнопку ОК.

    5. Добавьте соединение между Сервером A и Сервером D. Щелкните правой кнопкой мыши Сервер A, выберите Добавить новое одноранговое соединение и перетащите стрелку соединения к Серверу D.

  4. На странице Безопасность агента чтения журнала укажите учетные данные для агента чтения журнала на Сервере D.

  5. На странице Безопасность агента распространителя укажите учетные данные для агентов распространителей на Сервере A и Сервере D.

  6. На странице Инициализация нового узла выберите Восстановлена резервная копия исходной базы данных публикации, которая не изменялась с тех пор, как была сделана резервная копия.

    Если будет выбран этот параметр, то все изменения, не вошедшие в резервную копию с Сервера A, будут добавлены в восстановленную базу данных на Сервере D. При включении публикации для одноранговой репликации свойству публикации allow_initialize_from_backup присваивается значение True. Репликация немедленно начинает отслеживать изменения в базе данных публикации на Сервере A, поэтому другие одноранговые узлы после восстановления будут содержать все последние изменения.

  7. Нажмите кнопку Обзор для выбора используемой резервной копии, и репликация прочитает номер LSN из резервной копии. Все изменения в базе данных публикации на Сервере A, которые имеют более высокий номер LSN, будут переданы на Сервер D.

  8. Завершите работу мастера.

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

    1. Выполните хранимую процедуру sp_requestpeerresponse на Сервере D и получите возвращаемый параметр @request_id.

    2. По умолчанию агент распространителя работает непрерывно, поэтому маркеры отправляются на все узлы автоматически. Если агент распространителя не выполняется в непрерывном режиме, запустите его. Дополнительные сведения см. в разделе Основные понятия об исполняемых объектах агента репликации или Как запустить и остановить агент репликации (среда SQL Server Management Studio).

    3. Выполните процедуру sp_helppeerresponses, указав значение @request_id, полученное в шаге b. Подождите, пока все узлы сообщат о получении однорангового запроса.

    4. Используйте DBCC CHECKIDENT для переустановки идентификаторов всех таблиц на Сервере D для гарантии того, что используется подходящий диапазон.

Процедуры второго шага

Приостановка топологии

  1. Остановите все действия со всеми опубликованными таблицами одноранговой топологии.

  2. Выполните хранимую процедуру sp_requestpeerresponse в базе данных на Сервере A, Сервере B, Сервере C и Сервере D и получите возвращаемый параметр @request_id.

  3. По умолчанию агент распространителя работает непрерывно, поэтому маркеры отправляются на все узлы автоматически. Если агент распространителя не выполняется в непрерывном режиме, запустите его. Дополнительные сведения см. в разделе Основные понятия об исполняемых объектах агента репликации или Как запустить и остановить агент репликации (среда SQL Server Management Studio).

  4. Выполните хранимую процедуру sp_helppeerresponses, указав значение @request_id, полученное на шаге 2. Подождите, пока все узлы сообщат о получении однорангового запроса.

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

Создание дополнительных подписок на новом узле

  1. Щелкните правой кнопкой мыши публикацию, созданную на Сервере A, затем выберите пункт Настройка одноранговой топологии.

  2. На странице Публикация в мастере настройки одноранговой топологии будет выбрана публикация, созданная на Сервере A.

  3. На странице Настройка топологии в области конструктора появится Сервер А, Сервер B, Сервер C и Сервер D.

    1. Щелкните правой кнопкой мыши Сервер B, выберите Добавить новое одноранговое соединение и перетащите стрелку соединения к Серверу D.

    2. Щелкните правой кнопкой мыши Сервер C, выберите Добавить новое одноранговое соединение и перетащите стрелку соединения к Серверу D.

  4. На странице Безопасность агента чтения журнала укажите учетные данные для агента чтения журнала на Сервере B, Сервере C и Сервере D.

  5. На странице Безопасность агента распространителя укажите учетные данные для агентов распространителей на Сервере A, Сервере B, Сервере C и Сервере D.

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

  7. Выполните все инструкции мастера и запустите систему.