Podle: Atif Shehzad | Aktualizováno: 2009-06-15 | Komentáře (4) | Související: Více >Zálohování
Problém
Zavedl jsem plán zálohování pro své databáze SQL Serveru. Provádím denníplné zálohování podporované hodinovými rozdílovými zálohami. Plán obnovy je zdokumentovánna základě tohoto plánu zálohování spolu s umístěním a časem záloh uvedenýchv plánu. Často je nutné aktualizovat testovací nebo vývojový server pomocí aktuální kopie produkční databáze. Za tímto účelem pořizuji úplnou zálohupožadované databáze. Problém je v tom, že takové ad hoc zálohování přeruší mou plánovanou sekvenci obnovy v případě potřebné obnovy. Existuje nějaký způsob, aby moje ad hoczálohy nenarušily posloupnost mého plánu zálohování?
Řešení
Naštěstí v SQL Serveru 2005 a novějších verzích máme pro takovou situaci možnost zálohování. Tato možnost zálohování je známá jako zálohování pouze kopií. Tato možnostje určena speciálně pro vytvoření ad hoc zálohy, která nenaruší plánovanou sekvenci obnovy pro danou databázi.
Copy Only backups lze použít pro vytvoření plné zálohy nebo zálohy protokolu transakcí. Tato volba není implementována pro rozdílové zálohy. V praktických scénářích budete zřídkakdy potřebovat vytvořit zálohu protokolu Copy Only, nicméně možnost Copy Onlymůžete často používat u plných záloh.
Ačkoli je možnost Copy Only dostupná pro SQL Server 2005, není v SQL 2005 možné je vytvořit pomocí SSMS. Pokud máte SSMS 2008, můžete použítGUI nebo musíte k vytvoření záloh Copy Only použít příkaz T-SQL.
Nejprve se podívejme, jak to lze provést pomocí SSMS 2008 pro vytvoření Copy Onlyzálohy
- Přejděte do okna zálohování databáze jako při normálním zálohování
- Jednou pod nabídkou „Typ zálohy“, najdete zaškrtávací políčko „Pouze kopírovat zálohu“
- Klikněte na toto políčko
- Vyplňte všechny ostatní související informace jako u normální zálohy a klikněte na tlačítko OK
Poznámka: Zaškrtávací políčko „Kopírovat pouze zálohu“ bude aktivní i pro rozdílové zálohy, ale nebude mít jiný vliv než vytvoření normální rozdílové zálohy.
Druhé, pro vytvoření zálohy Pouze kopírovat pomocí jazyka T-SQL můžete zadat následující příkaz:
-- Create full backup with Copy Only optionBACKUP DATABASE AdventureWorks TO DISK = 'D:\WithoutCopyOnly_AdventureWorks.bak'WITH COPY_ONLYGO
Dokazování konceptu
Před dalším postupem bude dobré shrnout koncept, že plná zálohas možností Pouze kopírovat je nezávislá na pořadí vašich ostatních normálních záloh.Takže po vytvoření zálohy s možností pouze kopírovat byste mohli pracovats plánem obnovy založeným na vašich plánovaných zálohách, aniž by to ovlivnilo proces obnovy.
Pro sledování plné zálohy, která je základem pro rozdílové zálohy, použijeme informace LSN (log sequence number). Nejprve si všimneme LSN pro rozdílovouzálohu databáze AdventureWorks.
--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
Rozdílové_základní_lsn ovlivňuje pořadí, v jakém budou kombinace záloh obnoveny při obnově. Podrobné informace oLSN libovolné databáze můžete získat také z tabulky msdb..backupset.
Nyní musíme potvrdit, že plná záloha bez možnosti Copy Onlybude aktualizovat diferenciální_bázi_lsn. Za tímto účelem vydáme příkaz plné zálohy bez volby Copy Only a zaznamenáme změnu LSN, abychom dokázali, že aktualizované LSN diferenciální báze je LSN naší poslední plné zálohy.
--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
V následující sadě výsledků můžeme ověřit, že LSN bylo změněno pro bázi obnovy diferenciální zálohy a odpovídá LSN naší plné zálohy. Obě níže označenáLSN jsou stejná, což potvrzuje, že poslední záloha je naše diferenciálnízáloha.
Nyní vytvoříme plnou zálohu s volbou Copy Only a prokáže se, že plná záloha s volbou Copy Only neovlivní LSN diferenciálníbáze naší databáze. Jinými slovy plná záloha s volbou Copy Onlyneovlivní základní plnou zálohu pro rozdílové zálohy.
--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
Na následujícím obrázku si můžeme ověřit, že po provedení plné zálohy s volbouCopy Only se základní LSN diferenciální zálohy nemění a odpovídá LSN předchozí plné zálohy (obě jsou označeny červeně). Všimněte si také, že poslední plná zálohas možností Copy Only je zde také (označena zeleně).
Při používání záloh s možností Copy Only budou užitečné následující úvahy.
- Volba Copy Only bude fungovat i pro databáze úrovně kompatibility 80 v instanci SQL Server 2005
- Zálohování transakčních protokolů pomocí volby Copy Only zachovává existující bod archivace protokolu, a proto nezkrátí transakční protokoly dané databáze.
- Při obnově zálohy vytvořené pomocí volby Copy Only není třeba věnovat zvýšenou pozornost.
- Plnou zálohu s volbou Copy Only nelze použít jako základ pro obnovu diferenciálních záloh
- Zálohu protokolu s volbou Copy Only lze vytvořit pro databáze s modelem obnovy full nebo bulk log only.
- Plnou zálohu s volbou Copy Only lze vytvořit pro databáze s libovolným modelem obnovy.
Další kroky
Při vyjmutí jakékoli zálohy z plánu zálohování zvažte použití volby Copy Only, abyste předešli zmatkům a narušení plánu obnovy. Mějte na paměti, že zálohy Copy Only jsou nezávislé na normálních zálohách.
- Příště tedy, až budete potřebovat obnovit své testovací nebo vývojové prostředí, zvažte použití možnosti Copy Only, abyste nepřerušili svůj proces obnovy
- Pro informace o modelech obnovy databáze klikněte sem nebo sem
- Tady je související tip o zálohách Copy Only
Poslední aktualizace: O autorovi
Atif Shehzad je vášnivý SQL Server DBA, technický recenzent a autor článků.
Zobrazit všechny mé tipy
Související zdroje
- Další tipy pro SQL Server DBA…
.
- Další tipy pro SQL Server DBA…