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


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

С помощью распределенной группы доступности перенесите одну или несколько баз данных из изолированного экземпляра SQL Server на SQL Server на Виртуальных машинах Azure.

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

В этой статье описываются операции с базами данных в изолированном экземпляре SQL Server. Для этого решения не требуется отказоустойчивый кластер Windows Server (WSFC) или прослушиватель группы доступности. Вы также можете перенести базы данных в группу доступности.

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

Начальная настройка

Первый шаг — создание виртуальной машины SQL Server в Azure. Это можно сделать с помощью портала Azure, Azure PowerShell или шаблона ARM.

Обязательно настройте свою виртуальную машину SQL Server в соответствии с требованиями.

Для простоты присоедините свою виртуальную машину целевого SQL Server к тому же домену, к которому присоединен исходный SQL Server. В противном случае присоедините виртуальную машину целевого SQL Server к домену, который входит в федерацию домена исходного SQL Server.

Чтобы вы могли использовать автоматическое заполнение для создания распределенной группы доступности, имя экземпляра для глобального первичного сервера (источника) распределенной группы доступности должно совпадать с именем экземпляра сервера пересылки (назначения) распределенной группы доступности. Если имеется несоответствие имени экземпляра между глобальным первичным и переадресатором, необходимо использовать ручное начальное значение для создания DAG и вручную добавить дополнительные файлы базы данных в будущем.

В этой статье используются следующие примеры параметров:

  • Имя базы данных: Adventureworks2022
  • Имя исходного компьютера (глобальный первичный в DAG): OnPremNode
  • Исходное имя экземпляра SQL Server: MSSQLSERVER
  • Имя группы доступности источника: OnPremAg
  • Целевое имя виртуальной машины SQL Server (переадресатор в DAG): SQLVM
  • Целевое имя SQL Server на экземпляре виртуальной машины Azure: MSSQLSERVER
  • Имя целевой группы доступности: AzureAG
  • Имя конечной точки: Hadr_endpoint
  • Имя распределенной группы доступности: DAG
  • Доменное имя: Contoso

Создание конечных точек

Используйте Transact-SQL (T-SQL) для создания конечных точек в исходных (OnPremNode) и целевыхSQLVM экземплярах SQL Server.

Чтобы создать конечные точки, выполните этот скрипт T-SQL на исходном и целевом серверах:

CREATE ENDPOINT [Hadr_endpoint] STATE = STARTED
AS TCP (
    LISTENER_PORT = 5022,
    LISTENER_IP = ALL
)
FOR DATA_MIRRORING(ROLE = ALL,
AUTHENTICATION = WINDOWS NEGOTIATE,
ENCRYPTION = REQUIRED ALGORITHM AES);
GO

Учетные записи домена автоматически имеют доступ к конечным точкам, но учетные записи служб могут не быть автоматически частью группы sysadmin и могут не иметь разрешения на подключение. Чтобы вручную предоставить учетной записи службы SQL Server разрешение на подключение к конечной точке, выполните следующий скрипт T-SQL на обоих серверах:

GRANT CONNECT ON ENDPOINT::[Hadr_endpoint] TO [<your account>];

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

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

Используйте Transact-SQL (T-SQL), чтобы создать группу доступности (OnPremAg) в исходном (OnPremNode) экземпляре для примера Adventureworks2022 базы данных.

Чтобы создать группу доступности, выполните следующий скрипт на исходном сервере:

CREATE AVAILABILITY GROUP [OnPremAG]
WITH (
    AUTOMATED_BACKUP_PREFERENCE = PRIMARY,
    DB_FAILOVER = OFF,
    DTC_SUPPORT = NONE,
    CLUSTER_TYPE = NONE
)
FOR DATABASE [Adventureworks2022] REPLICA ON N'OnPremNode'
WITH (
    ENDPOINT_URL = N'TCP://OnPremNode.contoso.com:5022',
    FAILOVER_MODE = MANUAL,
    AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
    SEEDING_MODE = AUTOMATIC,
    SECONDARY_ROLE(ALLOW_CONNECTIONS = NO)
);
GO

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

Вам также нужно создать группу доступности на виртуальной машине целевого SQL Server.

Используйте Transact-SQL (T-SQL) для создания группы доступности (AzureAG) в целевом (SQLVM) экземпляре.

Чтобы создать группу доступности, выполните следующий скрипт на целевом сервере:

CREATE AVAILABILITY GROUP [AzureAG]
WITH (
    AUTOMATED_BACKUP_PREFERENCE = PRIMARY,
    DB_FAILOVER = OFF,
    DTC_SUPPORT = NONE,
    CLUSTER_TYPE = NONE,
    REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT = 0
)
FOR REPLICA ON N'SQLVM'
WITH (
    ENDPOINT_URL = N'TCP://SQLVM.contoso.com:5022',
    FAILOVER_MODE = MANUAL,
    AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
    SEEDING_MODE = AUTOMATIC,
    SECONDARY_ROLE(ALLOW_CONNECTIONS = NO)
);
GO

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

После настройки исходных (OnPremAG) и целевыхAzureAG групп доступности создайте распределенную группу доступности, чтобы охватывать обе отдельные группы доступности.

Используйте Transact-SQL в исходном экземпляре SQL Server (OnPremNode) и группе доступности (OnPremAG) для создания распределенной группы доступности (DAG).

Чтобы создать распределенную группу доступности, выполните следующий скрипт на исходном сервере:

CREATE AVAILABILITY GROUP [DAG]
WITH (DISTRIBUTED) AVAILABILITY GROUP
ON 'OnPremAG' WITH (
    LISTENER_URL = 'tcp://OnPremNode.contoso.com:5022',
    AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
    FAILOVER_MODE = MANUAL,
    SEEDING_MODE = AUTOMATIC
),
'AzureAG' WITH (
    LISTENER_URL = 'tcp://SQLVM.contoso.com:5022',
    AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
    FAILOVER_MODE = MANUAL,
    SEEDING_MODE = AUTOMATIC
);
GO

Для режима заполнения выбрано значение AUTOMATIC, так как на целевом и исходном экземплярах используется одна и та же версия SQL Server. Если целевой объект SQL Server является более высокой или если глобальный первичный и пересылка имеют разные имена экземпляров, создайте распределенную группу доступности и присоедините вторичную группу доступности к распределенной группе доступности с SEEDING_MODE заданным значением MANUAL. Затем вручную восстановите базы данных из исходного экземпляра SQL Server в целевой. Дополнительные сведения см. в статье об обновлении версий во время миграции.

После создания распределенной группы доступности присоедините целевую группу доступности (AzureAG) к целевому экземпляру (SQLVM) к распределенной группе доступности (DAG).

Чтобы присоединить целевую группу доступности к распределенной группе доступности, выполните следующий скрипт на целевом сервере:

ALTER AVAILABILITY GROUP [DAG]
JOIN AVAILABILITY GROUP
ON 'OnPremAG' WITH (
    LISTENER_URL = 'tcp://OnPremNode.contoso.com:5022',
    AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
    FAILOVER_MODE = MANUAL,
    SEEDING_MODE = AUTOMATIC
),
'AzureAG' WITH (
    LISTENER_URL = 'tcp://SQLVM.contoso.com:5022',
    AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
    FAILOVER_MODE = MANUAL,
    SEEDING_MODE = AUTOMATIC
);
GO

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

ALTER AVAILABILITY GROUP [DAG]
MODIFY AVAILABILITY GROUP
ON 'AzureAG' WITH (SEEDING_MODE = MANUAL);

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