Dela via


Förbereda en sekundär databas för en AlwaysOn-tillgänglighetsgrupp

gäller för:SQL Server

I det här avsnittet beskrivs hur du förbereder en databas för en AlwaysOn-tillgänglighetsgrupp i SQL Server med hjälp av SQL Server Management Studio, Transact-SQL eller PowerShell. Det krävs två steg för att förbereda en databas:

  1. Återställa en ny databassäkerhetskopia av den primära databasen och efterföljande loggsäkerhetskopior till varje serverinstans som är värd för den sekundära repliken med hjälp av RESTORE WITH NORECOVERY
  2. Anslut den återställde databasen till tillgänglighetsgruppen.

Tips

Om du har en befintlig konfiguration för loggleverans kanske du kan konvertera den primära loggöverföringsdatabasen tillsammans med en eller flera av dess sekundära databaser till en primär replik för tillgänglighetsgruppen och en eller flera sekundära repliker. För mer information, se förutsättningar för migrering från *log shipping* till Always On-tillgänglighetsgrupper (SQL Server).

Krav och begränsningar

  • Kontrollera att systemet där du planerar att placera databasen har en diskenhet med tillräckligt med utrymme för de sekundära databaserna.

  • Namnet på den sekundära databasen måste vara samma som namnet på den primära databasen.

  • Använd RESTORE WITH NORECOVERY för varje återställningsåtgärd.

  • Om den sekundära databasen måste finnas på en annan filsökväg (inklusive enhetsbeteckningen) än den primära databasen måste återställningskommandot också använda alternativet WITH MOVE för var och en av databasfilerna för att ange dem till sökvägen till den sekundära databasen.

  • Om du återställer databasfilgruppen efter filgrupp måste du återställa hela databasen.

  • När du har återställt databasen måste du återställa (WITH NORECOVERY) varje loggsäkerhetskopia som skapats sedan den senaste återställningen av datasäkerhetskopian.

Rekommendationer

  • På fristående instanser av SQL Server rekommenderar vi att filsökvägen (inklusive enhetsbeteckningen) för en viss sekundär databas om möjligt är identisk med sökvägen till motsvarande primära databas. Detta beror på att om du flyttar databasfilerna när du skapar en sekundär databas kan en senare tilläggsfilåtgärd misslyckas på den sekundära databasen och göra att den sekundära databasen pausas.

  • Innan du förbereder dina sekundära databaser rekommenderar vi starkt att du pausar schemalagda loggsäkerhetskopior på databaserna i tillgänglighetsgruppen tills initieringen av sekundära repliker har slutförts.

Säkerhet

När en databas säkerhetskopieras är TRUSTWORTHY-databasegenskapen inställd på AV. Därför är TRUSTWORTHY alltid AV på en nyligen återställd databas.

Behörigheter

BEHÖRIGHETER FÖR SÄKERHETSKOPIERA DATABAS OCH SÄKERHETSKOPIERA LOGG tilldelas som standard till medlemmar i den fasta serverrollen sysadmin och de fasta databasrollerna db_owner och db_backupoperator. Mer information finns i BACKUP (Transact-SQL).

När databasen som återställs inte finns på serverinstansen kräver RESTORE-instruktionen CREATE DATABASE-behörigheter. Mer information finns i RESTORE (Transact-SQL).

Använda SQL Server Management Studio

Anteckning

Om sökvägarna för säkerhetskopiering och återställning av filer är identiska mellan den serverinstans som är värd för den primära repliken och varje instans som är värd för en sekundär replik, bör du kunna skapa sekundära replikdatabaser med guiden Ny tillgänglighetsgrupp, Guiden Lägg till replik i tillgänglighetsgruppeller Lägg till databas i tillgänglighetsgruppsguiden.

Förbered en sekundär databas

  1. Om du inte redan har en ny databassäkerhetskopia av den primära databasen skapar du en ny fullständig eller differentiell databassäkerhetskopia. Vi rekommenderar att du placerar den här säkerhetskopian och eventuella efterföljande loggsäkerhetskopior på den rekommenderade nätverksresursen.

  2. Skapa minst en ny loggsäkerhetskopia av den primära databasen.

Not

En säkerhetskopia av transaktionsloggen kanske inte krävs om en säkerhetskopia av transaktionsloggen inte tidigare har registrerats på databasen i den primära repliken. Microsoft rekommenderar att du säkerhetskopierar en transaktionslogg varje gång en ny databas ansluts till tillgänglighetsgruppen.

  1. På den serverinstans som är värd för den sekundära repliken återställer du den fullständiga databassäkerhetskopian av den primära databasen (och eventuellt en differentiell säkerhetskopia) följt av eventuella efterföljande loggsäkerhetskopior.

    På sidan ÅTERSTÄLL DATABASalternativ väljer du Lämna databasen inte i drift och återställ inte de ogenomförda transaktionerna. Ytterligare transaktionsloggar kan återställas. (ÅTERSTÄLL MED NORECOVERY).

    Om filsökvägarna för den primära databasen och den sekundära databasen skiljer sig åt, till exempel om den primära databasen finns på enheten "F:" men serverinstansen som är värd för den sekundära repliken saknar en F: -enhet, inkluderar du alternativet FLYTTA i WITH-satsen.

  2. För att slutföra konfigurationen av den sekundära databasen måste du ansluta den sekundära databasen till tillgänglighetsgruppen. Mer information finns i Ansluta en sekundär databas till en tillgänglighetsgrupp (SQL Server).

Anteckning

Information om hur du utför dessa säkerhetskopierings- och återställningsåtgärder finns i Relaterade säkerhetskopierings- och återställningsuppgifter, senare i det här avsnittet.

Relaterade säkerhetskopierings- och återställningsuppgifter

Skapa en databassäkerhetskopia

Skapa en loggsäkerhetskopia

Återställ säkerhetskopieringar

Använda Transact-SQL

Förbered en sekundär databas

Obs

Ett exempel på den här proceduren finns i Exempel (Transact-SQL), tidigare i det här avsnittet.

  1. Om du inte har en fullständig säkerhetskopia av den primära databasen nyligen ansluter du till den serverinstans som är värd för den primära repliken och skapar en fullständig säkerhetskopia av databasen. Vi rekommenderar att du placerar den här säkerhetskopian och eventuella efterföljande loggsäkerhetskopior på den rekommenderade nätverksresursen.

  2. På serverinstansen som är värd för den sekundära repliken återställer du den fullständiga databassäkerhetskopian av den primära databasen (och eventuellt en differentiell säkerhetskopia) följt av alla efterföljande loggsäkerhetskopior. Använd WITH NORECOVERY för varje återställningsåtgärd.

    Om filsökvägarna för den primära databasen och den sekundära databasen skiljer sig åt, till exempel om den primära databasen finns på enheten "F:" men serverinstansen som är värd för den sekundära repliken saknar en F: -enhet, inkluderar du alternativet FLYTTA i WITH-satsen.

  3. Om några loggsäkerhetskopior har gjorts på den primära databasen sedan den nödvändiga loggsäkerhetskopian måste du också kopiera dessa till den serverinstans som är värd för den sekundära repliken och tillämpa var och en av dessa loggsäkerhetskopior på den sekundära databasen, från och med den tidigaste och alltid använda RESTORE WITH NORECOVERY.

    Obs

    Det skulle inte finnas någon loggsäkerhetskopia om den primära databasen just har skapats och ingen loggsäkerhetskopia har gjorts ännu eller om återställningsmodellen just har ändrats från enkel till fullständig.

  4. För att slutföra konfigurationen av den sekundära databasen måste du ansluta den sekundära databasen till tillgänglighetsgruppen. Mer information finns i Ansluta en sekundär databas till en tillgänglighetsgrupp (SQL Server).

Obs

Information om hur du utför dessa säkerhetskopierings- och återställningsåtgärder finns i Relaterade säkerhetskopierings- och återställningsuppgiftersenare i det här avsnittet.

Transact-SQL exempel

I följande exempel förbereds en sekundär databas. I det här exemplet används AdventureWorks2022 exempeldatabas, som använder den enkla återställningsmodellen som standard.

  1. Om du vill använda AdventureWorks2022-databasen ändrar du den så att den använder den fullständiga återställningsmodellen:

    USE master;  
    GO  
    ALTER DATABASE MyDB1   
    SET RECOVERY FULL;  
    GO  
    
  2. När du har modifierat databasens återställningsmodell från SIMPLE till FULL skapar du en fullständig säkerhetskopia som kan användas för att skapa den sekundära databasen. Eftersom återställningsmodellen just har ändrats anges alternativet WITH FORMAT för att skapa en ny medieuppsättning. Det här är användbart för att separera säkerhetskopiorna under den fullständiga återställningsmodellen från tidigare säkerhetskopior som gjorts under den enkla återställningsmodellen. I det här exemplet skapas säkerhetskopieringsfilen (C:\AdventureWorks2022.bak) på samma enhet som databasen.

    Anteckning

    För en produktionsdatabas bör du alltid säkerhetskopiera till en separat enhet.

    På den serverinstans som är värd för den primära repliken (INSTANCE01) skapar du en fullständig säkerhetskopia av den primära databasen enligt följande:

    BACKUP DATABASE MyDB1   
        TO DISK = 'C:\MyDB1.bak'   
        WITH FORMAT  
    GO  
    
  3. Kopiera den fullständiga säkerhetskopian till den serverinstans som är värd för den sekundära repliken.

  4. Återställ den fullständiga säkerhetskopian med HJÄLP av RESTORE WITH NORECOVERY till den serverinstans som är värd för den sekundära repliken. Återställningskommandot beror på om sökvägarna för primära och sekundära databaser är identiska.

    • Om sökvägarna är identiska:

      På den dator som är värd för den sekundära repliken återställer du den fullständiga säkerhetskopian på följande sätt:

      RESTORE DATABASE MyDB1   
          FROM DISK = 'C:\MyDB1.bak'   
          WITH NORECOVERY  
      GO  
      
    • Om sökvägarna skiljer sig åt:

      Om sökvägen till den sekundära databasen skiljer sig från sökvägen till den primära databasen (till exempel skiljer sig deras enhetsbeteckningar åt) kräver skapandet av den sekundära databasen att återställningsåtgärden innehåller en MOVE-sats.

      Viktig

      Om sökvägsnamnen för de primära och sekundära databaserna skiljer sig åt kan du inte lägga till en fil. Det beror på att när du tar emot loggen för åtgärden lägg till fil försöker serverinstansen av den sekundära repliken placera den nya filen i samma sökväg som den primära databasen använder.

      Följande kommando återställer till exempel en säkerhetskopia av en primär databas som finns i datakatalogen för standardinstansen av SQL Server, C:\Program Files\Microsoft SQL Server\MSSQL12. MSSQLSERVER\MSSQL\DATA. Återställningsdatabasåtgärden måste flytta databasen till datakatalogen för en fjärrinstans av SQL Server med namnet (Always On1), som är värd för den sekundära repliken på en annan klusternod. Där återställs data- och loggfilerna till C:\Program Files\Microsoft SQL Server\MSSQL13. Always On1\MSSQL\DATA katalog . Återställningsåtgärden använder WITH NORECOVERY för att lämna den sekundära databasen i den återställande databasen.

      RESTORE DATABASE MyDB1  
        FROM DISK='C:\MyDB1.bak'  
       WITH NORECOVERY,   
          MOVE 'MyDB1_Data' TO   
           'C:\Program Files\Microsoft SQL Server\MSSQL13.Always On1\MSSQL\DATA\MyDB1_Data.mdf',   
          MOVE 'MyDB1_Log' TO  
           'C:\Program Files\Microsoft SQL Server\MSSQL13.Always On1\MSSQL\DATA\MyDB1_Data.ldf';  
      GO  
      
  5. När du har återställt den fullständiga säkerhetskopian måste du skapa en loggsäkerhetskopia på den primära databasen. Följande Transact-SQL-instruktion säkerhetskopierar till exempel loggen till en säkerhetskopia med namnet E:\MyDB1_log.trn:

    BACKUP LOG MyDB1   
      TO DISK = 'E:\MyDB1_log.trn'   
    GO  
    
  6. Innan du kan ansluta databasen till den sekundära repliken 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:\MyDB1.trn:

    RESTORE LOG MyDB1   
      FROM DISK = 'E:\MyDB1_log.trn'   
        WITH FILE=1, NORECOVERY  
    GO  
    
  7. Om det sker ytterligare loggsäkerhetskopior innan databasen ansluter till den sekundära repliken måste du också återställa alla dessa loggsäkerhetskopior i följd till den serverinstans som är värd för den sekundära repliken med HJÄLP av RESTORE WITH NORECOVERY.

    Följande Transact-SQL-instruktion återställer till exempel ytterligare två loggar från E:\MyDB1_log.trn:

    RESTORE LOG MyDB1   
      FROM DISK = 'E:\MyDB1_log.trn'   
        WITH FILE=2, NORECOVERY  
    GO  
    RESTORE LOG MyDB1   
      FROM DISK = 'E:\MyDB1_log.trn'   
        WITH FILE=3, NORECOVERY  
    GO  
    

Använda PowerShell

Förbered en sekundär databas

  1. Om du behöver skapa en säkerhetskopia av den primära databasen nyligen ändrar du katalogen (cd) till den serverinstans som är värd för den primära repliken.

  2. Använd cmdleten Backup-SqlDatabase för att skapa var och en av säkerhetskopiorna.

  3. Ändra katalog (cd) till den serverinstans som är värd för den sekundära repliken.

  4. Om du vill återställa databas- och loggsäkerhetskopiorna för varje primär databas använder du cmdleten restore-SqlDatabase och anger parametern NoRecovery restore. Om filsökvägarna skiljer sig åt mellan datorerna som är värdar för den primära repliken och den sekundära målrepliken, använder du även parametern RelocateFile återställ.

    Obs

    Om du vill visa syntaxen för en cmdlet använder du cmdleten Get-Help i SQL Server PowerShell-miljön. Mer information finns i Hämta hjälp för SQL Server PowerShell.

  5. För att slutföra konfigurationen av den sekundära databasen måste du ansluta den till tillgänglighetsgruppen. Mer information finns i Ansluta en sekundär databas till en tillgänglighetsgrupp (SQL Server).

Konfigurera och använda SQL Server PowerShell-providern

Exempel på skript och kommando för säkerhetskopiering och återställning

Följande PowerShell-kommandon säkerhetskopierar en fullständig databassäkerhetskopia och transaktionslogg till en nätverksresurs och återställer dessa säkerhetskopior från den resursen. Det här exemplet förutsätter att den filsökväg som databasen återställs till är samma som den filsökväg som databasen säkerhetskopierades till.

# Create database backup  
Backup-SqlDatabase -Database "MyDB1" -BackupFile "\\share\backups\MyDB1.bak" -ServerInstance "SourceMachine\Instance"  
# Create log backup  
Backup-SqlDatabase -Database "MyDB1" -BackupAction "Log" -BackupFile "\\share\backups\MyDB1.trn" -ServerInstance "SourceMachine\Instance"  
# Restore database backup   
Restore-SqlDatabase -Database "MyDB1" -BackupFile "\\share\backups\MyDB1.bak" -NoRecovery -ServerInstance "DestinationMachine\Instance"  
# Restore log backup   
Restore-SqlDatabase -Database "MyDB1" -BackupFile "\\share\backups\MyDB1.trn" -RestoreAction "Log" -NoRecovery -ServerInstance "DestinationMachine\Instance"  
  

Nästa steg

Slutför konfigurationen av den sekundära databasen genom att ansluta den nyligen återställda databasen till tillgänglighetsgruppen. Mer information finns i Ansluta en sekundär databas till en tillgänglighetsgrupp (SQL Server).

Se även

översikt över AlwaysOn-tillgänglighetsgrupper (SQL Server)
BACKUP (Transact-SQL)
RESTORE-argument (Transact-SQL)
RESTORE (Transact-SQL)
Felsöka en misslyckad Add-File åtgärd (AlwaysOn-tillgänglighetsgrupper)