Dela via


Databasspegling (SQL Server)

Gäller för:SQL Server

Anmärkning

Den här funktionen tas bort i en framtida version av SQL Server. Undvik att använda den här funktionen i nytt utvecklingsarbete och planera att ändra program som för närvarande använder den här funktionen. Använd AlwaysOn-tillgänglighetsgrupper i stället. Databasspegling i SQL Server är en distinkt teknik från Microsoft Fabric Database-spegling.

Databasspegling är en lösning för att öka tillgängligheten för en SQL Server-databas. Spegling implementeras per databas och fungerar endast med databaser som använder den fullständiga återställningsmodellen.

Viktigt!

Information om stöd för databasspegling, begränsningar, krav, rekommendationer för att konfigurera partnerservrar och rekommendationer för distribution av databasspegling finns i Krav, begränsningar och rekommendationer för databasspegling.

Fördelar med databasspegling

Databasspegling är en enkel strategi som erbjuder följande fördelar:

  • Ökar tillgängligheten för en databas.

    I händelse av en katastrof, i högsäkerhetsläge med automatisk redundansväxling, gör redundansväxlingen snabbt att standby-kopian av databasen är online (utan dataförlust). I de andra driftlägena har databasadministratören alternativet att tvinga tjänsten (med möjlig dataförlust) till väntelägeskopian av databasen. Mer information finns i Rollväxling senare i det här avsnittet.

  • Ökar dataskyddet.

    Databasspegling ger fullständig eller nästan fullständig redundans av data, beroende på om driftläget är högsäkerhet eller högpresterande. Mer information finns i Driftlägen senare i det här avsnittet.

    En databasspeglingspartner som körs på SQL Server 2008 (10.0.x) Enterprise eller senare versioner försöker automatiskt lösa vissa typer av fel som förhindrar läsning av en datasida. Partnern som inte kan läsa en sida begär en ny kopia från den andra partnern. Om den här begäran lyckas ersätts den oläsliga sidan av kopian, vilket vanligtvis löser felet. Mer information finns i Automatisk sidreparation (tillgänglighetsgrupper: Databasspegling).

  • Förbättrar tillgängligheten för produktionsdatabasen under uppgraderingar.

    För att minimera stilleståndstiden för en speglad databas kan du sekventiellt uppgradera instanserna av SQL Server som är värd för redundanspartners. Detta medför bara stilleståndstid för en enda redundansväxling. Den här typen av uppgradering kallas löpande uppgradering. Mer information finns i Uppgradera speglade instanser.

Villkor och definitioner för databasspegling

Automatisk redundans

När huvudservern blir otillgänglig tar speglingsservern över huvudserverns roll och gör att dess kopia av databasen är online som huvuddatabas.

Redundanspartner

De två serverinstanserna (huvudservern eller speglingsservern) som fungerar som rollväxlingspartner för en speglad databas.

Tvingad tjänst

En redundans som initierades av databasägaren när huvudservern som överför tjänsten till speglingsdatabasen misslyckas när den är i ett okänt tillstånd.

Läge med höga prestanda

Databasspeglingssessionen fungerar asynkront och använder endast huvudservern och speglingsservern. Den enda formen av rollväxling är tvingad tjänst (med möjlig dataförlust).

Högsäkerhetsläge

Databasspeglingssessionen fungerar synkront och använder eventuellt ett vittne, samt huvudservern och speglingsservern.

Manuell redundans

En redundans som initieras av databasägaren, medan huvudservern fortfarande körs, som överför tjänsten från huvuddatabasen till speglingsdatabasen medan de är i synkroniserat tillstånd.

Speglingsdatabas

Kopian av databasen som vanligtvis är helt synkroniserad med huvuddatabasen.

Speglingsserver

I en databasspeglingskonfiguration finns den serverinstans där speglingsdatabasen finns.

Huvuddatabas

I databasspegling används en skrivskyddad databas vars transaktionsloggposter tillämpas på en skrivskyddad kopia av databasen (en speglingsdatabas).

Huvudserver

I databasspegling är partnern vars databas för närvarande är huvuddatabasen.

Gör om kön

Mottagna transaktionsloggposter som väntar på disken på en speglingsserver.

Role

Huvudservern och speglingsservern utför kompletterande huvud- och speglingsroller. Du kan också utföra rollen vittne av en tredje serverinstans.

Rollväxling

Speglingen tar över huvudrollen.

Skicka kö

Avaktiverade transaktionsloggposter som har ackumulerats på loggdisken på huvudservern.

Session

Relationen som inträffar under databasspegling mellan huvudservern, speglingsservern och vittnesservern (om den finns).

När en speglingssession startar eller återupptas skickas processen med vilken loggposter för huvuddatabasen som har ackumulerats på huvudservern till speglingsservern, som skriver loggposterna till disken så snabbt som möjligt för att komma ikapp huvudservern.

Transaktionssäkerhet

En speglingsspecifik databasegenskap som avgör om en databasspeglingssession fungerar synkront eller asynkront. Det finns två säkerhetsnivåer: FULL och OFF.

Witness

För användning endast med högsäkerhetsläge, en valfri instans av SQL Server som gör det möjligt för speglingsservern att känna igen när en automatisk redundansväxling ska initieras. Till skillnad från de två redundanspartnerna betjänar vittnet inte databasen. Stöd för automatisk redundans är vittnets enda roll.

Översikt över databasspegling

Databasspegling underhåller två kopior av en enkel databas som finns på olika instanser av SQL Server Database Engine. Dessa instanser finns vanligtvis på datorer på olika platser. När databasspeglingen startar initierar en instans en relation, som kallas en databasspeglingssession, med en annan instans.

En serverinstans hanterar databasen till klienter ( huvudservern). Den andra instansen fungerar som en frekvent eller varm väntelägesserver ( speglingsservern), beroende på konfigurationen och tillståndet för speglingssessionen. När en databasspeglingssession synkroniseras ger databasspegling en server med frekvent vänteläge som stöder snabb redundans utan förlust av data från checkade transaktioner. När sessionen inte synkroniseras är speglingsservern vanligtvis tillgänglig som en varm väntelägesserver (med möjlig dataförlust).

Huvudservrarna och speglingsservrarna kommunicerar och samarbetar som partner i en databasspeglingssession. De två partnerna utför kompletterande roller i sessionen: huvudrollen och speglingsrollen. Vid en viss tidpunkt utför en partner huvudrollen och den andra partnern utför speglingsrollen. Varje partner beskrivs som att äga sin nuvarande roll. Den partner som äger huvudrollen kallas huvudservern och dess kopia av databasen är den aktuella huvuddatabasen. Partnern som äger speglingsrollen kallas speglingsservern och dess kopia av databasen är den aktuella speglingsdatabasen. När databasspegling distribueras i en produktionsmiljö är huvuddatabasen produktionsdatabasen.

Databasspegling innebär att du gör om varje infognings -, uppdaterings- och borttagningsåtgärd som sker på huvuddatabasen till speglingsdatabasen så snabbt som möjligt. Om du gör om utförs genom att skicka en ström av aktiva transaktionsloggposter till speglingsservern, som tillämpar loggposter på speglingsdatabasen, i följd, så snabbt som möjligt. Till skillnad från replikering, som fungerar på den logiska nivån, fungerar databasspegling på nivån för den fysiska loggposten. Från och med SQL Server 2008 (10.0.x) komprimerar huvudservern dataströmmen för transaktionsloggposter innan den skickas till speglingsservern. Loggkomprimering sker i alla speglingssessioner.

Anmärkning

En viss serverinstans kan delta i flera samtidiga databasspeglingssessioner med samma eller olika partner. En serverinstans kan vara en partner i vissa sessioner och ett vittne i andra sessioner. Speglingsserverinstansen måste köra samma version av SQL Server.

I det här avsnittet:

Driftlägen

En databasspeglingssession körs med synkron eller asynkron åtgärd. Under asynkron åtgärd checkar transaktionerna in utan att vänta på att speglingsservern ska skriva loggen till disken, vilket maximerar prestandan. Under synkron åtgärd checkas en transaktion in på båda partnerna, men på bekostnad av ökad transaktionsfördröjning.

Det finns två speglingsdriftslägen. Ett av dem stöder högsäkerhetsläge synkron drift. När en session startar synkroniserar speglingsservern speglingsdatabasen med huvuddatabasen så snabbt som möjligt under högsäkerhetsläge. Så snart databaserna synkroniseras genomförs en transaktion på båda partnerna, på bekostnad av ökad transaktionsfördröjning.

Det andra driftsläget, högpresterande läge, körs asynkront. Speglingsservern försöker hålla jämna steg med loggposterna som skickas av huvudservern. Speglingsdatabasen kan ligga något efter huvuddatabasen. Men vanligtvis är klyftan mellan databaserna liten. Gapet kan dock bli betydande om huvudservern är hårt belastad eller om speglingsserverns system är överbelastat.

När huvudservern skickar en loggpost till speglingsservern skickar huvudservern en bekräftelse till klienten i läget med höga prestanda. Den väntar inte på en bekräftelse från speglingsservern. Det innebär att transaktioner checkar in utan att vänta på att speglingsservern ska skriva loggen till disken. En sådan asynkron åtgärd gör att huvudservern kan köras med minsta transaktionsfördröjning, med risk för viss dataförlust.

Alla databasspeglingssessioner stöder endast en huvudserver och en speglingsserver. Den här konfigurationen visas i följande bild.

Skärmbild av Partner i en databasspeglingssession.

Högsäkerhetsläge med automatisk redundans kräver en tredje serverinstans, känd som ett vittne. Till skillnad från de två partnerna betjänar vittnet inte databasen. Vittnet stöder automatisk redundans genom att kontrollera om huvudservern är igång och fungerar. Speglingsservern initierar endast automatisk redundans om speglingen och vittnet förblir anslutna till varandra efter att båda har kopplats från huvudservern.

Följande bild visar en konfiguration som innehåller ett vittne.

Skärmbild av en speglingssession som innehåller ett vittne.

Mer information finns i Rollväxling senare i det här avsnittet.

Anmärkning

Att upprätta en ny speglingssession eller lägga till ett vittne i en befintlig speglingskonfiguration kräver att alla inblandade serverinstanser kör samma version av SQL Server. Men när du uppgraderar till SQL Server 2008 (10.0.x) eller en senare version kan versionerna av de berörda instanserna variera. Mer information finns i Uppgradera speglade instanser.

Transaktionssäkerhet och driftlägen

Om ett driftsläge är asynkront eller synkront beror på transaktionssäkerhetsinställningen. Om du uteslutande använder SQL Server Management Studio för att konfigurera databasspegling konfigureras transaktionssäkerhetsinställningarna automatiskt när du väljer åtgärdsläget.

Om du använder Transact-SQL för att konfigurera databasspegling måste du förstå hur du ställer in transaktionssäkerhet. Transaktionssäkerheten styrs av SAFETY -instruktionens ALTER DATABASE egenskap. I en databas som speglas SAFETY är antingen FULL eller OFF.

  • Om alternativet SAFETY är inställt på FULL är databasspeglingsåtgärden synkron efter den inledande synkroniseringsfasen. Om ett vittne anges i högsäkerhetsläge stöder sessionen automatisk redundans.

  • Om alternativet SAFETY är inställt på OFFär databasspeglingsåtgärden asynkron. Sessionen körs i högprestandaläge och alternativet WITNESS bör också vara OFF.

Mer information finns i Driftlägen för databasspegling.

Rollväxling

Inom ramen för en databasspeglingssession är huvud- och speglingsrollerna vanligtvis utbytbara i en process som kallas rollväxling. Rollväxling innebär överföring av huvudrollen till speglingsservern. Vid rollväxling fungerar speglingsservern som redundanspartner för huvudservern. När en rollväxel inträffar tar speglingsservern över huvudrollen och gör att dess kopia av databasen är online som den nya huvuddatabasen. Den tidigare huvudservern, om den är tillgänglig, antar speglingsrollen och dess databas blir den nya speglingsdatabasen. Rollerna kan eventuellt växla fram och tillbaka upprepade gånger.

Följande tre former av rollväxling finns.

  • Automatisk redundans

    Detta kräver högsäkerhetsläge och närvaro av speglingsservern och ett vittne. Databasen måste redan vara synkroniserad och vittnet måste vara anslutet till speglingsservern.

    Vittnets roll är att kontrollera om en viss partnerserver är igång och fungerar. Om speglingsservern förlorar sin anslutning till huvudservern men vittnet fortfarande är ansluten till huvudservern initierar inte speglingsservern någon redundansväxling. Mer information finns i Databasspeglingsvittne.

  • Manuell redundans

    Detta kräver högsäkerhetsläge. Partner måste vara anslutna till varandra och databasen måste redan synkroniseras.

  • Tvingad tjänst (med möjlig dataförlust)

    Under högprestandaläge och högsäkerhetsläge utan automatisk redundans är det möjligt att tvinga tjänsten om huvudservern har misslyckats och speglingsservern är tillgänglig.

    Viktigt!

    Högprestandaläget är avsett att köras utan ett vittne. Men om ett vittne finns kräver tvingad tjänst att vittnet är anslutet till speglingsservern.

När den nya huvuddatabasen är online kan klientprogrammen snabbt återställas genom att återansluta till databasen i alla scenarier med rollväxling.

Samtidiga sessioner

En viss serverinstans kan delta i flera samtidiga databasspeglingssessioner (en gång per speglad databas) med samma eller olika serverinstanser. Ofta fungerar en serverinstans uteslutande som en partner eller ett vittne i alla dess databasspeglingssessioner. Men eftersom varje session är oberoende av de andra sessionerna kan en serverinstans fungera som partner i vissa sessioner och som vittne i andra sessioner. Tänk dig till exempel följande fyra sessioner bland tre serverinstanser (SSInstance_1, SSInstance_2och SSInstance_3). Varje serverinstans fungerar som partner i vissa sessioner och som vittne i andra:

Serverinstans Session för databas A Session för databas B Session för databas C Session för databas D
SSInstance_1 Witness Samarbetspartner Samarbetspartner Samarbetspartner
SSInstance_2 Samarbetspartner Witness Samarbetspartner Samarbetspartner
SSInstance_3 Samarbetspartner Samarbetspartner Witness Witness

Följande bild illustrerar två serverinstanser som deltar som partner tillsammans i två speglingssessioner. En session är avsedd för en databas med namnet Db_1 och den andra sessionen är för en databas med namnet Db_2.

Skärmbild av Två serverinstanser i två samtidiga sessioner.

Var och en av databaserna är oberoende av de andra. En serverinstans kan till exempel till en början vara speglingsservern för två databaser. Om en av dessa databaser redundansväxlar blir serverinstansen huvudservern för redundansdatabasen medan speglingsservern för den andra databasen finns kvar.

Ett annat exempel är en serverinstans som är huvudserver för två eller flera databaser som körs i högsäkerhetsläge med automatisk redundans. Om serverinstansen misslyckas redundansväxlar alla databaser automatiskt till sina respektive speglingsdatabaser.

När du konfigurerar en serverinstans så att den fungerar både som partner och ett vittne måste du se till att databasspeglingsslutpunkten stöder båda rollerna (mer information finns i Databasens speglingsslutpunkt (SQL Server)). Se också till att systemet har tillräckligt med resurser för att minska resurskonkurrationen.

Anmärkning

Eftersom speglade databaser är oberoende av varandra kan databaser inte redundansväxla som en grupp.

Klientanslutningar

Stöd för klientanslutning för databasspeglingssessioner tillhandahålls av Microsoft .NET Data Provider för SQL Server. Mer information finns i Ansluta klienter till en databasspeglingssession (SQL Server).

Effekten av att pausa en session i huvudtransaktionsloggen

Databasägaren kan när som helst pausa en session. Pausning bevarar sessionstillståndet när speglingen tas bort. När en session pausas skickar huvudservern inga nya loggposter till speglingsservern. Alla dessa poster förblir aktiva och ackumuleras i transaktionsloggen för huvuddatabasen. Så länge en databasspeglingssession förblir pausad kan transaktionsloggen inte trunkeras. Om databasspeglingssessionen pausas för länge kan loggen därför fyllas på.

Mer information finns i Pausa och återuppta databasspegling (SQL Server).

Konfigurera databasspeglingssession

Innan en speglingssession kan börja måste databasägaren eller systemadministratören skapa speglingsdatabasen, konfigurera slutpunkter och inloggningar och i vissa fall skapa och konfigurera certifikat. Mer information finns i Konfigurera databasspegling (SQL Server).

Samverkan och samexistens med andra databasmotorfunktioner

Databasspegling kan användas med följande funktioner eller komponenter i SQL Server.

I det här avsnittet

Krav, begränsningar och rekommendationer för databasspegling Beskriver förutsättningarna och rekommendationerna för att konfigurera databasspegling.

Driftlägen för databasspegling Innehåller information om synkrona och asynkrona driftlägen för databasspeglingssessioner och om hur du byter partnerroller under en databasspeglingssession.

Databasspeglingsvittne Beskriver ett vittnes roll i databasspegling, hur du använder ett enda vittne i flera speglingssessioner, programvaru- och maskinvarurekommendationer för vittnen och vittnets roll vid automatisk redundansväxling. Den innehåller också information om hur du lägger till eller tar bort ett vittne.

Rollväxling under en databasspeglingssession (SQL Server) Innehåller information om hur du byter partnerroller under en databasspeglingssession, inklusive automatisk redundans, manuell redundans och tvingad tjänst (med möjlig dataförlust). Innehåller också information om hur du beräknar avbrott i tjänsten under rollväxling.

Möjliga fel vid databasspegling Diskuterar fysiska problem, operativsystem och SQL Server-problem, inklusive hårda fel och mjuka fel, som kan orsaka ett fel i en databasspeglingssession. Beskriver hur timeout-mekanismen för spegling svarar på mjuka fel.

Databasens speglingsslutpunkt (SQL Server) Beskriver hur databasens speglingsslutpunkt fungerar.

Konfigurera databasspegling (SQL Server) Innehåller avsnitt om förutsättningar, rekommendationer och steg för att konfigurera databasspegling.

Ansluta klienter till en databasspeglingssession (SQL Server) Innehåller ämnen som beskriver attribut för klientanslutningssträngar och algoritmer för att ansluta och återansluta en klient till en speglad databas.

Pausa och återuppta databasspegling (SQL Server) Diskuterar vad som händer när databasspegling pausas, inklusive påverkan på transaktionsloggens trunkering, och innehåller beskrivningar om hur du pausar och återupptar databasspegling.

Ta bort databasspegling (SQL Server) Diskuterar effekten av att ta bort spegling och innehåller beskrivningar om hur du avslutar en session

Övervaka databasspegling (SQL Server) Innehåller information om hur du använder databasspeglingsövervakaren eller de lagrade procedurerna dbmmonitor för att övervaka databasspegling eller sessioner.

Konfigurationsuppgifter

Använda SQL Server Management Studio

Använda Transact-SQL

Använda Transact-SQL eller SQL Server Management Studio

Administrativa uppgifter

Transact-SQL

SQL Server Management Studio