By: Atif Shehzad | Uppdaterad: 2009-06-15 | Kommentarer (4) | Relaterad: Mer > Säkerhetskopiering

Problem

Jag har implementerat en säkerhetskopieringsplan för mina SQL Server-databaser. Jag tar en daglig fullständig säkerhetskopiering som stöds av differentiella säkerhetskopior varje timme. En återställningsplan dokumenteras utifrån denna säkerhetskopieringsplan tillsammans med plats och tid för de säkerhetskopior som nämns i planen. Ofta måste jag uppdatera test- eller utvecklingsservern med en ny kopia av produktionsdatabasen. För detta ändamål tar jag en fullständig säkerhetskopia av den nödvändiga databasen. Problemet är att sådana tillfälliga säkerhetskopior avbryter min planerade återställningssekvens i händelse av en nödvändig återställning. Finns det något sätt att se till att mina ad hoc-backuper inte avbryter sekvensen i min säkerhetskopieringsplan?

Lösning

Troligtvis har vi i SQL Server 2005 och framåt ett alternativ för säkerhetskopiering för en sådan situation. Detta säkerhetskopieringsalternativ är känt som Copy Only-backuper. Detta alternativ är specifikt för att skapa en ad hoc-backup som inte kommer att störa den planerade återställningssekvensen för databasen.

Copy Only-backuper kan användas för att skapa en fullständig backup eller en backup av transaktionsloggen. Det här alternativet är inte implementerat för differentiella säkerhetskopior. I praktiska scenarier behöver du sällan skapa en Copy Only-loggbackup, men alternativet Copy Only kan ofta användas vid fullständiga säkerhetskopior.

Trots att alternativet Copy Only är tillgängligt för SQL Server 2005 finns det ingen möjlighet att skapa dem med hjälp av SSMS i SQL 2005. Om du har SSMS 2008 kan du använda GUI eller så måste du använda ett T-SQL-meddelande för att skapa Copy Only-backuper.

Först ska vi titta på hur detta kan göras med SSMS 2008 för att skapa Copy Onlybackup

  • Gå till backupdatabasfönstret som du skulle göra för en normal backup
  • Just under menyn ”Backup type”, hittar du en kryssruta för ”Copy OnlyBackup”
  • Klicka på denna kryssruta
  • Uppfyll all annan relaterad information som för en normal säkerhetskopia och klicka på OK

Note: Kryssrutan för ”Copy Only Backup” kommer också att vara aktiv för differentialbackuper, men den kommer inte att ha någon annan effekt än att skapa en normal differentialbackup.

För det andra, för att skapa en Copy Only-backup med T-SQL kan du utfärda följande kommando:

-- Create full backup with Copy Only optionBACKUP DATABASE AdventureWorks TO DISK = 'D:\WithoutCopyOnly_AdventureWorks.bak'WITH COPY_ONLYGO

Bevisar konceptet

Innan vi går vidare är det bra att sammanfatta konceptet att en fullständig säkerhetskopieringmed alternativet Copy Only är oberoende av sekvensen av dina andra normala säkerhetskopior.Så efter att du har skapat en säkerhetskopia med alternativet copy only kan du arbeta med återställningsplanen baserat på dina schemalagda säkerhetskopior utan att detta påverkar din återställningsprocess.

Vi kommer att använda LSN-information (log sequence number) för att spåra den fullständiga säkerhetskopian som är basen för de differentiella säkerhetskopiorna. Först noterar vi LSN för den differentiella basen för AdventureWorks-databasen.

--Script # 1: Note current differential base LSNSELECT DB_NAME(database_id) AS ,differential_base_lsn AS 'Note differential base LSN'FROM sys.master_filesWHERE database_id = DB_ID('AdventureWorks')AND type_desc = 'ROWS'GO

Differential_base_lsn påverkar i vilken ordning kombinationen av säkerhetskopior ska återställas vid en återställning. Du kan också få detaljerad information om LSN för en databas från tabellen msdb..backupset.

Nu måste vi bekräfta att en fullständig säkerhetskopiering utan alternativet Copy Only kommer att uppdatera differential_base_lsn. För detta ändamål kommer vi att utfärda ett fullständigt säkerhetskopieringskommando utan alternativet Copy Only och vi kommer att notera ändringen i LSN för att bevisa att den uppdaterade differentiella basens LSN är LSN för vår senaste fullständiga säkerhetskopia.

--Script # 2: Create full backup and compare LSN information-- Create full backup -- Run script after changing Backup pathBACKUP DATABASE AdventureWorks TO DISK = 'D:\WithoutCopyOnly_AdventureWorks.bak'GO-- Get differential_base_lsn after full backupSELECT DB_NAME(database_id) AS ,differential_base_lsn AS 'Updated differential base LSN'FROM sys.master_filesWHERE database_id = DB_ID('AdventureWorks')AND type_desc = 'ROWS'GO-- Get LSN of recent full backup for match purposeSELECT database_name, backup_start_date, is_copy_only,first_lsn as 'LSN of full bakup'FROM msdb..backupset WHERE database_name = 'AdventureWorks'ORDER BY backup_start_date DESCGO

I följande resultatuppsättning kan vi verifiera att LSN har ändrats för differentiell säkerhetskopieringsåterställningsbasen och att den stämmer överens med vår fullständiga säkerhetskopierings LSN. Båda markeradeLSNs nedan är desamma, vilket bekräftar att den senaste säkerhetskopian är vår differentiella bas.

Nu kommer vi att skapa en fullständig säkerhetskopia med alternativet Copy Only och det kommer att bevisas att den fullständiga säkerhetskopian med alternativet Copy Only inte kommer att påverka LSN för den differentiella basen i vår databas. Med andra ord kommer den fullständiga säkerhetskopian med alternativet Copy Only inte att påverka basen för den fullständiga säkerhetskopian för de differentiella säkerhetskopiorna.

--Script # 3: Create full backup with copy only option and compare LSN information-- Create full backup with copy only option-- Run script after changing Backup pathBACKUP DATABASE AdventureWorks TO DISK = 'D:\CopyOnly_AdventureWorks.bak'WITH COPY_ONLYGO-- Get differential_base_lsn after full backup with copy only optionSELECT DB_NAME(database_id) AS ,differential_base_lsn AS 'Un changed differential base LSN'FROM sys.master_filesWHERE database_id = DB_ID('AdventureWorks')AND type_desc = 'ROWS'GO-- Get LSN of recent full backup with copy only option for match purposeSELECT database_name, backup_start_date, is_copy_only,first_lsn as 'LSN of last full bakup'FROM msdb..backupset WHERE database_name = 'AdventureWorks'ORDER BY backup_start_date DESCGO

I följande bild kan vi kontrollera att efter en fullständig säkerhetskopiering med alternativet Copy Only är den differentiella bas-LSN oförändrad och stämmer överens med LSN för den föregående fullständiga säkerhetskopian (båda är markerade med rött). Notera också att den senaste fullständiga säkerhetskopian med alternativet Copy Only också finns där (markerat grönt).

Följande överväganden kommer att vara till hjälp när du använder säkerhetskopior med alternativet Copy Only.

  • Copy Only-alternativet fungerar även för kompatibilitetsnivå 80-databaser i en SQL Server 2005-instans
  • Transaktionsloggbackuper med Copy Only-alternativet bevarar den existerande loggarkivpunkten, vilket innebär att transaktionsloggarna för den databasen inte kommer att avkortas.
  • Det finns inget utökat hänsynstagande som krävs när du återställer en säkerhetskopia som skapats med Copy Only-alternativet.
  • En fullständig säkerhetskopia med alternativet Copy Only kan inte användas som bas för återställning av differentiella säkerhetskopior
  • En loggbackup med alternativet Copy Only kan skapas för databaser med återställningsmodellen Full eller Bulk Logged Only.
  • En fullständig säkerhetskopia med alternativet Copy Only kan skapas för databaser med någonåterställningsmodell.
Nästa steg

När du tar bort någon säkerhetskopia från din säkerhetskopieringsplan bör du överväga att använda alternativet Copy Only för att undvika förvirring och störningar i din återställningsplan. Tänk på att Copy Only-backuperna är oberoende av normala backuper.

  • Så nästa gång du behöver uppdatera dina test- eller utvecklingsmiljöeröverväg att använda Copy Only-alternativet för att inte avbryta din återställningsprocess
  • För information om modeller för återställning av databaser, klicka här eller här
  • Här är ett relaterat tips omCOPY ONLY-backuper

Sist uppdaterad: 2009-06-15

Om författaren
Atif Shehzad är en passionerad SQL Server DBA, teknisk granskare och artikelförfattare.
Se alla mina tips
Relaterade resurser

  • Mer SQL Server DBA Tips…

Lämna ett svar

Din e-postadress kommer inte publiceras.