Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Use um grupo de disponibilidade distribuída (AG) para migrar um banco de dados (ou vários bancos de dados) de uma instância autônoma do SQL Server para o SQL Server em Máquinas Virtuais (VMs) do Azure.
Depois de validar que sua instância do SQL Server de origem atende aos pré-requisitos, siga as etapas neste artigo para criar um grupo de disponibilidade em sua instância autônoma do SQL Server e migrar seu banco de dados (ou grupo de bancos de dados) para sua VM do SQL Server no Azure.
Este artigo destina-se a bancos de dados em uma instância autônoma do SQL Server. Esta solução não requer um WSFC (Cluster de Failover do Windows Server) ou um ouvinte de grupo de disponibilidade. Também é possível migrar bancos de dados em um grupo de disponibilidade.
Configuração inicial
A primeira etapa é criar sua VM do SQL Server no Azure. Você pode fazer isso usando o portal do Azure, o Azure PowerShell ou um modelo ARM.
Certifique-se de configurar sua VM do SQL Server de acordo com os pré-requisitos.
Para simplificar, associe sua VM do SQL Server de destino ao mesmo domínio do SQL Server de origem. Caso contrário, associe sua VM do SQL Server de destino a um domínio federado com o domínio do SQL Server de origem.
Para usar a propagação automática para criar seu grupo de disponibilidade distribuída (DAG), o nome da instância para o primário global (origem) do DAG deve corresponder ao nome da instância do encaminhador (destino) do DAG. Se houver uma incompatibilidade de nome de instância entre o primário global e o encaminhador, você deverá usar a propagação manual para criar o DAG e adicionar manualmente quaisquer arquivos de banco de dados adicionais no futuro.
Este artigo usa os seguintes parâmetros de exemplo:
- Nome do banco de dados:
Adventureworks2022 - Nome da máquina de origem (primário global no DAG):
OnPremNode - Nome da instância do SQL Server de origem:
MSSQLSERVER - Nome do grupo de disponibilidade de origem:
OnPremAg - Nome da VM do SQL Server de destino (encaminhador no DAG):
SQLVM - Nome da instância de destino do SQL Server na VM do Azure:
MSSQLSERVER - Nome do grupo de disponibilidade de destino:
AzureAG - Nome do ponto final:
Hadr_endpoint - Nome do grupo de disponibilidade distribuída:
DAG - Nome de domínio:
Contoso
Criar pontos de extremidade
Use o Transact-SQL (T-SQL) para criar pontos de extremidade em suas instâncias do SQL Server de origem (OnPremNode) e de destino (SQLVM).
Para criar os seus endpoints, execute este script T-SQL nos servidores de origem e de destino:
CREATE ENDPOINT [Hadr_endpoint]
STATE = STARTED
AS TCP (
LISTENER_PORT = 5022,
LISTENER_IP = ALL
)
FOR DATABASE_MIRRORING (
ROLE = ALL,
AUTHENTICATION = WINDOWS NEGOTIATE,
ENCRYPTION = REQUIRED ALGORITHM AES
);
GO
As contas de domínio têm acesso automático aos pontos de extremidade, mas as contas de serviço podem não fazer parte automaticamente do grupo sysadmin e podem não ter permissão de conexão. Para conceder manualmente a permissão de conexão da conta de serviço do SQL Server ao ponto de extremidade, execute o seguinte script T-SQL em ambos os servidores:
GRANT CONNECT ON ENDPOINT::[Hadr_endpoint] TO [<your account>];
Criar fonte AG
Como um grupo de disponibilidade distribuída é um grupo de disponibilidade especial que abrange dois grupos de disponibilidade individuais, primeiro você precisa criar um grupo de disponibilidade na instância do SQL Server de origem. Se você já tiver um grupo de disponibilidade que gostaria de manter no Azure, migre seu grupo de disponibilidade .
Use Transact-SQL (T-SQL) para criar um grupo de disponibilidade (OnPremAg) na instância de origem (OnPremNode) para o banco de dados de exemplo Adventureworks2022 .
Para criar o grupo de disponibilidade, execute este script na origem:
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
Criar AG de destino
Você também precisa criar um grupo de disponibilidade na VM do SQL Server de destino.
Use Transact-SQL (T-SQL) para criar um grupo de disponibilidade (AzureAG) na instância de destino (SQLVM).
Para criar o grupo de disponibilidade, execute este script no destino:
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
Criar Grupo de Disponibilidade (AG) distribuído
Depois de configurar os grupos de disponibilidade de origem (OnPremAG) e de destino (AzureAG), crie o grupo de disponibilidade distribuída para abranger ambos os grupos de disponibilidade individuais.
Use Transact-SQL na instância de origem do SQL Server (OnPremNode) e AG (OnPremAG) para criar o grupo de disponibilidade distribuída (DAG).
Para criar o AG distribuído, execute este script na fonte:
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
O modo de propagação é definido como AUTOMATIC, pois a versão do SQL Server no destino e na origem é a mesma. Se o destino do SQL Server for uma versão superior ou se o primário global e o encaminhador tiverem nomes de instância diferentes, crie o ag distribuído e associe o AG secundário ao ag distribuído com SEEDING_MODE definido como MANUAL. Em seguida, restaure manualmente os bancos de dados da origem para a instância do SQL Server de destino. Para obter mais informações, consulte Atualizando versões durante a migração.
Depois que o AG distribuído for criado, junte o AG de destino (AzureAG) na instância de destino (SQLVM) ao AG distribuído (DAG).
Para unir o AG de destino ao AG distribuído, execute este script no destino:
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
Se você precisar cancelar, pausar ou atrasar a sincronização entre os grupos de disponibilidade de origem e de destino (como, por exemplo, problemas de desempenho), execute este script na instância primária global de origem (OnPremNode):
ALTER AVAILABILITY GROUP [DAG]
MODIFY AVAILABILITY GROUP
ON 'AzureAG' WITH (SEEDING_MODE = MANUAL);
Para obter mais informações, consulte Cancelar distribuição automática para o encaminhador.