Руководство. Настройка репликации между двумя полностью подключенными серверами (репликация транзакций)

Применимо к:SQL Server

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

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

Новые знания

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

В этом учебнике рассматривается следующее.

  • создание издателя путем репликации транзакций;
  • создание подписчика для издателя транзакций;
  • проверка подписки и измерение задержки.

Необходимые компоненты

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

Для работы с этим учебником требуется SQL Server, среда SQL Server Management Studio (SSMS) и база данных AdventureWorks.

  • На сервере-издателе (источник) установите следующее:

    • Любой выпуск SQL Server, кроме SQL Server Express или SQL Server Compact. Эти выпуски не могут быть издателями репликации.
    • Образец базы данных AdventureWorks2022 . В целях повышения безопасности образцы баз данных по умолчанию не устанавливаются.
  • На сервере подписчика (назначение) установите любой выпуск SQL Server, кроме SQL Server Compact. SQL Server Compact не может быть подписчиком в транзакционных реплика tion.

  • Установите SQL Server Management Studio.

  • Установите выпуск SQL Server 2017 Developer Edition.

  • Скачайте пример базы данных AdventureWorks. См. дополнительные сведения о восстановлении базы данных в среде SSMS.

Примечание.

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

Предполагаемое время выполнения заданий этого учебника: 60 минут

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

В этом разделе описано, как создать публикацию транзакций с помощью SQL Server Management Studio для публикации отфильтрованного подмножества таблицы Product в образце AdventureWorks2022 базы данных. Также в список доступа к публикации (PAL) добавляется имя входа SQL Server, используемое агентом распространителя.

Создание публикации и определение статей

  1. Подключение издателю в SQL Server Management Studio, а затем разверните узел сервера.

  2. Щелкните правой кнопкой мыши элемент Агент SQL Server и выберите пункт Запустить. Прежде чем приступить к созданию публикации, необходимо запустить агент SQL Server. Если при выполнении этого действия агент не запускается автоматически, его нужно запустить вручную с помощью диспетчера конфигурации SQL Server.

  3. Разверните папку Репликация, щелкните правой кнопкой мыши папку Локальные публикации и выберите пункт Создать публикацию. После этого запустится мастер создания публикации:

    Selections for starting the New Publication Wizard

  4. На странице База данных публикации выберите AdventureWorks2022 и нажмите кнопку Далее.

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

  6. На странице Статьи разверните узел Таблицы и установите флажок Продукт. Затем разверните узел Продукт и снимите флажки ListPrice и StandardCost. Выберите Далее.

  7. На странице Фильтрация строк таблицы нажмите кнопку Добавить.

  8. В диалоговом окне Добавление фильтра выберите столбец SafetyStockLevel. Щелкните стрелку вправо, чтобы добавить столбец в предложение WHERE инструкции фильтра запроса. После этого вручную введите следующий модификатор предложения WHERE:

    WHERE [SafetyStockLevel] < 500  
    

  9. Выберите ОК, затем выберите Далее.

  10. Установите флажок Создать моментальный снимок немедленно и обеспечить доступ к нему для инициализации подписок и нажмите кнопку Далее:

  11. На странице Безопасность агентов снимите флажок Использовать настройки безопасности агента моментальных снимков.

    Выберите Настройки безопасности для агента моментальных снимков. Введите Publisher_Machine_Name>\repl_snapshot в поле учетной записи обработки, укажите< пароль для этой учетной записи и нажмите кнопку "ОК".

  12. Повторите предыдущий шаг, чтобы задать <Publisher_Machine_Name>\repl_logreader в качестве учетной записи процесса для агента чтения журналов. Затем выберите OK.

  13. На странице Завершение работы мастера введите AdvWorksProductTrans в поле Имя публикации и нажмите кнопку Готово:

  14. После создания публикации нажмите кнопку Закрыть, чтобы закрыть мастер.

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

Warning that the Snapshot Agent has failed to start

Просмотр состояния создания моментального снимка

  1. Подключение издателю в SQL Server Management Studio, разверните узел сервера и разверните узел сервера.Папка репликации.

  2. В папке Локальные публикации щелкните правой кнопкой мыши публикацию AdvWorksProductTrans и выберите пункт Просмотр состояния агента моментальных снимков:
    Command on the shortcut menu for viewing the Snapshot Agent status

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

Если агент SQL Server не был запущен при создании публикации, в сведениях о состоянии агента моментальных снимков для публикации будет указано, что он никогда не запускался. В таком случае выберите Запустить, чтобы запустить агент моментальных снимков:

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

Добавление имени входа агента распространения в список доступа к публикации

  1. Подключение издателю в SQL Server Management Studio, разверните узел сервера и разверните узел сервера.Папка репликации.

  2. В папке Локальные публикации щелкните правой кнопкой мыши публикацию AdvWorksProductTrans и выберите пункт Свойства. Откроется диалоговое окно Свойства публикации.

    a. Выберите страницу Список доступа к публикации и нажмите кнопку Добавить.
    b. В диалоговом окне "Добавление доступа к публикации" выберите <Publisher_Machine_Name>\repl_distribution и нажмите кнопку "ОК".

    Selections for adding a login to the publication access list

Дополнительные сведения см. статье Основные понятия программирования репликации.

Создание подписки на публикацию транзакций

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

Создание подписки

  1. Подключение издателю в SQL Server Management Studio, разверните узел сервера и разверните узел сервера.Папка репликации.

  2. В папке Локальные публикации щелкните правой кнопкой мыши публикацию AdvWorksProductTrans и выберите команду Создать подписку. Запустится мастер создания подписки:

    Selections to start the New Subscription Wizard

  3. На странице Публикация выберите публикацию AdvWorksProductTrans и нажмите кнопку Далее:

  4. На странице Расположение агента распространения установите флажок Выполнять все агенты в распространителе и нажмите кнопку Далее. Дополнительные сведения о подписках см. в статье Подписка на публикации.

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

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

  6. Откроется диалоговое окно Новая база данных. Введите ProductReplica в поле Имя базы данных, нажмите кнопку ОК и затем кнопку Далее:

    Entering a name for the subscription database

  7. На странице Безопасность агента распространения нажмите кнопку с многоточием (). Введите Publisher_Machine_Name\repl_distribution в поле "Учетная запись процесса">, введите< пароль для этой учетной записи, нажмите кнопку "ОК" и нажмите кнопку "Далее".

    Distribution account information in the

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

Установка разрешений базы данных на подписчике

  1. Подключение подписчику в SQL Server Management Studio. Разверните узел Безопасность, щелкните правой кнопкой мыши Имена для входа, а затем выберите команду Создать имя для входа.

    a. На странице "Общие" в разделе "Имя входа" выберите "Поиск" и добавьте имя входа для< Subscriber_Machine_Name>\repl_distribution.

    b. На странице Сопоставления пользователей назначьте базе данных ProductReplica членство с именем для входа db_owner.

    Selections for configuring the login on the subscriber

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

Просмотр сведений о состоянии синхронизации подписки

  1. Подключение издателю в SQL Server Management Studio. Разверните узел сервера и папку Репликация.

  2. В папке Локальные публикации разверните публикацию AdvWorksProductTrans, щелкните правой кнопкой мыши подписку в базе данных ProductReplica и выберите пункт Просмотр состояния синхронизации. Отобразятся сведения о текущем состоянии синхронизации подписки:

    Selections for opening the

  3. Если подписка не отображается под публикацией AdvWorksProductTrans, нажмите клавишу F5 для обновления списка.

Дополнительные сведения см. в разделе:

Измерение задержки репликации

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

  1. Подключение издателю в SQL Server Management Studio. Разверните узел сервера, щелкните правой кнопкой мыши папку Репликация и выберите пункт Запустить монитор репликации:

  2. Разверните группу издателей на левой панели, затем разверните экземпляр издателя и выберите публикацию AdvWorksProductTrans.

    a. Откройте вкладку Трассировочные токены.
    b. Выберите команду Вставить трассировочный токен.
    c. Просмотрите затраченное время для трассировочного маркера в следующих столбцах: От издателя к распространителю, От распространителя к подписчику, Общая задержка. Значение Ожидание указывает на то, что маркер еще не достиг указанной точки.

    Information for the tracer token

Дополнительные сведения см. в разделе:

Следующие шаги

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

В следующей статье будет описана настройка репликации слиянием: