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


Настройка репликации для групп доступности AlwaysOn (SQL Server)

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

  1. Настройка публикаций и подписок баз данных.

  2. Настройка группы доступности AlwaysOn.

  3. Проверка настройки всех узлов вторичных реплик для репликации.

  4. Настройка узлов вторичных реплик в качестве издателей репликации.

  5. Перенаправление первоначального издателя на имя прослушивателя группы доступности.

  6. Запуск хранимой процедуры проверки для проверки конфигурации.

  7. Добавление первоначального издателя в монитор репликации.

Шаги 1 и 2 могут выполняться в любом порядке.

1.Настройка публикаций и подписок баз данных

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

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

  1. Настройка распространения на распространителе. Если хранимые процедуры используются для настройки, запустите sp_adddistributor. Используйте параметр @password для определения пароля, который будет использоваться при подключении удаленного издателя к распространителю. Кроме того, пароль понадобится для каждого удаленного издателя при настройке удаленного распространителя.

    USE master;
    GO
    EXEC sys.sp_adddistributor
        @distributor = 'MyDistributor',
        @password = '**Strong password for distributor**';
    
  2. Создайте базу данных распространителя на распространителе. Если хранимые процедуры используются для настройки, запустите sp_adddistributiondb.

    USE master;
    GO
    EXEC sys.sp_adddistributiondb
        @database = 'distribution',
        @security_mode = 1;
    
  3. Настройка удаленного издателя. Если хранимые процедуры используются для настройки распространителя, запустите sp_adddistpublisher. Параметр @security\_mode используется для определения того, как хранимая процедура проверки издателя, которая запускается при помощи агентов репликации, подключается к текущей первичной реплике. Если значение равно 1, то для подключения к текущей первичной реплике будет использоваться проверка подлинности Windows. Если значение равно 0, используется проверка подлинности службы SQL Server с указанными значениями @login и @password. Указанное имя входа и пароль должны быть действительными на каждой вторичной реплике для хранимой процедуры проверки в целях успешного подключения к этой реплике.

    ПримечаниеПримечание

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

    USE master;
    GO
    EXEC sys.sp_adddistpublisher
        @publisher = 'AGPrimaryReplicaHost',
        @distribution_db = 'distribution',
        @working_directory = '\\MyReplShare\WorkingDir',
        @login = 'MyPubLogin',
        @password = '**Strong password for publisher**';
    

Дополнительные сведения см. в разделе sp_adddistpublisher (Transact-SQL).

Настройка издателя на первоначальном издателе

  1. Настройка удаленного распространения. Если для настройки издателя используются хранимые процедуры, выполните хранимую процедуру sp_adddistributor. Укажите то же значение для @password, которое использовалось, когда процедура sp_adddistrbutor была запущена на распространителе для настройки распространения.

    exec sys.sp_adddistributor
        @distributor = 'MyDistributor',
        @password = 'MyDistPass'
    
  2. Включите базу данных для репликации. Если для настройки издателя используются хранимые процедуры, выполните хранимую процедуру sp_replicationdboption. Если для базы данных должны быть настроены и репликация транзакций, и репликация слиянием, необходимо включить каждую из них.

    USE master;
    GO
    EXEC sys.sp_replicationdboption
        @dbname = 'MyDBName',
        @optname = 'publish',
        @value = 'true';
    
    EXEC sys.sp_replicationdboption
        @dbname = 'MyDBName',
        @optname = 'merge publish',
        @value = 'true';
    
  3. Создайте публикацию, статьи и подписки репликации. Дополнительные сведения о том, как настроить репликацию, см. в разделе «Публикация данных и объектов базы данных».

Значок стрелки, используемый со ссылкой «В начало»[В начало]

2.Настройка группы доступности AlwaysOn

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

Создайте прослушиватель DNS для группы доступности, которая будет использоваться агентами репликации для подключения к текущей первичной реплике. Указанное имя прослушивателя будет использоваться в качестве цели перенаправления для первоначального издателя и опубликованной базы данных. Например, если настройка группы доступности выполняется с помощью языка DDL, можно использовать следующий пример кода, чтобы указать прослушиватель для существующей группы доступности с именем MyAG:

ALTER AVAILABILITY GROUP 'MyAG' 
    ADD LISTENER 'MyAGListenerName' (WITH IP (('10.120.19.155', '255.255.254.0')));

Дополнительные сведения см. в разделе Создание и настройка групп доступности (SQL Server).

Значок стрелки, используемый со ссылкой «В начало»[В начало]

3.Проверка настройки всех узлов вторичной реплики для репликации

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

USE master;
GO
DECLARE @installed int;
EXEC @installed = sys.sp_MS_replication_installed;
SELECT @installed;

Если значение параметра @installed равно 0, то необходимо добавить репликацию к установке SQL Server.

Значок стрелки, используемый со ссылкой «В начало»[В начало]

4.Настройка узлов вторичной реплики в качестве издателей репликации

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

EXEC sys.sp_adddistpublisher
    @publisher = 'AGSecondaryReplicaHost',
    @distribution_db = 'distribution',
    @working_directory = '\\MyReplShare\WorkingDir',
    @login = 'MyPubLogin',
    @password = '**Strong password for publisher**';

На каждом узле вторичной реплики настройте распространение. Укажите распространителя оригинального издателя в качестве удаленного распространителя. Используйте тот же пароль, который применялся при первоначальном запуске sp_adddistributor на распространителе. Если хранимые процедуры используются для настройки распространения, параметр @password sp_adddistributor используется для указания пароля.

EXEC sp_adddistributor 
    @distributor = 'MyDistributor',
    @password = '**Strong password for distributor**';

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

EXEC sys.sp_addlinkedserver 
    @server = 'MySubscriber';

Значок стрелки, используемый со ссылкой «В начало»[В начало]

5.Перенаправление первоначального издателя на имя прослушивателя группы доступности

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

USE distribution;
GO
EXEC sys.sp_redirect_publisher 
@original_publisher = 'MyPublisher',
    @publisher_db = 'MyPublishedDB',
    @redirected_publisher = 'MyAGListenerName';

Значок стрелки, используемый со ссылкой «В начало»[В начало]

6.Запуск хранимой процедуры проверки репликации для проверки конфигурации

На распространителе в базе данных распространителя запустите хранимую процедуру sp_validate_replica_hosts_as_publishers для проверки настройки всех узлов реплики для работы в качестве издателей опубликованной базы данных.

USE distribution;
GO
DECLARE @redirected_publisher sysname;
EXEC sys.sp_validate_replica_hosts_as_publishers
    @original_publisher = 'MyPublisher',
    @publisher_db = 'MyPublishedDB',
    @redirected_publisher = @redirected_publisher output;

Хранимая процедура sp_validate_replica_hosts_as_publishers должна быть запущена от имени входа с достаточными правами авторизации на каждом узле реплики группы доступности для выполнения запроса сведений о группе доступности. В отличие от sp_validate_redirected_publisher, для подключения к репликам группы доступности в ней используются учетные данные вызывающего, а не имя входа, хранимое в msdb.dbo.MSdistpublishers.

ПримечаниеПримечание

Работа sp_validate_replica_hosts_as_publishers завершится сбоем со следующей ошибкой при проверке узлов вторичной реплики, которые не дают доступ для чтения либо требуют указания намерения чтения.

Сообщение 21899, уровень 11, состояние 1, процедура sp_hadr_verify_subscribers_at_publisher, строка 109

Запрос на перенаправленном издателе «MyReplicaHostName» для определения того, были ли там записи sysserver для подписчиков оригинального издателя «MyOriginalPublisher», завершился с ошибкой «976», сообщение об ошибке «Ошибка 976, уровень 14, состояние 1, сообщение: Целевая база данных «MyPublishedDB» участвует в группе доступности и в настоящее время недоступна для запросов. Либо перемещение данных приостанавливается, либо реплика доступности не разрешена для чтения. Чтобы разрешить доступ только для чтения к этой и другим базам данных в группе доступности, задайте доступ для чтения одной или нескольким вторичным репликам доступности в группе. Дополнительные сведения см. в инструкции ALTER AVAILABILITY GROUP электронной документации по SQL Server.

Произошла одна или несколько ошибок проверки издателя для узла реплики «MyReplicaHostName».

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

Значок стрелки, используемый со ссылкой «В начало»[В начало]

7.Добавление первоначального издателя в монитор репликации

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

Значок стрелки, используемый со ссылкой «В начало»[В начало]

Связанные задачи

Репликация

Создание и настройка группы доступности

Значок стрелки, используемый со ссылкой «В начало»[В начало]

См. также

Основные понятия

предварительными требованиями, и ограничениями и рекомендациями для групп доступности AlwaysOn (SQL Server)

Обзор групп доступности AlwaysOn (SQL Server)

Группы доступности AlwaysOn Совместимость (SQL Server)

Репликация SQL Server