Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Gäller för:SQL Server
Databasspegling kan användas tillsammans med replikering för att förbättra tillgängligheten för publikationsdatabasen. Databasspegling omfattar två kopior av en enda databas som vanligtvis finns på olika datorer. Vid en viss tidpunkt är endast en kopia av databasen tillgänglig för klienter. Den här kopian kallas för huvuddatabasen. Uppdateringar som görs av klienter till huvuddatabasen tillämpas på den andra kopian av databasen, som kallas speglingsdatabasen. Spegling innebär att tillämpa transaktionsloggen från varje infogning, uppdatering eller borttagning som görs på huvuddatabasen på speglingsdatabasen.
Replikering av redundans till en spegling stöds fullt ut för publiceringsdatabaser, med begränsat stöd för prenumerationsdatabaser. Databasspegling stöds inte för distributionsdatabasen. Information om hur du återställer en distributionsdatabas eller prenumerationsdatabas utan att behöva konfigurera om replikeringen finns i Säkerhetskopiera och återställa replikerade databaser.
Anmärkning
Efter en redundansväxling blir speglingen huvudservern. I det här avsnittet refererar "principal" och "mirror" alltid till det ursprungliga huvudnamnet och speglingen.
Krav och överväganden för att använda replikering med databasspegling
Tänk på följande krav och överväganden när du använder replikering med databasspegling:
Huvudkomponenten och speglingen måste dela en distributör. Vi rekommenderar att detta är en fjärrdistributör, vilket ger större feltolerans om utgivaren har en oplanerad överflyttning.
Replikering stöder spegling av publikationsdatabasen både för sammanslagningsreplikering och för transaktionsreplikering med skrivskyddade prenumeranter eller för prenumeranter med köade uppdateringar. Omedelbar uppdatering av prenumeranter, Oracle-utgivare, utgivare i en peer-to-peer-topologi och ompublicering stöds inte.
Metadata och objekt som finns utanför databasen kopieras inte till speglingen, inklusive inloggningar, jobb, länkade servrar och så vidare. Om du behöver metadata och objekt i spegeln måste du kopiera dem manuellt. Mer information finns i Hantering av inloggningar och jobb efter rollväxling (SQL Server).
Konfigurering av replikering med databasspegling
Konfigurering av replikering och databasspegling omfattar fem steg. Varje steg beskrivs mer detaljerat i följande avsnitt.
Konfigurera utgivaren.
Konfigurera databasspegling.
Konfigurera spegla så att den använder samma distributör som huvudservern.
Konfigurera replikeringsagenter för failover.
Lägg till huvuddatorn och spegeldatorn i Replikeringsövervakaren.
Steg 1 och 2 kan också utföras i motsatt ordning.
Konfigurera databasspegling för en publikationsdatabas
Konfigurera utgivaren:
Vi rekommenderar att du använder en fjärransluten distributör. Mer information om hur du konfigurerar distribution finns i Konfigurera distribution.
Du kan aktivera en databas för ögonblicksbilder och transaktionspublikationer och/eller sammanfoga publikationer. För speglade databaser som innehåller mer än en typ av publikation måste du aktivera databasen för båda typerna på samma nod med hjälp av sp_replicationdboption. Du kan till exempel köra följande lagrade proceduranrop på huvudkontot:
exec sp_replicationdboption @dbname='<PublicationDatabase>', @optname='publish', @value=true; exec sp_replicationdboption @dbname='<PublicationDatabase>', @optname='mergepublish', @value=true;Mer information om hur du skapar publikationer finns i Publicera data och databasobjekt.
Konfigurera databasspegling. Mer information finns i Upprätta en databasspeglingssession med Windows-autentisering (SQL Server Management Studio) och Konfigurera databasspegling (SQL Server).
Konfigurera distribution för speglingen. Ange speglingsnamnet som Utgivare och specificera samma Distributör och ögonblicksbildmapp som huvudservern använder. Om du till exempel konfigurerar replikering med lagrade procedurer kör du sp_adddistpublisher på distributören; och kör sedan sp_adddistributor på spegelservern. För sp_adddistpublisher:
Ange värdet för parametern @publisher till nätverksnamnet för speglingen.
Ange värdet för parametern @working_directory till den ögonblicksbildsmapp som används av principalen.
Ange speglingsnamnet för agentparametern -PublisherFailoverPartner . Agent Den här parametern krävs för att följande agenter ska kunna identifiera speglingen efter redundansväxlingen:
Snapshot Agent (för alla publikationer)
Log Reader Agent (för alla transaktionspublikationer)
Queue Reader Agent (för transaktionspublikationer som stöder kölagda uppdateringsprenumerationer)
Sammanslagningsagent (för sammanslagningsprenumerationer)
SQL Server-replikeringslyssnare (replisapi.dll: för sammanslagningsprenumerationer som synkroniserats med webbsynkronisering)
SQL Merge ActiveX Control (för sammanslagningsprenumerationer som synkroniserats med kontrollen)
Distributionsagenten och Distribution ActiveX-kontrollen har inte den här parametern eftersom de inte ansluter till Publisher.
Ändringar i agentparametern börjar gälla nästa gång agenten startas. Om agenten körs kontinuerligt måste du stoppa och starta om agenten. Parametrar kan anges i agentprofiler och från kommandotolken. Mer information finns i:
Vi rekommenderar att du lägger till -PublisherFailoverPartner i en agentprofil och sedan anger speglingsnamnet i profilen. Om du till exempel konfigurerar replikering med lagrade procedurer:
-- Execute sp_help_agent_profile in the context of the distribution database to get the list of profiles. -- Select the profile id of the profile that needs to be updated from the result set. -- In the agent_type column returned by sp_help_agent_profile: -- 1 = Snapshot Agent; 2 = Log Reader Agent; 3 = Distribution Agent; 4 = Merge Agent; 9 = Queue Reader Agent. exec sp_help_agent_profile; -- Setting the -PublisherFailoverPartner parameter in the default Snapshot Agent profile (profile 1). -- Execute sp_add_agent_parameter in the context of the distribution database. exec sp_add_agent_parameter @profile_id = 1, @parameter_name = N'-PublisherFailoverPartner', @parameter_value = N'<Failover Partner Name>'; -- Setting the -PublisherFailoverPartner parameter in the default Merge Agent profile (profile 6). -- Execute sp_add_agent_parameter in the context of the distribution database. exec sp_add_agent_parameter @profile_id = 6, @parameter_name = N'-PublisherFailoverPartner', @parameter_value = N'<Failover Partner Name>';Lägg till huvuddatorn och spegeldatorn i Replikeringsövervakaren. Mer information finns i Lägga till och ta bort utgivare från replikeringsövervakaren.
Underhålla en speglad publikationsdatabas
Att underhålla en speglad publikationsdatabas är i stort sett detsamma som att underhålla en icke-speglad databas, med följande överväganden:
Administration och övervakning måste ske på den aktiva servern. I SQL Server Management Studio visas publikationer under mappen Lokala publikationer endast för den aktiva servern. Om du till exempel växlar över till spegeln visas publikationerna där och visas inte längre vid primären. Om databasen växlar över till speglingsinstansen kan du behöva uppdatera Management Studio och Replikeringsövervakaren manuellt för att ändringen ska visas.
Replikeringsövervakaren visar Publisher-noder i objektträdet för både huvudservern och speglingen. Om den primära servern är aktiv visas publikationsinformation endast under primärnoden i Replikeringsövervakaren.
Om speglingen är den aktiva servern:
Om en agent har ett fel anges felet endast på huvudnoden, inte på speglingsnoden.
Om huvudnoden inte är tillgänglig visar huvudnoden och speglingsnoderna identiska listor med publikationer. Övervakning bör utföras på publikationerna under speglingsnoden.
När du använder lagrade procedurer eller replikeringshanteringsobjekt (RMO) vid administration av spegling, för de fall där du anger utgivarnamnet, måste du ange namnet på den instans där databasen har aktiverats för replikering. Använd funktionen publishingservername för att fastställa lämpligt namn.
När en publikationsdatabas speglas är replikeringsmetadata som lagras i den speglade databasen identiska med de metadata som lagras i huvuddatabasen. För publiceringsdatabaser som är aktiverade för replikering på huvuddatorn lagras namnet på Publisher-instansen som huvuddatorns namn, inte spegelns, i systemtabellerna vid spegling. Detta påverkar replikeringskonfigurationen och underhållet om publikationsdatabasen redundansväxlar till speglingen. Om du till exempel konfigurerar replikering med lagrade procedurer på spegeln efter en felövergång och vill lägga till en pull-prenumeration i en publikationsdatabas som har aktiverats på huvudservern, måste du ange huvudserverns namn i stället för spegelns namn för @publisher-parametern för sp_addpullsubscription eller sp_addmergepullsubscription.
Om du aktiverar en publikationsdatabas i speglingen efter övergången till speglingen, är det instansnamn som lagras i systemtabeller namnet på speglingen. Använd då namnet på speglingen för parametern @publisher.
Anmärkning
I vissa fall, till exempel sp_addpublication, stöds parametern @publisher endast för icke-SQL Server Publishers. I dessa fall är det inte relevant för SQL Server-databasspegling.
Synkronisera en prenumeration i Management Studio efter en redundansväxling: synkronisera pull-prenumerationer från prenumeranten; och synkronisera push-prenumerationer från den aktiva utgivaren.
Replikeringsbeteende om spegling tas bort
Tänk på följande om databasspegling tas bort från en publicerad databas:
Om publikationsdatabasen på huvudkontot inte längre speglas fortsätter replikeringen att fungera oförändrad mot det ursprungliga huvudkontot.
Om publikationsdatabasen redundansväxlar från den primära till speglingen och speglingsrelationen därefter inaktiveras eller tas bort, kommer replikeringsagenter inte att fungera mot speglingen. Om den primära databasen har förlorats permanent, inaktivera och sedan konfigurerar om replikeringen med den spegling som anges som Publisher.
Om databasspegling tas bort helt är speglingsdatabasen i ett återställningstillstånd och måste återställas för att fungera. Hur den återställda databasen fungerar när det gäller replikering beror på om alternativet KEEP_REPLICATION har angetts. Det här alternativet tvingar återställningsåtgärden att bevara replikeringsinställningarna när du återställer en publicerad databas till en annan server än den där säkerhetskopian skapades. Använd endast alternativet KEEP_REPLICATION när den andra publikationsdatabasen inte är tillgänglig. Alternativet stöds inte om den andra publikationsdatabasen fortfarande är intakt och replikeras. Mer information om KEEP_REPLICATION finns i RESTORE (Transact-SQL).
Beteende för Log Reader Agent
I följande tabell beskrivs beteendet för Log Reader Agent för de olika driftslägena för databasspegling.
| Driftläge | Log Reader Agent-beteende om speglingen inte är tillgänglig |
|---|---|
| Högsäkerhetsläge med automatisk redundans | Om speglingen inte är tillgänglig sprider Log Reader Agent kommandon till distributionsdatabasen. Den primära servern kan inte växla över till spegelservern förrän spegelservern är online igen och har alla transaktioner från den primära servern. |
| Läge med höga prestanda | Om speglingen inte är tillgänglig körs huvuddatabasen exponerad (det vill säga ospeglad). Loggläsaragenten replikerar dock bara de transaktioner som är härdade i spegeln. Om tjänsten tvingas och speglingsservern tar på sig rollen som huvudserver, kommer Log Reader Agent att arbeta mot speglingsservern och börja plocka upp de nya transaktionerna. Tänk på att replikeringsfördröjningen ökar om spegeln kommer efter huvudenheten. |
| Högsäkerhetsläge utan automatisk failover | Alla bekräftade transaktioner är garanterade att skrivas till disk på spegeln. Loggläsaragenten replikerar endast de transaktioner som är härdade i speglingen. Om speglingen inte är tillgänglig tillåter huvudservern inte ytterligare aktivitet i databasen, därför har loggläsaragenten inga transaktioner att replikera. |
Se även
SQL Server-replikering
Loggleverans och replikering (SQL Server)