By: Atif Shehzad | Päivitetty: Kommentit (4) | Aiheeseen liittyen: Atifad Atshad Atshad Atshad Atshad Atshad Atshad Atshad Atshad Atshad Atshad Atshad Atshad Atshad B: Lisää > Varmuuskopiointi
Ongelma
Olen toteuttanut varmuuskopiointisuunnitelman SQL Server -tietokantojani varten. Otan päivittäin täydellisen varmuuskopion, jota tuetaan tuntikohtaisilla differentiaalisilla varmuuskopioilla. Tähän varmuuskopiointisuunnitelmaan perustuva palautussuunnitelma on dokumentoitu yhdessä suunnitelmassa mainittujen varmuuskopioiden sijainnin ja ajankohdan kanssa. Usein minun on päivitettävä testi- tai kehityspalvelin tuotantotietokannan tuoreella kopiolla. Tätä tarkoitusta varten otan täydellisen varmuuskopion tarvittavasta tietokannasta. Ongelmana on, että tällaiset tapauskohtaiset varmuuskopiot keskeyttävät suunnitellun palautusjärjestykseni, jos palautusta tarvitaan. Onko mitään keinoa, jolla ad hoc -varmuuskopiot eivät keskeytä varmuuskopiointisuunnitelmani järjestystä?
Ratkaisu
SQL Server 2005:ssä ja sitä seuraavissa versioissa on onneksi varmuuskopiointimahdollisuus tällaista tilannetta varten. Tämä varmuuskopiointivaihtoehto tunnetaan nimellä Copy Only varmuuskopiot. Tämä vaihtoehtoon tarkoitettu nimenomaan tilapäisen varmuuskopion luomiseen, joka ei häiritse kyseisen tietokannan suunniteltua palautusjärjestystä.
Copy Only -varmuuskopioita voidaan käyttää täydellisen varmuuskopion tai tapahtumalokin varmuuskopion luomiseen. Tätä vaihtoehtoa ei ole otettu käyttöön differentiaalisia varmuuskopioita varten. Käytännön skenaarioissa tarvitaan harvoin Copy Only -lokitusvarmuuskopion luomista, mutta Copy Only -vaihtoehtoa voidaan käyttää usein täydellisten varmuuskopioiden yhteydessä.
Vaikka Copy Only -vaihtoehto on käytettävissä SQL Server 2005:ssä, niitä ei voi luoda SSMS:n avulla SQL 2005:ssä. Jos sinulla on SSMS 2008, voit käyttääGUI:ta tai sinun on käytettävä T-SQL-lauseketta Copy Only -varmistuskopioiden luomiseen.
Katsotaan ensin, miten tämä onnistuu SSMS 2008:n avulla Copy Onlybackupin luomiseksi
- Mene varmuuskopiointitietokanta-ikkunaan kuten normaalissa varmuuskopiossa
- Juuri ”Varmuuskopiointityyppi”-valikon alapuolella, löydät valintaruudun ”Copy OnlyBackup”
- Klikkaa tätä valintaruutua
- Täytä kaikki muut asiaan liittyvät tiedot kuten normaalissa varmuuskopiossa ja klikkaa OK
Huom: Valintaruutu ”Copy Only Backup” on aktiivinen myös differentiaalivarmuuskopioinnissa, mutta sillä ei ole muuta vaikutusta kuin normaalin differentiaalivarmuuskopion luominen.
Toiseksi, jos haluat luoda Copy Only -varmistuskopion T-SQL:llä, voit antaa seuraavan komennon:
-- Create full backup with Copy Only optionBACKUP DATABASE AdventureWorks TO DISK = 'D:\WithoutCopyOnly_AdventureWorks.bak'WITH COPY_ONLYGO
Konseptin todistaminen
Ennen kuin jatkamme eteenpäin, on hyvä tiivistää konsepti, jonka mukaan täysi varmuuskopio, jossa on Copy Only -vaihtoehto, on riippumaton muiden normaalien varmuuskopioidesi järjestyksestä.Kun olet siis luonut varmuuskopion copy only -vaihtoehdolla, voit työskennellä palautussuunnitelman kanssa, joka perustuu ajastettuihin varmuuskopioihisi, ilman että tämä vaikuttaa palautusprosessiin.
Käytämme LSN-tietoa (log sequence number, lokin järjestysnumero) jäljittääksemme täyden varmuuskopion, joka on differentiaalisten varmuuskopioiden perusta. Huomioidaan ensin AdventureWorks-tietokannan differentiaalipohjan LSN.
--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 vaikuttaa siihen, missä järjestyksessä varmuuskopioiden yhdistelmä palautetaan palautuksessa. Voit myös saada yksityiskohtaisia tietoja minkä tahansa tietokannanLSN:stä taulukosta msdb..backupset.
Nyt on vahvistettava, että täysi varmuuskopio ilman Copy Only -vaihtoehtoa päivittää differential_base_lsn:n. Tätä varten annamme täyden varmuuskopiointikomennon ilman Copy Only -vaihtoehtoa ja panemme merkille LSN:n muutoksen todistaaksemme, että päivitetty differentiaalisen perustan LSN on viimeisimmän täyden varmuuskopiointimme LSN.
--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
Seuraavasta tulosjoukosta voimme todentaa, että LSN on muuttunut differentiaalisen varmuuskopiointitiedoston palautusperustan LSN:ksi ja se on sama kuin täydellisen varmuuskopiointitiedostomme LSN. Molemmat alla olevat merkitytLSN:t ovat samat, mikä vahvistaa, että viimeinen varmuuskopio on differentiaalinen palautuspohjamme.
Luotaan nyt täysi varmuuskopio Copy Only -vaihtoehdolla ja todistetaan, että Copy Only -vaihtoehdolla tehty täysi varmuuskopio ei vaikuta tietokantamme differentialbase LSN:ään. Toisin sanoen täysi varmuuskopio Copy Only -vaihtoehdolla ei vaikuta differentiaalisten varmuuskopioiden täydelliseen perusvarmuuskopioon.
--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
Seuraavassa kuvassa voimme todentaa, että Copy Only -vaihtoehdolla tehdyn täydellisen varmuuskopioinnin jälkeen differentiaalisen perusvarmuuskopion LSN on muuttumaton ja vastaa edellisen täydellisen varmuuskopion LSN:ää (molemmat on merkitty punaisella). Huomaa myös, että viimeinen täysi varmuuskopio Copy Only -vaihtoehdolla on myös olemassa (merkitty vihreällä).
Seuraavat huomiot ovat hyödyllisiä käytettäessä varmuuskopioita Copy Only -vaihtoehdolla.
- Copy Only -vaihtoehto toimii myös yhteensopivuustason 80 tietokannoissa SQL Server 2005 -instanssissa
- Transaktiolokien varmuuskopioinnit Copy Only -vaihtoehdolla säilyttävät olemassa olevan lokien arkistointipisteen, joten se ei katkaise kyseisen tietokannan transaktiolokeja.
- Copy Only -vaihtoehdolla luodun varmuuskopioinnin palauttaminen ei vaadi mitään lisähuomiota.
- Kopioi vain -vaihtoehdolla tehtyä täyttä varmuuskopiota ei voi käyttää pohjana palautettaessa erisuuntaisia varmuuskopioita
- Kopioi vain -vaihtoehdolla tehtyä lokitietokannan varmuuskopiota voidaan luoda tietokannoille, joiden palautusmalli on täysi tai vain irtotallennettu.
- Täydellinen varmuuskopio Copy Only -vaihtoehdolla voidaan luoda tietokannoille, joiden palautusmalli on mikä tahansa.
Jatkotoimet
Kun otat minkä tahansa varmuuskopion pois varmuuskopiointisuunnitelmastasi, harkitse Kopioi vain -vaihtoehdon käyttämistä, jotta vältyt sekaannuksilta ja palautussuunnitelman häiriöiltä. Pidä mielessä, että Copy Only -varmuuskopiot ovat riippumattomia normaaleista varmuuskopioista.
- Seuraavalla kerralla, kun sinun on päivitettävä testi- tai kehitysympäristösi, harkitse Copy Only -vaihtoehdon käyttämistä, jotta et keskeytä palautusprosessiasi
- Tietoa tietokantojen palautusmalleista saat klikkaamalla täältä tai täältä
- Tässä on aiheeseen liittyvä vinkki koskienCOPY ONLY -varmuuskopiointia
Viimeisin päivitetty:
Kirjoittajasta
Katso kaikki vinkkini
- Muut SQL Server DBA -vinkit…