By: Frissítve: Atif Shehzad | Frissítve: Atif Shehzad | Hozzászólások (4) | Kapcsolódó: 2009-06-15 | Hozzászólások (4) | Kapcsolódó: 2009-06-15 | Hozzászólások (4) | Kapcsolódó: 2009-06-15 | Hozzászólások (4) | Kapcsolódó: 2009-06-15 További > Biztonsági mentés
Probléma
Egy biztonsági mentési tervet vezettem be az SQL Server-adatbázisokhoz. Napi teljes mentést készítek, amit óránkénti differenciális mentésekkel támogatok. A visszaállítási terv dokumentálva van ezen a biztonsági mentési terven alapul, a tervben említett biztonsági mentések helyével és idejével együtt. Gyakran van szükségem arra, hogy a teszt- vagy fejlesztőkiszolgálót a termelési adatbázis frissített másolatával frissítsem. Ebből a célból teljes biztonsági mentést készítek a szükséges adatbázisról. A probléma az, hogy az ilyen ad hoc biztonsági mentések megszakítják a tervezett helyreállítási sorrendet egy szükséges helyreállítás esetén. Van rá mód, hogy az ad hoc mentéseim ne szakítsák meg a mentési tervem sorrendjét?
Megoldás
Szerencsére az SQL Server 2005-től kezdődően van egy mentési lehetőség az ilyen helyzetekre. Ez a biztonsági mentési lehetőség az úgynevezett Copy Only biztonsági mentések. Ez az opció kifejezetten olyan ad hoc biztonsági mentés készítésére szolgál, amely nem zavarja az adott adatbázis tervezettvisszaállítási sorrendjét.
A Csak másolás biztonsági mentés használható teljes biztonsági mentés vagy tranzakciós napló biztonsági mentés készítésére. Ez az opció nem alkalmazható differenciális biztonsági mentésekhez. Gyakorlati forgatókönyvekben ritkán lesz szükség Copy Only log backup létrehozására, azonban a Copy Only opciót gyakran lehet használni a teljes biztonsági mentésekhez.
Bár a Copy Only opció elérhető az SQL Server 2005 számára, az SQL 2005-ben nem lehet létrehozni őket az SSMS segítségével. Ha van SSMS 2008, akkor használhatja aGUI-t, vagy egy T-SQL utasítást kell használnia a Copy Only biztonsági mentések létrehozásához.
Először nézzük meg, hogyan lehet ezt az SSMS 2008 segítségével Copy Onlybackupot létrehozni
- Menjünk a backup adatbázis ablakba, mint egy normál backupnál
- A “Backup type” menüpont alatt, talál egy jelölőnégyzetet a “Copy OnlyBackup”
- Kattintson erre a jelölőnégyzetre
- Töltse ki az összes többi kapcsolódó információt, mint egy normál biztonsági mentésnél, és kattintson az OK gombra
Figyelem: A “Csak másolás biztonsági másolat” jelölőnégyzet a differenciális biztonsági másolatoknál is aktív lesz, de a normál differenciális biztonsági másolat létrehozásán kívül más hatása nincs.
Másodszor, a Copy Only backup létrehozásához T-SQL segítségével a következő parancsot adhatja ki:
-- Create full backup with Copy Only optionBACKUP DATABASE AdventureWorks TO DISK = 'D:\WithoutCopyOnly_AdventureWorks.bak'WITH COPY_ONLYGO
A koncepció bizonyítása
A továbbiak előtt nem árt összefoglalni azt a koncepciót, hogy a copy only opcióval készített teljes mentés független a többi normál mentés sorrendjétől.Tehát miután létrehozott egy biztonsági másolatot a copy only opcióval, képes lesz a helyreállítási tervvel dolgozni az ütemezett biztonsági mentések alapján anélkül, hogy ez befolyásolná a visszaállítási folyamatot.
A teljes biztonsági másolat nyomon követéséhez LSN (log sequence number) információkat fogunk használni, amelyek a differenciális biztonsági másolatok alapját képezik. Először az AdventureWorks adatbázis differenciális bázisának LSN-jét jegyezzük fel.
--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
A differential_base_lsn befolyásolja, hogy a helyreállítás során milyen sorrendben kell visszaállítani a biztonsági másolatok kombinációját. Az msdb..backupset.
Most meg kell erősítenünk, hogy egy teljes mentés a Copy Only opció nélkül frissíti a differential_base_lsn-t. A differenciális_base_lsn-t. Ehhez kiadunk egy teljes mentési parancsot Copy Only opció nélkül, és megjegyezzük az LSN változását annak bizonyítására, hogy a frissített differenciális bázis LSN megegyezik a legutóbbi teljes mentésünk LSN-ével.
--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
A következő eredményhalmazban ellenőrizhetjük, hogy az LSN megváltozott adifferenciális mentés visszaállítási bázisához, és megegyezik a teljes mentésünk LSN-ével. Az alábbiakban mindkét megjelöltLSN megegyezik, ami megerősíti, hogy az utolsó biztonsági mentés a mi differenciálisbázisunk.
Most létrehozunk egy teljes mentést a Copy Only opcióval, és bebizonyosodik, hogy a Copy Only opcióval készített teljes mentés nem befolyásolja adatbázisunk differentialbase LSN-jét. Más szóval a Copy Only opcióval készített teljes mentés nem befolyásolja a differenciális mentések teljes alapmentését.
--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
A következő képen ellenőrizhetjük, hogy aCopy Only opcióval végzett teljes mentés után a differenciális alap LSN nem változik, és megegyezik az előző teljes mentés LSN-ével (mindkettő pirossal van jelölve). Figyeljük meg azt is, hogy a Copy Only opcióval készített utolsó teljes biztonsági mentés is megvan (zölddel jelölve).
A Copy Only opcióval készített biztonsági mentések használata során az alábbi megfontolások hasznosak lehetnek.
- A Csak másolás opció a 80-as kompatibilitási szintű adatbázisok esetében is működik az SQL Server 2005 példányban
- A Csak másolás opcióval készített tranzakciós napló biztonsági mentések megőrzik a meglévő naplóarchiválási pontot, ezért nem vágja le az adott adatbázis tranzakciós naplóit.
- A Csak másolás opcióval készített biztonsági másolat visszaállítása során nincs szükség fokozott megfontolásra.
- A Copy Only opcióval készített teljes biztonsági mentés nem használható alapként a differenciális biztonsági mentések visszaállításához
- A Copy Only opcióval készített naplómásolat csak teljes vagy tömeges naplózású helyreállítási modellel rendelkező adatbázisokhoz készíthető.
- A teljes biztonsági másolat Copy Only opcióval bármilyen helyreállítási modellel rendelkező adatbázisokhoz létrehozható.
Következő lépések
Miözben bármilyen biztonsági másolatot kivesz a mentési tervből, fontolja meg a Copy Only opció használatát, hogy elkerülje a zavart és a helyreállítási terv megzavarását. Szem előtt tartva, hogy a Copy Only biztonsági mentések függetlenek a normál biztonsági mentésektől.
- A következő alkalommal, amikor teszt- vagy fejlesztési környezetét frissítenie kell, fontolja meg a Copy Only opció használatát, hogy ne szakítsa meg a helyreállítási folyamatot
- Az adatbázis helyreállítási modellekről szóló információkért kattintson ide vagy ide
- Itt van egy kapcsolódó tipp aCOPY ONLY biztonsági mentésekről
Most Updated:
A szerzőről
Minden tippem megtekintése
- Még több SQL Server DBA tipp…