Konfigurera replikering med AlwaysOn-tillgänglighetsgrupper
gäller för:SQL Server – endast Windows
Att konfigurera SQL Server-replikering och AlwaysOn-tillgänglighetsgrupper omfattar sju steg. Varje steg beskrivs mer detaljerat i följande avsnitt.
1. Konfigurera databaspublikationer och prenumerationer
Konfigurera distributören
Distributionsdatabasen kan inte placeras i en tillgänglighetsgrupp med SQL Server 2012 och SQL Server 2014. Placering av distributionsdatabasen i en tillgänglighetsgrupp stöds med SQL 2016 och senare, förutom distributionsdatabaser som används vid sammanslagning, dubbelriktade eller peer-to-peer-replikeringstopologier. Mer information finns i Konfigurera replikeringsdistributionsdatabas i AlwaysOn-tillgänglighetsgruppen.
Konfigurera distribution på distributören. Om lagrade procedurer används för konfiguration kör du
sp_adddistributor
Använd parametern @password för att identifiera lösenordet som ska användas när en fjärransluten utgivare ansluter till distributören. Lösenordet kommer också att behövas på varje fjärrutgivare när fjärrdistributören har konfigurerats.USE master; GO EXECUTE sys.sp_adddistributor @distributor = 'MyDistributor', @password = '**Strong password for distributor**';
Skapa distributionsdatabasen hos distributören. Om lagrade procedurer används för konfiguration kör du
sp_adddistributiondb
USE master; GO EXECUTE sys.sp_adddistributiondb @database = 'distribution', @security_mode = 1;
Konfigurera fjärrutgivaren. Om lagrade procedurer används för att konfigurera distributören kör du
sp_adddistpublisher
Parametern @security_mode används för att avgöra hur den lagrade proceduren för utgivarverifiering som körs från replikeringsagenterna ansluter till den aktuella primära. Om värdet är 1 används Windows-autentisering för att ansluta till den aktuella primära servern. Om värdet är 0 används SQL Server-autentisering med angivna värden för @login och @password. Inloggningen och lösenordet som anges måste vara giltiga för varje sekundär replik för den lagrade valideringsproceduren för att kunna ansluta till repliken.Notera
Om några ändrade replikeringsagenter körs på en annan dator än distributören, kommer användningen av Windows-autentisering för anslutningen till den primära att kräva att Kerberos-autentisering konfigureras för kommunikationen mellan replikvärddatorerna. Användning av en SQL Server-inloggning för anslutningen till den aktuella primära datorn kräver inte Kerberos-autentisering.
USE master; GO EXECUTE sys.sp_adddistpublisher @publisher = 'AGPrimaryReplicaHost', @distribution_db = 'distribution', @working_directory = '\\MyReplShare\WorkingDir', @login = 'MyPubLogin', @password = '**Strong password for publisher**';
Mer information finns i sp_adddistpublisher.
Konfigurera utgivaren på den ursprungliga utgivaren
Konfigurera fjärrdistribution. Om lagrade procedurer används för att konfigurera utgivaren kör du
sp_adddistributor
Ange samma värde för @password som det som användes närsp_adddistrbutor
kördes hos distributören för att konfigurera distributionen.EXECUTE sys.sp_adddistributor @distributor = 'MyDistributor', @password = 'MyDistPass';
Aktivera databasen för replikering. Om lagrade procedurer används för att konfigurera utgivaren, kör
sp_replicationdboption
. Om både transaktions- och sammanslagningsreplikation ska konfigureras för databasen måste var och en vara aktiverad.USE master; GO EXECUTE sys.sp_replicationdboption @dbname = 'MyDBName', @optname = 'publish', @value = 'true'; EXECUTE sys.sp_replicationdboption @dbname = 'MyDBName', @optname = 'merge publish', @value = 'true';
Skapa replikeringspublikationen, artiklarna och prenumerationerna. Mer information om hur du konfigurerar replikering finns i Publicera data och databasobjekt.
2. Konfigurera tillgänglighetsgruppen
Vid den avsedda primära instansen skapar du en tillgänglighetsgrupp med den publicerade (eller som ska publiceras) databasen som en medlemsdatabas. Om du använder guiden Tillgänglighetsgrupp kan du antingen tillåta att guiden först synkroniserar de sekundära replikdatabaserna eller så kan du utföra initieringen manuellt med hjälp av säkerhetskopiering och återställning.
Skapa en DNS-lyssnare för tillgänglighetsgruppen och som ska användas av replikeringsagenterna för att ansluta till den nuvarande primära servern. Det angivna lyssnarnamnet används som mål för omdirigering för det ursprungliga utgivar-/publicerade databasparet. Om du till exempel använder DDL för att konfigurera tillgänglighetsgruppen kan följande kodexempel användas för att ange en tillgänglighetsgruppslyssnare för en befintlig tillgänglighetsgrupp med namnet MyAG
:
ALTER AVAILABILITY GROUP 'MyAG'
ADD LISTENER 'MyAGListenerName' (WITH IP (('10.120.19.155', '255.255.254.0')));
Mer information finns i Skapa och konfigurera tillgänglighetsgrupper (SQL Server).
3. Kontrollera att alla sekundära värdservrar är konfigurerade för replikering
Kontrollera att SQL Server har konfigurerats för replikering på varje sekundär replikvärd. Följande fråga kan köras på varje sekundär replikvärd för att avgöra om replikeringen är installerad:
USE master;
GO
DECLARE @installed AS INT;
EXECUTE @installed = sys.sp_MS_replication_installed;
SELECT @installed;
Om @installed är 0 måste replikering läggas till i SQL Server-installationen.
4. Konfigurera de sekundära värdarna för replikering som replikationsutgivare
En sekundär replik kan inte fungera som replikeringsutgivare, men replikeringen måste konfigureras så att den sekundära repliken kan ta över efter en failover. Konfigurera distributionen för varje sekundär replikvärd på distributören. Ange samma distributionsdatabas och arbetskatalog som angavs när den ursprungliga utgivaren lades till i distributören. Om du använder lagrade procedurer för att konfigurera distribution använder du sp_adddistpublisher
för att associera fjärrutgivarna med distributören. Om @login och @password användes, ange samma värden för varje enskild värd när du lägger till de sekundära replika-servrarna som publicerare.
EXECUTE sys.sp_adddistpublisher
@publisher = 'AGSecondaryReplicaHost',
@distribution_db = 'distribution',
@working_directory = '\\MyReplShare\WorkingDir',
@login = 'MyPubLogin',
@password = '**Strong password for publisher**';
Konfigurera distribution på varje sekundär replikvärd. Identifiera distributören av den ursprungliga utgivaren som fjärrdistributör. Använd samma lösenord som när sp_adddistributor
kördes ursprungligen hos distributören. Om lagrade procedurer används för att konfigurera distribution används @password parametern för sp_adddistributor
för att ange lösenordet.
EXECUTE sp_adddistributor
@distributor = 'MyDistributor',
@password = '**Strong password for distributor**';
Kontrollera att push-prenumeranterna för databaspublikationer visas som länkade servrar på varje sekundär replikvärd. Om lagrade procedurer används för att konfigurera fjärranslutna utgivare använder du sp_addlinkedserver
för att lägga till prenumeranterna (om de inte redan finns) som länkade servrar till utgivaren.
EXECUTE sys.sp_addlinkedserver @server = 'MySubscriber';
5. Omdirigera den ursprungliga utgivaren till AG lyssnarnamn
På distributören kör du den lagrade proceduren sp_redirect_publisher
i distributionsdatabasen för att associera den ursprungliga utgivaren och den publicerade databasen med tillgänglighetsgruppens lyssnarnamn för tillgänglighetsgruppen.
USE distribution;
GO
EXECUTE sys.sp_redirect_publisher
@original_publisher = 'MyPublisher',
@publisher_db = 'MyPublishedDB',
@redirected_publisher = 'MyAGListenerName';
6. Kör den lagrade proceduren för replikeringsverifiering för att verifiera konfigurationen
På distributören kör du den lagrade proceduren i distributionsdatabasen sp_validate_replica_hosts_as_publishers
för att kontrollera att alla replikvärdar nu är konfigurerade för att fungera som utgivare för den publicerade databasen.
USE distribution;
GO
DECLARE @redirected_publisher AS sysname;
EXECUTE sys.sp_validate_replica_hosts_as_publishers
@original_publisher = 'MyPublisher',
@publisher_db = 'MyPublishedDB',
@redirected_publisher = @redirected_publisher OUTPUT;
Den lagrade proceduren sp_validate_replica_hosts_as_publishers
ska köras från en inloggning med tillräcklig behörighet på varje värd för tillgänglighetsgruppens repliker för att hämta information om tillgänglighetsgruppen. Till skillnad från sp_validate_redirected_publisher
använder den anroparens autentiseringsuppgifter och använder inte inloggningen som behålls i msdb.dbo.MSdistpublishers
för att ansluta till tillgänglighetsgruppens repliker.
Fel vid validering av sekundära replikvärdar
sp_validate_replica_hosts_as_publishers
misslyckas med det följande felet vid validering av sekundära replika-värdar som antingen inte tillåter läsåtkomst eller kräver att läs-intent anges.
Msg 21899, Level 11, State 1, Procedure
sp_hadr_verify_subscribers_at_publisher
, Line 109Förfrågan på den omdirigerade utgivaren "MyReplicaHostName" för att avgöra om det fanns sysserver-poster för prenumeranterna hos den ursprungliga utgivaren "MyOriginalPublisher" misslyckades med felkod "976", felmeddelandet "Fel 976, nivå 14, tillstånd 1, meddelande: Måldatabasen, "MyPublishedDB", deltar i en tillgänglighetsgrupp och är för närvarande inte tillgänglig för frågor. Antingen pausas dataflytten eller så är tillgänglighetsrepliken inte aktiverad för läsåtkomst. Om du vill tillåta skrivskyddad åtkomst till den här och andra databaser i tillgänglighetsgruppen aktiverar du läsåtkomst till en eller flera sekundära tillgänglighetsrepliker i gruppen. Mer information finns i ALTER AVAILABILITY GROUP-instruktionen i SQL Server Books Online.
Ett eller flera verifieringsfel för utgivare påträffades för replikvärden "MyReplicaHostName".
Detta är ett förväntat beteende. Du måste kontrollera förekomsten av prenumerantserverposterna på dessa sekundära replikvärdar genom att fråga efter sysserverposterna direkt på värden.
7. Lägg till den ursprungliga utgivaren i Replikeringsövervakaren
Lägg till den ursprungliga utgivaren i Replikeringsövervakaren vid varje tillgänglighetsgruppreplik.
Relaterade uppgifter
Replikering
Skapa och konfigurera en tillgänglighetsgrupp
- Använd guiden Tillgänglighetsgrupp (SQL Server Management Studio)
- Använd dialogrutan Ny tillgänglighetsgrupp (SQL Server Management Studio)
- Skapa en tillgänglighetsgrupp (Transact-SQL)
- Skapa en tillgänglighetsgrupp (SQL Server PowerShell)
- Ange slutpunkts-URL:en när du lägger till eller ändrar en tillgänglighetsreplik (SQL Server)
- Skapa en databasspeglingsslutpunkt för AlwaysOn-tillgänglighetsgrupper (SQL Server PowerShell)
- ansluta en sekundär replik till en tillgänglighetsgrupp (SQL Server)
- Förbereda en sekundär databas manuellt för en tillgänglighetsgrupp (SQL Server)
- Ansluta en sekundär databas till en tillgänglighetsgrupp (SQL Server)
- Skapa eller konfigurera en tillgänglighetsgrupplyssnare (SQL Server)