Dela via


Konfigurera databasspegling

gäller för:SQL Server

Not

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.

När speglingsdatabasen har förberetts (se Förbered en speglingsdatabas för spegling (SQL Server)) kan du upprätta en databasspeglingssession. Huvud-, speglings- och vittnesserverinstanserna måste vara separata serverinstanser, som ska finnas på separata värdsystem.

Viktig

Vi rekommenderar att du konfigurerar databasspegling under låg belastning eftersom konfiguration av spegling kan påverka prestanda.

Not

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 som huvudserverinstansen. Databasspegling är inte tillgängligt i varje utgåva av Microsoft SQL Server. En lista över funktioner som stöds av versionerna av SQL Server finns i funktioner som stöds av versionerna av SQL Server 2016. Dessutom rekommenderar vi starkt att de körs på jämförbara system som kan hantera identiska arbetsbelastningar.

Så här upprättar du en databasspeglingssession

  1. Skapa speglingsdatabasen. Mer information finns i Förbereda en speglingsdatabas för spegling (SQL Server).

  2. Konfigurera säkerhet på varje serverinstans.

    Varje serverinstans i en databasspeglingssession kräver en databasspeglingsslutpunkt. Om slutpunkten inte finns måste du skapa den.

    Notera

    Den form av autentisering som används för databasspegling av en serverinstans är en egenskap för dess databasspeglingsslutpunkt. Det finns två typer av transportsäkerhet för databasspegling: Windows-autentisering eller certifikatbaserad autentisering. Mer information finns i Transport Security för databasspegling och AlwaysOn-tillgänglighetsgrupper (SQL Server).

    På varje partnerserver kontrollerar du att det finns en ändpunkt för databasspegling. Oavsett hur många speglingssessioner som ska stödjas kan serverinstansen bara ha en databasspeglingsslutpunkt. Om du tänker använda den här serverinstansen exklusivt för partner i databasspeglingssessioner kan du tilldela rollen partner till slutpunkten (ROLE**=**PARTNER). Om du även tänker använda den här servern som vittnesserver i databasspeglingssessioner på andra servrar, tilldelar du rollen för slutpunkten till ALL.

    Om du vill köra en SET PARTNER-instruktion måste tillståndet för båda partnernas slutpunkter anges till STARTED.

    Om du vill veta om en serverinstans har en databasspeglingsslutpunkt och om du vill lära dig dess roll och tillstånd använder du följande Transact-SQL-instruktion på den instansen:

    SELECT role_desc, state_desc FROM sys.database_mirroring_endpoints  
    

    Viktig

    Konfigurera inte om en databasspeglingsslutpunkt som används. Om en databasspeglingsslutpunkt finns och redan används rekommenderar vi att du använder slutpunkten för varje session på serverinstansen. Om du släpper en slutpunkt som används kan slutpunkten startas om, vilket stör anslutningarna för de befintliga sessionerna, vilket kan verka vara ett fel till de andra serverinstanserna. Detta är särskilt viktigt i högsäkerhetsläge med automatisk redundans, där omkonfiguration av slutpunkten på en partner kan orsaka en redundansväxling. Om ett vittne har ställts in för en session kan det dessutom leda till att huvudservern för sessionen förlorar kvorum om du släpper slutpunkten för databasspeglingen. Om det inträffar tas databasen offline och dess användare kopplas från. Mer information finns i Kvorum: Hur ett vittne påverkar databastillgängligheten (Databasspegling).

    Om någon av partnerna saknar en slutpunkt kan du läsa Skapa en databasspeglingsslutpunkt för Windows-autentisering (Transact-SQL).

  3. Om serverinstanser körs under olika domänanvändarkonton kräver var och en en inloggning i den huvuddatabasen för de andra. Om inloggningen inte finns måste du skapa den. Mer information finns i Tillåt nätverksåtkomst till en databasspeglingsslutpunkt med hjälp av Windows-autentisering (SQL Server).

  4. Om du vill ange huvudservern som partner i speglingsdatabasen ansluter du till speglingsservern och utfärdar följande instruktion:

    ÄNDRA <DATABASNAMN> SET PARTNER =<SERVERNÄTVERKSADRESS>

    där <database_name> är namnet på databasen som ska speglas (det här namnet är detsamma för båda partnerna) och <server_network_address> är serverns nätverksadress för huvudservern.

    Syntaxen för en servernätverksadress är följande:

    TCP://<systemadress>:<port>

    där <systemadress> är en sträng som entydigt identifierar måldatorsystemet och <port> är det portnummer som används av speglingsslutpunkten för partnerserverinstansen. Mer information finns i Ange en servernätverksadress (databasspegling).

    På speglingsserverinstansen anger till exempel följande ALTER DATABASE-instruktion partnern som den ursprungliga huvudserverinstansen. Databasnamnet är AdventureWorks, systemadressen är DBSERVER1 namnet på partnerns system och porten som används av partnerns databasspeglingsslutpunkt är 7022:

    ALTER DATABASE AdventureWorks   
       SET PARTNER = 'TCP://DBSERVER1:7022'  
    

    Den här instruktionen förbereder speglingsservern för att bilda en session när den kontaktas av huvudservern.

  5. Om du vill ange speglingsservern som partner i huvuddatabasen ansluter du till huvudservern och utfärdar följande instruktion:

    ÄNDRA <databasen_namn> set partner =<servernätverksadress>

    Mer information finns i steg 4.

    På huvudserverinstansen anger till exempel följande ALTER DATABASE-instruktion partnern som den ursprungliga speglingsserverinstansen. Databasnamnet är AdventureWorks, systemadressen är DBSERVER2 namnet på partnerns system och porten som används av partnerns databasspeglingsslutpunkt är 7025:

    ALTER DATABASE AdventureWorks SET PARTNER = 'TCP://DBSERVER2:7022'  
    

    Om du anger den här instruktionen på huvudservern börjar databasspeglingssessionen.

  6. Som standard är en session inställd på fullständig transaktionssäkerhet (SAFETY är inställt på FULL), vilket startar sessionen i synkront högsäkerhetsläge utan automatisk redundans. Du kan konfigurera om sessionen så att den körs i högsäkerhetsläge med automatisk redundans eller i asynkront, högpresterande läge enligt följande:

Exempel

Anteckning

I följande exempel upprättas en databasspeglingssession mellan partner för en befintlig speglingsdatabas. Information om hur du skapar en speglingsdatabas finns i Förbereda en speglingsdatabas för spegling (SQL Server)=.

Exemplet visar de grundläggande stegen för att skapa en databasspeglingssession utan ett vittne. De två partnerna är standardserverinstanserna i två datorsystem (PARTNERHOST1 och PARTNERHOST5). De två partnerinstanserna kör samma Windows-domänanvändarkonto (MYDOMAIN\dbousername).

  1. På huvudserverinstansen (standardinstans på PARTNERHOST1) skapar du en slutpunkt som stöder alla roller med port 7022:

    --create an endpoint for this instance  
    CREATE ENDPOINT Endpoint_Mirroring  
        STATE=STARTED   
        AS TCP (LISTENER_PORT=7022)   
        FOR DATABASE_MIRRORING (ROLE=ALL)  
    GO  
    --Partners under same domain user; login already exists in master.  
    
  2. På speglingsserverinstansen (standardinstans på PARTNERHOST5) skapar du en slutpunkt som stöder alla roller med port 7022:

    --create an endpoint for this instance  
    CREATE ENDPOINT Endpoint_Mirroring  
        STATE=STARTED   
        AS TCP (LISTENER_PORT=7022)   
        FOR DATABASE_MIRRORING (ROLE=ALL)  
    GO  
    --Partners under same domain user; login already exists in master.  
    
  3. Säkerhetskopiera databasen på huvudserverinstansen (på PARTNERHOST1):

    BACKUP DATABASE AdventureWorks   
        TO DISK = 'C:\AdvWorks_dbmirror.bak'   
        WITH FORMAT  
    GO  
    
  4. Återställ databasen på speglingsserverinstansen (på PARTNERHOST5):

    RESTORE DATABASE AdventureWorks   
        FROM DISK = 'Z:\AdvWorks_dbmirror.bak'   
        WITH NORECOVERY  
    GO  
    
  5. När du har skapat den fullständiga säkerhetskopian av databasen måste du skapa en loggsäkerhetskopia på huvuddatabasen. Följande Transact-SQL-instruktion säkerhetskopierar till exempel loggen till samma fil som användes vid den föregående databassäkerhetskopian:

    BACKUP LOG AdventureWorks   
        TO DISK = 'C:\AdventureWorks.bak'   
    GO  
    
  6. Innan du kan börja spegla måste du använda den nödvändiga loggsäkerhetskopian (och eventuella efterföljande loggsäkerhetskopior).

    Följande Transact-SQL-instruktion återställer till exempel den första loggen från C:\AdventureWorks.bak:

    RESTORE LOG AdventureWorks   
        FROM DISK = 'C:\ AdventureWorks.bak'   
        WITH FILE=1, NORECOVERY  
    GO  
    
  7. På speglingsserverinstansen anger du serverinstansen på PARTNERHOST1 som partner (vilket gör den till den första huvudservern):

    USE master;  
    GO  
    ALTER DATABASE AdventureWorks   
        SET PARTNER =   
        'TCP://PARTNERHOST1:7022'  
    GO  
    

    Viktig

    Som standard körs en databasspeglingssession i synkront läge, vilket beror på att ha full transaktionssäkerhet (SAFETY är inställt på FULL). Om du vill att en session ska köras i asynkront läge med höga prestanda ställer du in SAFETY på AV. För mer information, se Driftlägen för databasspegling.

  8. På huvudserverinstansen anger du serverinstansen på PARTNERHOST5 som partner (vilket gör den till den första speglingsservern):

    USE master;  
    GO  
    ALTER DATABASE AdventureWorks   
        SET PARTNER = 'TCP://PARTNERHOST5:7022'  
    GO  
    
  9. Om du vill använda högsäkerhetsläge med automatisk redundans konfigurerar du vittnesserverinstansen. Mer information finns i Lägg till ett databasspeglingsvittne med Windows-autentisering (Transact-SQL).

Not

Ett fullständigt exempel som visar säkerhetskonfiguration, förbereder speglingsdatabasen, konfigurerar partner och lägger till ett vittne finns i Konfigurera databasspegling (SQL Server).

Se även

Att konfigurera Databasspegling (SQL Server)
ALTER DATABASE (Transact-SQL)
Tillåt nätverksåtkomst till en databasspeglingsslutpunkt med hjälp av Windows-autentisering (SQL Server)
Förbered en speglingsdatabas för spegling (SQL Server)
Skapa en databasspeglingsslutpunkt för Windows-autentisering (Transact-SQL)
databasspegling och loggöverföring (SQL Server)
Databasspegling (SQL Server)
Databasspegling och replikering (SQL Server)
Konfigurera databasspegling (SQL Server)
Ange en servernätverksadress (databasspegling)
Driftslägen för databasspegling