Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Använd en distribuerad tillgänglighetsgrupp (AG) för att migrera databaser i en AlwaysOn-tillgänglighetsgrupp samtidigt som du har stöd för hög tillgänglighet och haveriberedskap (HADR) efter migreringen på SQL Server på virtuella Azure-datorer (VM).
När du har verifierat att dina SQL Server-källinstanser uppfyller kraven följer du stegen i den här artikeln för att skapa en distribuerad tillgänglighet mellan din befintliga tillgänglighetsgrupp och måltillgänglighetsgruppen på din SQL Server på virtuella Azure-datorer.
Den här artikeln är avsedd för databaser som deltar i en tillgänglighetsgrupp och kräver ett Windows Server-redundanskluster (WSFC) och en lyssnare för tillgänglighetsgrupper. Det går också att migrera databaser från en fristående SQL Server-instans.
Inledande installation
Det första steget är att skapa dina virtuella SQL Server-datorer i Azure. Du kan göra det med hjälp av Azure-portalen, Azure PowerShell eller en ARM-mall.
Se till att konfigurera dina virtuella SQL Server-datorer enligt kraven. Välj mellan en distribution av ett enda undernät, som förlitar sig på en Azure Load Balancer eller ett distribuerat nätverksnamn för att dirigera trafik till din tillgänglighetsgruppslyssnare eller en distribution med flera undernät som inte har något sådant krav. Distribution av flera undernät rekommenderas. Mer information finns i anslutning.
För enkelhetens skull ansluter du dina virtuella SQL Server-måldatorer till samma domän som dina SQL Server-källinstanser. Annars ansluter du din virtuella SQL Server-måldator till en domän som är federerad med domänen för dina SQL Server-källinstanser.
Om du vill använda automatisk seeding för att skapa din distribuerade tillgänglighetsgrupp (DAG) måste instansnamnet för DAG:s globala primära (källa) matcha instansnamnet för vidarebefordraren (målet) för DAG. Om det finns ett matchningsfel för instansnamnet mellan den globala primära och vidarebefordraren måste du använda manuell seeding för att skapa DAG och manuellt lägga till ytterligare databasfiler i framtiden.
Den här artikeln använder följande exempelparametrar:
- Databasnamn:
Adventureworks2022 - Källdatornamn:
OnPremNode1(global primär i DAG),OnPremNode2 - Sql Server-källinstansnamn:
MSSQLSERVER,MSSQLSERVER - Namn på källtillgänglighetsgrupp:
OnPremAg - Lyssnarnamn för källtillgänglighetsgrupp:
OnPremAG_LST - Sql Server VM-målnamn:
SQLVM1(vidarebefordrare i DAG),SQLVM2 - SQL Server-mål för Azure VM-instansnamn:
MSSQLSERVER,MSSQLSERVER - Namn på måltillgänglighetsgrupp:
AzureAG - Lyssnarnamn för källtillgänglighetsgrupp:
AzureAG_LST - Slutpunktsnamn:
Hadr_endpoint - Namn på distribuerad tillgänglighetsgrupp:
DAG - Domännamn:
Contoso
Skapa slutpunkter
Använd Transact-SQL (T-SQL) för att skapa slutpunkter på båda dina två källinstanser (OnPremNode1, OnPremNode2) och SQL Server-målinstanser (SQLVM1, SQLVM2).
Om du redan har en tillgänglighetsgrupp konfigurerad på källinstanserna kör du bara det här skriptet på de två målinstanserna.
Om du vill skapa dina slutpunkter kör du det här T-SQL-skriptet på både käll- och målservrar:
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
Domänkonton har automatiskt åtkomst till slutpunkter, men tjänstkonton kanske inte automatiskt ingår i sysadmin-gruppen och kanske inte har behörighet att ansluta. Om du vill ge SQL Server-tjänstkontot behörighet att ansluta manuellt till slutpunkten kör du följande T-SQL-skript på båda servrarna:
GRANT CONNECT ON ENDPOINT::[Hadr_endpoint] TO [<your account>];
Skapa käll-TILLGÄNGLIGHETSGRUPP
Eftersom en distribuerad tillgänglighetsgrupp är en särskild tillgänglighetsgrupp som sträcker sig över två enskilda tillgänglighetsgrupper måste du först skapa en tillgänglighetsgrupp på de två SQL Server-källinstanserna.
Om du redan har en tillgänglighetsgrupp på dina källinstanser hoppar du över det här avsnittet.
Använd Transact-SQL (T-SQL) för att skapa en tillgänglighetsgrupp (OnPremAG) mellan dina två källinstanser (OnPremNode1, OnPremNode2) för exempeldatabasen Adventureworks2022 .
Om du vill skapa tillgänglighetsgruppen på källinstanserna kör du det här skriptet på den primära källrepliken (OnPremNode1):
CREATE AVAILABILITY GROUP [OnPremAG]
WITH (
AUTOMATED_BACKUP_PREFERENCE = PRIMARY,
DB_FAILOVER = OFF,
DTC_SUPPORT = NONE
)
FOR DATABASE [Adventureworks2022] REPLICA
ON N'OnPremNode1' WITH (
ENDPOINT_URL = N'TCP://OnPremNode1.contoso.com:5022',
FAILOVER_MODE = AUTOMATIC,
AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
SEEDING_MODE = AUTOMATIC,
SECONDARY_ROLE(ALLOW_CONNECTIONS = NO)
),
N'OnPremNode2' WITH (
ENDPOINT_URL = N'TCP://OnPremNode2.contoso.com:5022',
FAILOVER_MODE = AUTOMATIC,
AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
SEEDING_MODE = AUTOMATIC,
SECONDARY_ROLE(ALLOW_CONNECTIONS = NO)
);
Därefter ansluter du den sekundära repliken (OnPremNode2) till tillgänglighetsgruppen (OnPremAg).
Om du vill ansluta till tillgänglighetsgruppen kör du det här skriptet på den sekundära källrepliken:
ALTER AVAILABILITY GROUP [OnPremAG] JOIN;
GO
ALTER AVAILABILITY GROUP [OnPremAG] GRANT CREATE ANY DATABASE;
GO
Skapa slutligen lyssnaren för din globala tillgänglighetsgrupp för vidarebefordrare (OnPremAG).
Skapa lyssnaren genom att köra det här skriptet på den primära källrepliken:
USE [master]
GO
ALTER AVAILABILITY GROUP [OnPremAG]
ADD LISTENER N'OnPremAG_LST' (
WITH IP (
(<available_static_ip>, <mask>),
PORT = 60173
)
);
GO
Skapa mål-AG
Du måste också skapa en tillgänglighetsgrupp på de virtuella SQL Server-måldatorerna.
Om du redan har en tillgänglighetsgrupp konfigurerad mellan dina SQL Server-instanser i Azure hoppar du över det här avsnittet.
Använd Transact-SQL (T-SQL) för att skapa en tillgänglighetsgrupp (AzureAG) på SQL Server-målinstanserna (SQLVM1 och SQLVM2).
Om du vill skapa tillgänglighetsgruppen på målet kör du det här skriptet på den primära målrepliken:
CREATE AVAILABILITY GROUP [AzureAG] FOR REPLICA
ON N'SQLVM1' WITH (
ENDPOINT_URL = N'TCP://SQLVM1.contoso.com:5022',
FAILOVER_MODE = MANUAL,
AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
BACKUP_PRIORITY = 50,
SECONDARY_ROLE(ALLOW_CONNECTIONS = NO),
SEEDING_MODE = AUTOMATIC
),
N'SQLVM2' WITH (
ENDPOINT_URL = N'TCP://SQLVM2.contoso.com:5022',
FAILOVER_MODE = MANUAL,
AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
BACKUP_PRIORITY = 50,
SECONDARY_ROLE(ALLOW_CONNECTIONS = NO),
SEEDING_MODE = AUTOMATIC
);
GO
Anslut sedan den sekundära målrepliken (SQLVM2) till tillgänglighetsgruppen (AzureAG).
Kör det här skriptet på den sekundära målrepliken:
ALTER AVAILABILITY GROUP [AzureAG] JOIN;
GO
ALTER AVAILABILITY GROUP [AzureAG] GRANT CREATE ANY DATABASE;
GO
Skapa slutligen en lyssnare (AzureAG_LST) för måltillgänglighetsgruppen (AzureAG). Om du har distribuerat dina virtuella SQL Server-datorer till flera undernät skapar du lyssnaren med Transact-SQL. Om du har distribuerat dina virtuella SQL Server-datorer till ett enda undernät konfigurerar du antingen en Azure Load Balancer eller ett distribuerat nätverksnamn för lyssnaren.
Skapa lyssnaren genom att köra det här skriptet på den primära repliken av tillgänglighetsgruppen i Azure.
ALTER AVAILABILITY GROUP [AzureAG]
ADD LISTENER N'AzureAG_LST' (
WITH IP (
(N'<primary replica_secondary_ip>', N'<primary_mask>'),
(N'<secondary replica_secondary_ip>', N'<secondary_mask>')
),
PORT = <port_number_you_set>
);
GO
Skapa distribuerad tillgänglighetsgrupp (Availability Group)
När du har konfigurerat dina tillgänglighetsgrupper för källa (OnPremAG) och mål (AzureAG) skapar du din distribuerade tillgänglighetsgrupp för att omfatta båda enskilda tillgänglighetsgrupper.
Använd Transact-SQL på källan SQL Server global primära (OnPremNode1) och AG (OnPremAG) för att skapa den distribuerade tillgänglighetsgruppen (DAG).
Om du vill skapa den distribuerade AG på källan kör du det här skriptet på den globala primärnoden:
CREATE AVAILABILITY GROUP [DAG]
WITH (DISTRIBUTED) AVAILABILITY GROUP
ON 'OnPremAG' WITH (
LISTENER_URL = 'tcp://OnPremAG_LST.contoso.com:5022',
AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
FAILOVER_MODE = MANUAL,
SEEDING_MODE = AUTOMATIC
),
'AzureAG' WITH (
LISTENER_URL = 'tcp://AzureAG_LST.contoso.com:5022',
AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
FAILOVER_MODE = MANUAL,
SEEDING_MODE = AUTOMATIC
);
GO
Anmärkning
Seeding-läget är inställt på AUTOMATIC eftersom versionen av SQL Server på målet och källan är densamma. Om DITT SQL Server-mål är en högre version, eller om din globala primära och vidarebefordrare har olika instansnamn, skapar du den distribuerade tillgänglighetsgruppen och ansluter den sekundära tillgänglighetsgruppen till den distribuerade tillgänglighetsgruppen med SEEDING_MODE inställt på MANUAL. Återställ sedan databaserna manuellt från källan till SQL Server-målinstansen. Läs om hur du uppgraderar versioner under migreringen .
När den distribuerade tillgänglighetsgruppen har skapats ansluter du mål tillgänglighetsgruppen (AzureAG) på målvidareinstansen (SQLVM1) till den distribuerade tillgänglighetsgruppen (DAG).
Om du vill ansluta måltillgänglighetsgruppen till den distribuerade tillgänglighetsgruppen, kör det här skriptet på mål vidarebefordran:
ALTER AVAILABILITY GROUP [DAG]
INNER JOIN AVAILABILITY GROUP
ON 'OnPremAG' WITH (
LISTENER_URL = 'tcp://OnPremAG_LST.contoso.com:5022',
AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
FAILOVER_MODE = MANUAL,
SEEDING_MODE = AUTOMATIC
),
'AzureAG' WITH (
LISTENER_URL = 'tcp://AzureAG_LST.contoso.com:5022',
AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
FAILOVER_MODE = MANUAL,
SEEDING_MODE = AUTOMATIC
);
GO
Om du behöver avbryta, pausa eller fördröja synkroniseringen mellan käll- och måltillgänglighetsgrupperna (till exempel prestandaproblem) kör du det här skriptet på den globala primära källinstansen (OnPremNode1):
ALTER AVAILABILITY GROUP [DAG]
MODIFY AVAILABILITY GROUP ON 'AzureAG'
WITH (SEEDING_MODE = MANUAL);
Mer information finns i Avbryt automatisk seeding till vidarebefordrare.