Sql express planirano sigurnosno kopiranje. Izrada planiranih sigurnosnih kopija u MS SQL Expressu. Postavljanje MS SQL sigurnosne kopije i konfiguracija baze podataka

Nakon što sam proučio mnogo informacija iz različitih izvora, odlučio sam opisati postupak postavljanja sigurnosne kopije baze podataka MS SQL Servera za puna model oporavka, sami odlučujete koji ćete model koristiti, ali ću dodati da ako postoji veliki protok informacija u vašoj bazi podataka (na primjer, deseci, stotine ili tisuće dokumenata kreiraju se u 1 sat), gubitak informacije tijekom radnog dana bit će jednostavno neprihvatljive, u ovom će slučaju samo potpuni model osigurati sigurnost vaših podataka. Ovaj je članak namijenjen administratorima sustava početnicima i sadrži po mom mišljenju minimalni skup radnji za sigurnosno kopiranje 1C baze podataka. Instalacija\konfiguracija samog SQL poslužitelja i postavljanje baze podataka na njemu nije unutar opsega ovog članka.

Sve postavke izvršit ćemo koristeći SQL Management Studio. Prvo morate stvoriti uređaj za sigurnosnu kopiju, ne morate ga stvarati, ali po mom mišljenju mnogo je praktičniji i ispravniji. u tren oka SQL Management Studio -> Server Objects -> Backup Devices. Morate navesti naziv uređaja i datoteku u koju će sigurnosne kopije biti pohranjene (po mogućnosti s ekstenzijom BAK), zatim možete pregledati sadržaj medija, tamo će biti navedene sve sigurnosne kopije.

Sada možete započeti s postavljanjem Plana održavanja. Plan održavanja može se izraditi za sve baze podataka odjednom, ali praktičnije je izraditi vlastiti plan održavanja za svaku bazu podataka.

Naš plan usluga imat će tri podplana: 1 - sigurnosna kopija baze podataka (potpuna); 2 - sigurnosna kopija baze podataka (Razlika); 3 - Napravite sigurnosnu kopiju dnevnika transakcija. Svaki podplan ima svoj raspored izvršenja. Svatko postavlja raspored prema vlastitom nahođenju, ali u mom slučaju puna kopija se radi jednom tjedno nedjeljom, diferencijalna kopija svaki dan osim nedjelje, a dnevnik transakcija svaki sat. S ovim modelom sigurnosne kopije možete vratiti željenu bazu podataka na bilo koji datum i vrijeme, a mi štedimo prostor na vašem tvrdom disku jer Potpuna sigurnosna kopija zapravo se izvodi jednom tjedno, a tijekom tjedna se rade samo promjene.

Postavljanje dnevnog rasporeda. Tjedno se razlikuje samo u potvrdnom okviru "Nedjelja" i neoznačenom od "Ponedjeljak" do "Subota"

Vozni red željezničkog prijevoza. Vrijeme spremanja tijekom dana označeno je crvenom bojom, ima smisla, na primjer, ako korisnici rade s bazom podataka tijekom određenog razdoblja, ako je način rada 24x7, tada ga ostavljamo na zadanom.

Slika u nastavku prikazuje uređivač tjednog podplana; sastoji se od zadataka koji se izvode u zadanom nizu. Redoslijed se postavlja ručno, a zelene strelice znače da će sljedeći zadatak biti dovršen samo ako je prethodni zadatak uspješno dovršen, a plave strelice znače da će zadatak biti dovršen kad god je dovršen prethodni zadatak. U uređivaču potplana održavanja zadaci se mogu dodavati iz "Ploče elemenata" koja se nalazi u gornjem lijevom kutu kada je uređivač otvoren.

Zadaci. Morate ući u svaki zadatak i odabrati bazu podataka za koju će se izvršiti i brojne druge postavke (ako postoje). Pogledajmo koje zadatke sadrži tjedni podplan našeg plana održavanja.

1. “Zadatak provjere integriteta baze podataka”. Sljedeći zadatak će se izvršiti samo ako baza podataka ne sadrži pogreške. (Trebamo li sigurnosno kopirati bazu podataka s pogreškama?)

2. "Zadatak obnove indeksa". Potrebno je obnavljati (Rebuild) indeks svaki dan, jer... pri radu s indeksima oni postaju jako fragmentirani, a kada fragmentacija prijeđe 25%, SQL počinje primjetno usporavati. Ova operacija zahtijeva dosta resursa, pa se može izvoditi barem jednom tjedno, i danju podplana da ga zamijeni zadatkom koji zahtijeva manje resursa "Reorganizacija indeksa".

3. “Zadatak ažuriranja statistike”. Za optimizaciju... Usput, ovaj zadatak možete izvršiti nekoliko puta tijekom dana ako je vaša baza podataka jako opterećena.

4. Nakon ažuriranja statistike, MORATE obrisati proceduralnu predmemoriju. Da biste to učinili, povucite zadatak "Izvrši T-SQL naredbu" u uređivač i napišite proceduru u polje "T-SQL naredba:" DBCC FREEPROCCACHE. Ali morate uzeti u obzir da ovaj postupak briše predmemoriju SVIH baza podataka, a statistiku smo ažurirali jednu po jednu! Pročitajte kako očistiti proceduralnu predmemoriju za određenu bazu podataka. Ukratko: DBCC FLUSHPROCINDB(DB_ID)

5. "Sigurnosna kopija baze podataka" (Zadatak sigurnosne kopije baze podataka). U ovom zadatku označavamo koju bazu podataka sigurnosno kopiramo, vrstu sigurnosne kopije (Za tjedni podplan - Puni, za dnevni podplan - Diferencijalni, za satni - Dnevnik transakcija.) Prekidač stavljamo u položaj "Kreiraj sigurnosnu kopiju baza podataka u jednoj ili više datoteka" i dodajte joj ranije stvoreni uređaj za sigurnosno kopiranje. U ovom slučaju, SVE kopije se spremaju u jednu datoteku, koja je navedena prilikom izrade uređaj za sigurnosno kopiranje, ako je prekidač ostavljen u "Stvori datoteku sigurnosne kopije za svaku bazu podataka", tada će se za svaku sigurnosnu kopiju kreirati zasebna datoteka za Full, Differential i VT, što je vrlo nezgodno prilikom vraćanja, ali je zgodno prilikom pohranjivanja. Ne zaboravite naznačiti da trebate komprimirati sigurnosne kopije!

6. "Clear Log" Briše zapise stvorene prilikom izvršavanja zadataka. Također možete omogućiti zadatak "Čišćenje nakon održavanja" i konfigurirati ga za brisanje tekstualnih zapisa ili zastarjelih sigurnosnih kopija.

Podplan za sigurnosno kopiranje VT-a sastoji se od jednog zadatka “Sigurnosno kopiranje baze podataka”. Za mene je prikladnije spremiti VT ne na uređaj za sigurnosno kopiranje, već u zasebnu datoteku, koja mora biti navedena u postavkama zadatka.

Diferencijalna sigurnosna kopija temelji se na najnovijoj prethodnoj punoj sigurnosnoj kopiji podataka. Diferencijalna sigurnosna kopija sprema samo promjene koje su napravljene od posljednje pune sigurnosne kopije.
Preporuke:
  1. Koristite diferencijalne kopije baze podataka ako stvaranje pune kopije baze podataka traje dugo
  2. Povremeno izradite punu kopiju baze podataka kako biste smanjili količinu stvorenih diferencijalnih kopija.
  3. Nakon izrade potpune kopije baze podataka, sve prethodne diferencijalne kopije gube na važnosti.
Možete pročitati više o preporukama o učestalosti izrade diferencijalnih sigurnosnih kopija.

Dopustite mi da vam dam mali praktični primjer zašto smo počeli koristiti drugačiju kopiju. S vremenom je baza podataka našeg klijenta narasla do te veličine da je izrada pune sigurnosne kopije trajala 8 sati, još nekoliko mjeseci, a možda ova operacija ne bi stigla završiti do početka radnog dana. Nakon prelaska na diferencijalni backup, smanjili smo vrijeme s 8 sati na 2-4 minute (ovisno o danu u tjednu). Jednom tjedno napravili smo punu kopiju baze podataka.

Primjer SQL-a za stvaranje diferencijalne sigurnosne kopije baze podataka s provjerom kopije po završetku (različito od pune kopije s oznakom DIFERENCIJAL trebali biste ga koristiti umjesto toga NOFORMAT).

Deklarirajte @pathBackup kao varchar(55) postavite @pathBackup = N"C:\Backup\[naziv DB datoteke]_" + REPLACE(convert(varchar,GETDATE(), 104),".","_") + " .bak" SIGURNOSNA KOPIJA BAZE PODATAKA [Naziv baze podataka] NA DISK = @pathBackup S DIFFERENTIALOM, NOFORMAT, INIT, NAME = N"Potpuna sigurnosna kopija baze podataka", SKIP, NOREWIND, NOUNLOAD, STATS = 10, CHECKSUM GO deklariraj @backupSetId kao int deklariraj @pathBackup kao varchar(55) postavite @pathBackup = N"C:\Backup\[naziv DB datoteke]_" + REPLACE(convert(varchar,GETDATE(), 104),".","_") + " .bak" odaberite @backupSetId = pozicija iz msdb..backupset where database_name=N"[Naziv baze podataka]" i backup_set_id=(select max(backup_set_id) from msdb..backupset where database_name=N"[Naziv baze podataka]") ako je @backupSetId null begin raiserror(N"Pogreška verifikacije. Podaci o sigurnosnoj kopiji za bazu podataka '[Naziv baze podataka]' nisu pronađeni.", 16, 1) end RESTORE VERIFYONLY FROM DISK = @pathBackup WITH FILE = @backupSetId, NOUNLOAD, NOREWIND GO

3.Baze podataka sustava
Uz glavnu bazu podataka i pridružene datoteke, toplo preporučujem izradu kopija baza podataka sustava. Za početak pogledajmo koje baze podataka postoje u MS SQL-u. Ima ih samo 5:

Odlučio sam sigurnosno kopirati samo 2 sistemske baze podataka:

  1. msdb - jer su tamo pohranjeni konfigurirani zadaci i ostali
  2. master – pohranjuju se sve konfigurirane postavke SQL Servera.
Ove informacije još uvijek nisu kritične i mogu se vratiti ručno, ali zašto gubiti dodatno vrijeme kada ih jednostavno možete uzeti iz sigurnosne kopije.
4. Rezervni plan
Na temelju gore navedenog izradit ćemo naš plan sigurnosne kopije podataka. Može se razlikovati od onoga što trebate, sve ovisi o zahtjevima za oporavak baze podataka. Kada sam pripremao plan, morao sam uzeti u obzir da je potrebno povratiti podatke što je više moguće i da gubitak podataka nije dulji od sat vremena.

Napravit ćemo sljedeće sigurnosne kopije:

  • Puna kopija glavne baze podataka nije potrebna više od jednom tjedno
  • Diferencijalna kopija glavne baze podataka, svaki dan
  • Kopije dnevnika transakcija glavne baze podataka, svaki sat
  • Kopija matične baze podataka sustava, jednom tjedno
  • Kopija baze podataka msdb sustava, jednom tjedno
Kao rezultat toga, dobili smo sljedeći plan sigurnosne kopije podataka:
Dan u tjednu
Vrijeme
Radnje
Frekvencija
Opis
ponedjeljak petak
Od 8-00 do 21-00
Sigurnosne kopije

Dnevnik transakcija

Svaki sat
Nakon izvođenja sigurnosne kopije baze podataka, dnevnik transakcija se sažima i skraćuje
subota nedjelja
Od 8-00 do 18-00
ponedjeljak nedjelja
22-00
Diferencijalna kopija glavne baze podataka
1 dnevno
Nakon uspješnog pokretanja diferencijalne kopije, brišu se sve stare kopije dnevnika transakcija
subota
12-00
Provjera baze podataka
1 dnevno
Provjera integriteta baze podataka.
subota
18-00
Izrada pune kopije baze podataka
1 dnevno
Nakon završetka ove operacije, obavijest se šalje e-poštom.

Ako je sigurnosna kopija uspješno stvorena, briše se

  • stara puna sigurnosna kopija
  • sve stare diferencijalne kopije
  • sve stare zapise transakcija
ponedjeljak nedjelja
23-30
Izrada kopije baze podataka glavnog sustava
1 dnevno

nedjelja
12-30
Stvaranje kopije baze podataka sustava msdb
1 puta mjesečno
Uvijek se pohranjuje samo zadnja instanca baze podataka
  1. Koristite opciju BACKUP WITH CHECKSUM
    kako bi se uvjerio da je sve dobro prošlo. Nedostatak ovog rješenja je što za velike baze podataka provjera kontrolne sume može predstavljati značajno opterećenje za sustav.
  2. Nemojte sigurnosno kopirati datoteke na isti fizički disk koji pohranjuje bazu podataka ili dnevnik transakcija.
  3. Ako koristite MS SQL 2008 ili noviji, preporučujem da koristite SQL kompresiju sigurnosne kopije. Sljedeći kod će prema zadanim postavkama omogućiti kompresiju: ​​USE master; GO EXEC sp_configure ‘zadana kompresija sigurnosne kopije’, “1”; REKONFIGURACIJA S PONIŠTANJEM;
  4. Čuvajte sigurnosne kopije nekoliko dana u slučaju da se jedna od njih ošteti - bolja je stara sigurnosna kopija nego nikakva.
  5. Koristiti DBCC CHECKDB da provjerite svaku bazu podataka prije kopiranja, to će vas odmah upozoriti na nadolazeće probleme. DBCC CHECKDB("Naziv baze podataka") WITH NO_INFOMSGS, ALL_ERRORMSGS; Bilješka: U praksi smo ovu provjeru koristili samo prije izvođenja pune sigurnosne kopije.
  6. Povremeno ažurirajte statistiku i reorganizirajte indekse baze podataka

Korištenje aplikacije

Nekoliko nijansi o aplikaciji:
  • Svi tekstovi i zahtjevi u kodu su uključeni u resurse, bilo mi je lakše
  • Kada unesete parametre veze i druge postavke, one se spremaju u datoteku. Za Express i Standard koriste se različite datoteke (dbStandart, udExpress) iu njima je pohranjena klasa UserData
  • Neke operacije mogu zahtijevati administratorska prava
  • Trenutno veza s bazom podataka pod računom domene ne radi
  • Program nema super lijepo sučelje
1. Postavljanje obavijesti administratora
Bio sam previše lijen da se svaki put ulogiram na server i provjerim je li zadatak uspio ili je došlo do greške. Htjela sam primati i druge obavijesti, a ne samo o izvršenju zadatka.

DatabaseMail MS SQL se koristi za ovu svrhu (za standardnu ​​verziju i više)
U svojoj aplikaciji napravio sam poseban odjeljak za automatizaciju ovog zadatka

Kada se klikne, pojavit će se obrazac za ispunjavanje podataka potrebnih za izradu profila za slanje e-pošte:

Aplikacija se automatski konfigurira za standardni SMTP port 25 za adresu s koje se šalju pisma. Ako je potrebno, može se promijeniti u proceduri sysmail_add_account_sp
Potrebni su korisnik i lozinka u slučaju da usluga e-pošte ima konfiguriranu provjeru autentičnosti.

Ime operatera u sustavu je naznačeno tako da možemo ispravno kreirati profil u DatabaseMail. Napišite bilo koje ime koje će vam biti jasno. Ispod je primjer ispunjenog obrasca.

  1. Promjena parametara MS SQL sustava.
  2. DatabaseMail profil je stvoren
  3. Aktivirano u SQL Agente profilu
  4. DatabaseMail račun je stvoren
  5. Dodavanje DatabaseMail računa u Database Mail profil
  6. DatabaseMail Operator je stvoren
Detaljnije je opisano u sljedećem članku, a dijelom sam ga i ja preuzeo odavde. Naravno, ove se radnje mogu izvesti pomoću SSMS-a.
2.Dodatne obavijesti za administratora
Program nudi 2 zadatka primijenjena na bazu podataka:
  1. provjera integriteta baze podataka. Za provjeru baze podataka korištena je standardna procedura DBCC CHECKDB.
  2. obavještavanje o slobodnom prostoru u grupama datoteka.
  3. Drugi zadatak implementiran je korištenjem upita sistemskoj tablici dbo.sysfiles
  4. Evo primjera ovog upita koji je izvršen prema bazi podataka:
Odaberite NAME = lijevo(a.NAME,15), a.FILEID, = convert(decimal(12,2),round(a.size/128.000,2)), = convert(decimal(12,2),round( fileproperty(a.name,"SpaceUsed")/128.000,2)), = convert(decimal(12,2),round((a.size-fileproperty(a.name,"SpaceUsed"))/128.000,2) ), FILENAME = a.FILENAME Iz dbo.sysfiles a
Odgovor s poslužitelja dolazi na e-poštu administratora u obliku html oznake. Ova sintaksa je moguća zahvaljujući sljedećoj standardnoj MS SQL FOR XML funkciji.

Također, dok sam tražio kako vraćeni rezultat upita pretvoriti u html tekst, naišao sam na sljedeću stranicu, gdje je osoba napravila cijelu proceduru za te potrebe
Ove operacije možete konfigurirati pomoću odgovarajuće stavke u izborniku programa:

Pojavit će se prozor koji označava poštanski sandučić na koji treba poslati html tekst izvješća:

3. Rješavanje problema prilikom postavljanja DatabaseMail-a
U MS SQL 2008 naišao sam na problem prilikom postavljanja SQL Server Agenta. Simptomi su sljedeći: nakon konfiguracije nemoguće je pokrenuti SQL Agent. To se uglavnom rješava instaliranjem ažuriranja na SQL poslužitelju.

Ako ova ažuriranja ne pomognu, trebate preuzeti popravak. Može se pronaći na ovoj stranici; trenutno ne mogu dati konačnu vezu; da biste došli do paketa popravka, morat ćete odgovoriti na brojna pitanja.
Ako postoje problemi s modulom DatabaseMail. Nakon postavljanja ovog modula pomoću aplikacije, trebate otići na SQL Agent i pregledati dnevnik događaja. Ako postoje pogreške "ne mogu se spojiti na poštanski sandučić". To znači da postoji problem, čak i ako je pismo poslano putem provjere.

To se može ispraviti sljedećim manipulacijama:

  1. Management Studio - SQL Server Agent - Svojstva.
  2. Sustav upozorenja
  3. Poništite Omogući profil pošte
  4. Pritisnite OK
  5. Ponovno se prijavite i potvrdite okvir
  6. Ponovno pokrenite SQL Server Agent.
Provjerite svoj račun za uslugu SQL Agent. Ako je ovo račun domene, promijenite ga u račun sustava ili obrnuto. Sve bi trebalo raditi.
4. Postavite sigurnosnu kopiju pomoću aplikacije SQL Standard:
Odaberite standardnu ​​verziju. Postavljanje obavijesti. (pogledajte odjeljak, postavke obavijesti):

Spajamo se s bazom podataka, ispunjavamo podatke o povezivanju i specificiramo bazu za koju će se Posao koristiti:

Odaberite postavku sigurnosne kopije:

Odredite staze za spremanje kopija baze podataka. Ako navedene mape ne postoje, program će ih pokušati kreirati (potrebna su odgovarajuća prava).

Pritisnite Spremi i odgovarajući zadaci su konfigurirani u bazi podataka. Preporučljivo je konfigurirati različite mape za svaku sigurnosnu kopiju, jer... Prilikom brisanja izbrisat će se sve datoteke s ekstenzijom bak. (cm. odjeljak za brisanje kopija baze podataka)

5. Postavite sigurnosnu kopiju pomoću aplikacije SQL Express:
Budući da SQL Express nema SQL Agent, zadatak automatizacije sigurnosnog kopiranja morao se riješiti na drugačiji način. U mapi koju odredi korisnik kreira se bat datoteka, koja opisuje SQL upit odgovoran za stvaranje sigurnosne kopije. Ako je potrebno, možete ga izravno urediti. Uz to, standardni Windows planer bi trebao raditi; on stvara zadatak koji će se pokretati jednom dnevno u određeno vrijeme.

Da biste to učinili, pokrenite aplikaciju. Odaberite MS SQL Express:

Pojavljuje se obrazac za popunjavanje parametara:

Označavamo gdje će biti spremljena naša kopija, kao i gdje će se nalaziti bat datoteka za stvaranje kopije baze podataka (nema potrebe za navođenjem naziva datoteke, ono će biti navedeno automatski). Zatim određujemo postavke veze i vrijeme kada zadatak treba pokrenuti.

Jedini nedostatak ovog pristupa je taj što se lozinka za povezivanje s bazom mora pohraniti u čistom tekstu.

6.Brisanje zadataka iz baze podataka.
Ako trebate izbrisati sve zadatke iz baze podataka (na primjer, htjeli ste promijeniti staze za spremanje baze podataka). Da biste to učinili, upotrijebite odgovarajuću stavku u izborniku programa. Svi zadaci s određenim početnim prefiksom (u mom slučaju King) bit će izbrisani iz SQL Agenta:

7.Brisanje kopija baze podataka
U nekim su zadacima stare kopije baze podataka konfigurirane za brisanje. Za to koristim proceduru master.dbo.xp_delete_file. Primjer upotrebe: Izbrisat će sve datoteke s ekstenzijom bak iz navedene mape čiji je datum izrade stariji od 14 dana.
IZVRŠI master.dbo.xp_delete_file 0,"E:\sigurnosne kopije",N"bak",dateadd(d,-14,getdate()),0;
A ovdje je još jedan detaljniji primjer i informacija o tome koje parametre ova funkcija uzima.

Kako vratiti sigurnosne kopije

Zbog nedostatka vremena, modul za oporavak još nije implementiran, možda ću ga u budućnosti dodati, ali za sada ću samo ukratko opisati kako se baza podataka može vratiti.

Korištenje SQL skripte. Za vraćanje baze podataka koristite naredbu RESTORE.

Ako samo trebate vratiti bazu podataka iz pune kopije, tada samo pokrenite sljedeću skriptu:
VRAĆANJE BAZE PODATAKA [naziv baze podataka] S DISKA = "Z:\SQLServerBackups\back.bak" SA ZAMJENOM
Ako trebate sekvencijalno vratiti punu kopiju, diferencijalne kopije i zapisnike transakcija, trebate napisati sljedeću SQL skriptu.

RESTORE DATABASE TEST_DB – vraćanje pune kopije FROM test_db_full WITH NORECOVERY; GO RESTORE DATABASE TEST_DB – vraćanje kopije razlike IZ test_db_diff WITH FILE = 1, NORECOVERY; GO RESTORE LOG TEST_DB – vrati transakcijski dnevnik br. 1 IZ test_db_tran_1 SA DATOTEKOM = 1, BEZ OPORAVKA; GO RESTORE LOG TEST_DB – vraćanje dnevnika transakcija br. 2 IZ test_db_tran_2 SA DATOTEKOM = 1, BEZ OPORAVKA; KRENITE NA VRAĆANJE BAZE PODATAKA TEST_DB S OPORAVKOM; IĆI
Također možete koristiti SSMS za vraćanje baze podataka.

Oznake: Dodajte oznake

Preporučljivo je konfigurirati redovite sigurnosne kopije baze podataka(u slučaju hardverskih ili softverskih kvarova), a najbolje je spremiti sigurnosne kopije za zadnjih nekoliko dana, npr. sedam (za prošli tjedan).

Da biste to učinili, možete koristiti ili planer zadataka ugrađen u SQL Server - "SQL Server Agent" (nije uključen u besplatnu verziju) ili standardni "Windows Scheduler" u kombinaciji s uslužnim programom SQLCMD.EXE, koji vam omogućuje pokretanje upita za SQL Server iz naredbenog retka. U planeru morate kreirati najmanje sedam poslova (po jedan za svaki dan u tjednu), od kojih će svaki (jednom tjedno) zamijeniti jednu od sedam datoteka koje sadrže odgovarajuću sigurnosnu kopiju baze podataka.

Osim toga, preporuča se pohraniti sigurnosne kopije datoteka ne samo na tvrdi disk računala na kojem je instaliran SQL Server, već i duplicirati ih na traku ili tvrdi disk drugog računala na mreži. Da biste to učinili, možete koristiti poseban softver koji vam omogućuje izradu sigurnosnih kopija cijelog diska ili koristiti isti planer za kopiranje datoteka na traku ili drugo računalo (drugi korak).

Korištenje Windows Scheduler (besplatna verzija)

Za izradu zadatka u Windows Scheduler-u trebate:

Pokrenite program Notepad (Start->All Programs->Accessories->Notepad) i unesite sljedeća dva retka, a zatim ih spremite kao paketnu datoteku (*.BAT):

SQLCMD -S (lokalno) -E -Q "SIGURNO KOPIRANJE BAZE PODATAKA AltaSVHDb NA DISK = "D:\BACKUP\ AltaSVHDb_monday.bak" S INIT, NOFORMAT, SKIP, NOUNLOAD"
XCOPY D:\BACKUP\ AltaSVHDb_monday.bak \\BACKUP_SERVER\Folder\*.* /Y

Gdje "(lokalno)"- naziv poslužitelja (u slučaju instaliranja imenovane instance SQL Servera, morate navesti puni naziv: “COMPAN_NAME\SQLEXPRESS”), "AltaSVHDb"- naziv baze podataka, "D:\BACKUP\ AltaSVHDb_monday.bak"- naziv datoteke za izradu sigurnosne kopije (različit će se ovisno o danu u tjednu), "BACKUP_SERVER"– naziv računala na koje će se vršiti dodatno kopiranje, "Mapa"- mapa na ovom računalu (mora se dijeliti).

Pokrenite Čarobnjaka za raspoređivanje zadataka (Upravljačka ploča->Planirani zadaci->Dodaj zadatak) i kliknite gumb "Dalje":

Pritisnite gumb "Pregledaj" i navedite stazu do naredbene datoteke (*.BAT) stvorene u koraku a):

Navedite naziv zadatka, odaberite opciju pokretanja "tjedno" i kliknite gumb "Dalje":

Označite okvir pored željenog dana u tjednu, au polju "Vrijeme početka" odredite vrijeme kada bi proces sigurnosne kopije trebao započeti (obično se to radi noću), a zatim kliknite gumb "Dalje":

Unesite korisničko ime i lozinku (dva puta) OS računa pod kojim će se izvršiti zadatak i kliknite gumb "Dalje":

Pažnja! Kako bi se zadatak uspješno završio, morate dodijeliti ovdje navedenom računu (domena ili lokalno računalo) prava pisanja u gornju mapu "\\BACKUP_SERVER\Folder", kao i konfigurirati pristup samom SQL Serveru.

Pritisnite gumb "Završi".

Bilješka. Kako biste provjerili funkcionalnost kreiranog zadatka, potrebno je desnom tipkom miša kliknuti na zadatak koji vas zanima na popisu zadataka (Upravljačka ploča->Planirani zadaci) i odabrati “Pokreni” u kontekstnom izborniku, a zatim provjeriti je li sigurnosna kopija baze podataka datoteka je uspješno kreirana na stazama navedenim u koraku a).

Korištenje "SQL Server Agenta" (nije uključeno u besplatnu verziju)

Za kreiranje posla u SQL Server Agentu trebate:

Pokrenite uslužni program SQL Server Management Studio i spojite se na poslužitelj pod administratorskim računom.

U lijevom dijelu prozora desnom tipkom miša kliknite na odjeljak “Objekti poslužitelja/Uređaji za sigurnosno kopiranje” i u kontekstnom izborniku odaberite “Stvori uređaj za sigurnosno kopiranje”:

U polje "Naziv uređaja" unesite naziv koji će biti povezan s datotekom sigurnosne kopije baze podataka, promijenite putanju u polju "Datoteka" ako je potrebno i kliknite "U redu":

U lijevom dijelu prozora desnom tipkom miša kliknite odjeljak "SQL Server Agent/Tasks" i odaberite "Create task" u kontekstnom izborniku:

U polje "Naziv" unesite naziv zadatka:

Na stranici "Koraci" kliknite gumb "Stvori":

U prozoru koji se pojavi unesite naziv u polje "Step Name", provjerite je li "Transact-SQL (T-SQL) Script" odabrano u polju "Type" i unesite redak u polje "Command" :

SIGURNOSNO KOPIRANJE BAZE PODATAKA AltaSVHDb U AltaSVHDb_ponedjeljak SA INIT, NOFORMAT, SKIP, NOUNLOAD

Gdje "AltaSVHDb"- naziv baze podataka, "AltaSVHDb_ponedjeljak"- naziv sigurnosnog uređaja kreiranog u koraku c) (različit će se prema danu u tjednu):

U prethodnom prozoru kliknite gumb "OK" kao rezultat, sljedeći redak bi se trebao pojaviti na stranici "Koraci":

Kako bi se datoteka sigurnosne kopije baze podataka odmah kopirala na drugo računalo na mreži, morate ponoviti korake f) - h), u prozoru “Create a job step” odabirom vrijednosti “Operating system (CmdExec)” u Polje "Tip" i navođenje u retku polja "Naredba":

XCOPY D:\MSSQL\BACKUP\AltaSVHDb_monday.bak \\BACKUP_SERVER\Folder\*.* /Y

Gdje "D:\MSSQL\BACKUP\AltaSVHDb_monday.bak"- put naveden u koraku c) (različit će se prema danu u tjednu), "BACKUP_SERVER"– naziv računala na koje će se preslikovati, "Mapa"- mapa na ovom računalu (mora se dijeliti):

Bilješka. Kako bi se datoteka uspješno kopirala, morate pokrenuti “SQL Server Agent” pod računom Windows domene kojemu su dodijeljena prava pisanja u gore spomenutu mapu (pogledajte također “SQL2005_installation.doc” ili “SQL2008_installation.doc” ), a također konfiguriran pristup samom SQL poslužitelju (pogledajte odjeljak “Konfiguriranje prava pristupa bazi podataka”, trebate uključiti ovaj račun u ulogu “sysadmin” na stranici “Uloge poslužitelja” i ne učiniti ništa na “ Korisničko mapiranje” i stranice “Zaštićeni objekti”).

Na stranici "Rasporedi" kliknite gumb "Stvori":

Unesite naziv u polje "Naziv", provjerite je li u polju "Vrsta rasporeda" odabrano "Ponavljajući zadatak", au polju "Izvrši" odabrano "Tjedno". Označite okvir pored željenog dana u tjednu (ostalo poništite), au polju "Jednokratni zadatak" označite vrijeme kada bi trebao započeti proces izrade sigurnosne kopije (obično se to radi noću):

U prethodnom prozoru kliknite gumb "U redu", a na stranici "Rasporedi" trebao bi se pojaviti sljedeći redak:

Pritisnite gumb "OK".

Bilješka. Da biste provjerili funkcionalnost stvorenog zadatka, trebate desnom tipkom miša kliknuti zadatak koji vas zanima u odjeljku "SQL Server Agent/Tasks" i odabrati "Run task at a step" u kontekstnom izborniku, odaberite prvi korak ovog zadatak u prozoru koji se pojavi i kliknite "U redu". Zatim će se pojaviti prozor koji prikazuje napredak zadatka. Ako zadatak završi s pogreškom, detaljan opis pogreške može se vidjeti pozivanjem stavke "View Log" u istom kontekstnom izborniku.

U nastavku ćemo vam reći kako izraditi plan održavanja pomoću programa SQL Sever Management Studio. U ovom članku jednostavno ću pokušati jasno opisati algoritam za izradu plana održavanja pomoću Čarobnjaka za plan održavanja, ne ulazeći u teoretski dio problematike. Za više informacija o ovoj temi pogledajte SQL Server Books Online na MSDN-u.

Plan opisan u nastavku uključivat će samo 2 zadatka.

  • Sigurnosna kopija baze podataka.
  • Provjera integriteta baze podataka.

Nadam se da će nakon čitanja ovih uputa u budućnosti svatko moći samostalno izraditi bilo koji potreban plan održavanja SQL poslužitelja.

1. Početni podaci

  1. Operativni sustav obitelji Windows (u mom primjeru se koristi)
  2. Instaliran Microsoft SQL Server 2008 R2 (možete pročitati o instaliranju SQL Servera)
  3. Postojeća baza podataka u SQL Serveru (pročitajte o stvaranju baza podataka u SQL Serveru)
  4. Konfigurirana komponenta Database Mail, ako morate e-poštom obavijestiti operatere o rezultatima plana održavanja (pisao sam o tome kako konfigurirati komponentu Database Mail i kreirati operatera sustava).

2. Provjera rada SQL Server Agenta

Prvo što trebamo učiniti je provjeriti je li SQL Server Agent instaliran i pokrenut. Da biste to učinili, pokrenite opremu " Usluge» (« Početak» ( Početak) — « administracija» ( Administrativni alati) — « Usluge» ( Usluge)) i na popisu usluga pronaći ćemo uslugu “ SQL Server agent» ( SQL Server agent).

Otvorimo svojstva ove usluge (klikom na nju 2 puta) i uvjerimo se da:

  • Vrsta pokretanja je " Automatski"(Vrsta pokretanja: Automatski);
  • Država " Djela"(Status usluge: pokrenut);

U suprotnom, trebate promijeniti parametre kao na gornjoj snimci zaslona i spremiti postavke klikom na “ primijeniti" (Primijeni) .

Sada pokrenimo program "SQL Sever Management Studio" (" Početak» ( Početak) — « Svi programi" (Svi programi) - " Microsoft SQL Server 2008 R2» — « Alati za SQL Server 2008 R2") i unesite podatke za autorizaciju.

Nakon toga, provjerimo još jednom radi li SQL Server Agent (trebao bi postojati kartica u pregledniku objekata SQL Server agent» (SQL Server Agent) sa zelenom ikonom na lijevoj strani.

3. Napravite plan održavanja

Sada prijeđimo na izradu plana održavanja. U Object Exploreru otvorite karticu " Kontrolirati" (Upravljanje), desnom tipkom miša kliknite karticu " Planovi usluga"(Planovi održavanja) i u kontekstnom izborniku odaberite " Čarobnjak za plan održavanja» (Čarobnjak za plan održavanja ) .

U čarobnjaku za plan usluge koji se pokreće, na stranici dobrodošlice kliknite " Unaprijediti"(Dalje) i u sljedećem prozoru unesite naziv i opis novog plana.

Zatim morate odlučiti o rasporedu prema kojem će se taj plan održavanja provoditi. Da biste to učinili, postavite prekidač na " Jedan raspored za cijeli plan ili bez rasporeda» ( Jedan raspored za cijeli plan ili bez rasporeda) i kliknite " Promijeniti…» (Promijeni...) za dodjelu rasporeda.

Prozor " Svojstva rasporeda poslova". Ovdje ćemo postaviti parametre prema kojima treba provoditi plan održavanja i kliknuti “ u redu". U mom primjeru to je:

  • Izvedena - " Tjedni"(Javlja se - Tjedno);
  • Ponavlja se svaki - " 1 Tjedan" V " nedjelja» (Ponavlja se svakih: 1 tjedan(a) nedjeljom);
  • Izvrši jednom dnevno u: — “2:00:00” (Pojavljuje se jednom u: “2:00:00”);

Uvjerimo se još jednom da je raspored ispravno postavljen i kliknite " Unaprijediti"(Sljedeći) .

Ovdje ćemo odabrati zadatke koje će naš plan održavanja obavljati. U mom primjeru to je:

  1. Provjerite integritet baze podataka;
  2. Sigurnosna kopija baze podataka (cijela)

Imajte na umu da za svaki zadatak postoji kratak opis u okviru ispod. Nakon što ste odabrali tražene zadatke, kliknite na “ Unaprijediti"(Sljedeći) .

Sada trebate postaviti redoslijed kojim se zadaci izvode pomoću " Gore…" (Pomakni gore) i " dolje..."(Pomicati prema dolje). Nakon uspostavljanja redoslijeda kliknite na “ Unaprijediti"(Sljedeći) .

Ovdje morate postaviti parametre za svaki zadatak u planu. Prvi zadatak na našem popisu je " Kopiranje baze (puna)» (Sigurnosna kopija baze podataka (cijela)).

Prije svega, trebate odabrati baze podataka za sigurnosno kopiranje klikom na gumb za odabir popisa " Specifične baze podataka"(Odaberite jedno ili više). Nakon odabira baza podataka potrebnih za sigurnosno kopiranje kliknite na “ u redu» .

U nastavku ćemo postaviti lokaciju i razdoblje pohrane sigurnosnih kopija, a također ćemo postaviti dodatne parametre:

  1. Ako postavite prekidač " Napravite datoteku sigurnosne kopije za svaku bazu podataka» (Stvorite datoteku sigurnosne kopije za svaku bazu podataka), tada će se, kada se zadatak izvrši, nekoliko datoteka sigurnosne kopije s nazivima koji odgovaraju nazivima baza podataka stvoriti u odabranom direktoriju. Pa, postavljanje zastave" Napravite poddirektorij za svaku bazu podataka» (Stvorite poddirektorij za svaku bazu podataka) organizirat će datoteke u zasebne mape. Imajte na umu da ekstenziju datoteke sigurnosne kopije morate ostaviti ispunjenom.
  2. Postavljanje zastave" Skup rezervnih kopija uskoro će isteći" (Backup set will expire) govori SQL poslužitelju kada se ovaj skup može prebrisati bez izričitog preskakanja provjere isteka.
  3. Za maksimalnu pouzdanost možete postaviti oznaku " Provjerite integritet sigurnosne kopije"(Provjerite integritet sigurnosne kopije).
  4. Također preporučujem da odaberete " Sažimanje sigurnosnih kopija"(Kompresirajte sigurnosnu kopiju) za uštedu prostora na disku ako verzija SQL Servera koju koristite podržava ovu funkciju.

Ako je prostor na disku ograničen, također možete odabrati jednu datoteku za pohranu sigurnosne kopije, koja će biti prebrisana nakon svakog pokretanja plana održavanja. Da biste to učinili, postavite odgovarajući prekidač na " Napravite sigurnosnu kopiju baza podataka u jednoj ili više datoteka" (Izradite sigurnosnu kopiju baze podataka preko jedne ili više datoteka) i odredite odgovarajući naziv datoteke (budite oprezni, datoteka sigurnosne kopije treba biti navedena s ekstenzijom .bak), a također odaberite " Prepisati"ako sigurnosne kopije postoje: prebriši".

Sada je red na zadatak " Provjera integriteta baze podataka» (Provjera integriteta baze podataka). Sve što trebate učiniti je odabrati bazu podataka. U mom primjeru, ovo je još uvijek ista baza podataka kao u prethodnom koraku. Nakon što ste se odlučili za baze podataka, kliknite " Unaprijediti"(Sljedeći).

Na sljedećoj stranici možete odabrati direktorij u koji će se spremati dnevnik izvršenja posla, te također odrediti SQL Server za slanje izvještaja e-poštom. Nakon postavljanja parametara kliknite na “ Unaprijediti"(Sljedeći).

Ponovno provjerimo sve postavke plana usluge i ako je sve ispravno, kliknite " Spreman" (Završi).

Čarobnjak će započeti izradu plana održavanja. Ako čarobnjak ne otkrije nikakve pogreške, vidjet ćemo poruku o uspješnoj izradi plana. U suprotnom, trebate ispraviti pogreške i ponoviti postupak. Zatvorite prozor klikom na " Zatvoriti"(Zatvoriti).

4. Pokrenite plan održavanja

Za početak izvršavanja plana održavanja, idemo u program Microsoft SQL Server Management Studio. Ovdje, otvaranjem kartice " Planovi usluga» (Planovi održavanja) vidjet ćemo naš novostvoreni plan. Kako biste provjerili njegov rad, desnom tipkom miša kliknite na njega i odaberite " Izvršiti"(Izvrši).

Nakon toga otvorit će se prozor za izvršenje plana održavanja u kojem bi se nakon potrebnog vremena trebala pojaviti poruka o uspješnom izvršenju.

Datoteka sigurnosne kopije trebala bi se pojaviti u odgovarajućim direktorijima

i datoteku dnevnika izvršenja plana.

Kada otvorite ovu datoteku, trebali biste vidjeti nešto poput ovoga:

Ako je tako, čestitamo! Plan održavanja SQL Servera je kreiran i pokrenut.

Je li vam ovaj članak pomogao?

Unatoč činjenici da smo u našim prethodnim materijalima već dotaknuli pitanje sigurnosne kopije baza podataka Microsoft SQL Servera, odgovor čitatelja pokazao je potrebu za stvaranjem punopravnog materijala s dubljim proučavanjem teorijskog dijela. Doista, članci, napisani s naglaskom na praktične upute, omogućuju brzo postavljanje sigurnosnih kopija, ali ne objašnjavaju razloge za odabir određenih postavki. Pokušajmo ispraviti ovaj jaz.

Modeli oporavka

Prije nego što postavite sigurnosnu kopiju, trebali biste odabrati model oporavka. Da biste napravili optimalan izbor, trebali biste procijeniti zahtjeve oporavka i kritičnost gubitka podataka, uspoređujući ih s režijskim troškovima implementacije određenog modela.

Kao što znate, MS SQL baza podataka sastoji se od dva dijela: same baze podataka i dnevnika transakcija za nju. Baza podataka sadrži korisničke i servisne podatke u trenutnom trenutku, transakcijski dnevnik uključuje povijest svih promjena u bazi podataka za određeno razdoblje, transakcijskim dnevnikom možemo vratiti stanje baze podataka na bilo koju proizvoljnu vremensku točku.

Dostupna su dva modela oporavka za korištenje u proizvodnim okruženjima: jednostavan i potpun. Tu je i model sa nepotpuna sječa, ali se preporučuje samo kao dodatak punom modelu za razdoblja masovnih operacija velikih razmjera kada nema potrebe za obnavljanjem baze u određenom trenutku.

Jednostavan model omogućuje backup samo baze podataka; prema tome, možemo vratiti stanje baze podataka samo u trenutku kada je backup napravljen; U isto vrijeme, jednostavna shema ima niske troškove: trebate samo pohraniti kopije baze podataka; dnevnik transakcija se automatski skraćuje i ne raste u veličini. Također, proces oporavka je najjednostavniji i ne oduzima puno vremena.

Cijeli model omogućuje vraćanje baze podataka u bilo koju proizvoljnu vremensku točku, ali zahtijeva, uz sigurnosne kopije baze podataka, pohranjivanje kopija dnevnika transakcija za cijelo razdoblje za koje može biti potrebna obnova. Kada aktivno radite s bazom podataka, veličina dnevnika transakcija, a time i veličina arhiva, može doseći velike veličine. Proces oporavka također je puno složeniji i dugotrajniji.

Prilikom odabira modela oporavka potrebno je usporediti troškove oporavka s troškovima pohrane sigurnosnih kopija, a također treba uzeti u obzir dostupnost i osposobljenost osoblja koje će oporavljati. Restauracija s punim modelom zahtijeva od osoblja određene kvalifikacije i znanja, dok će s jednostavnom shemom biti dovoljno slijediti upute.

Za baze podataka s malom količinom dodanih informacija, može biti isplativije koristiti jednostavan model s visokom učestalošću kopija, koji će vam omogućiti brzi oporavak i nastavak rada ručnim unosom izgubljenih podataka. Cjeloviti model prvenstveno treba koristiti tamo gdje je gubitak podataka neprihvatljiv i gdje bi eventualni oporavak bio skup.

Vrste sigurnosnih kopija

Puna kopija baze podataka- kao što mu ime kaže, predstavlja sadržaj baze podataka i dio aktivnog transakcijskog dnevnika za vrijeme kada je backup formiran (tj. informacije o svim trenutnim i nedovršenim transakcijama). Omogućuje potpuno vraćanje baze podataka na trenutak kada je sigurnosna kopija stvorena.

Delta kopija baze podataka- puna kopija ima jedan značajan nedostatak: sadrži sve podatke baze podataka. Ako je sigurnosna kopija potrebna dosta često, odmah se postavlja pitanje rasipnog korištenja diskovnog prostora, budući da će većinu prostora za pohranu zauzimati isti podaci. Da biste uklonili ovaj nedostatak, možete koristiti diferencijalne kopije baze podataka koje sadrže samo informacije koje su se promijenile od zadnje pune kopije.

Imajte na umu da su diferencijalna kopija podaci iz posljednjeg puta puna kopiranje, tj. Svaka sljedeća diferencijalna kopija sadrži podatke prethodne (ali se mogu mijenjati) i veličina kopije će stalno rasti. Za vraćanje je dovoljna jedna puna i jedna diferencijalna kopija, obično posljednja. Broj diferencijalnih kopija treba odabrati na temelju povećanja njihove veličine; čim veličina diferencijalne kopije bude jednaka veličini polovice pune, ima smisla napraviti novu punu kopiju.

Sigurnosna kopija dnevnika transakcija- odnosi se samo na model potpunog oporavka i sadrži kopiju dnevnika transakcija počevši od trenutka stvaranja prethodne kopije.

Važno je zapamtiti sljedeću točku - kopije dnevnika transakcija ni na koji način nisu povezane s kopijama baze podataka i ne sadrže informacije iz prethodnih kopija, tako da za vraćanje baze podataka morate imati neprekinuti lanac kopija za razdoblje tijekom kojeg želite da biste mogli vratiti stanje baze podataka. U tom slučaju trenutak posljednjeg uspješnog kopiranja mora biti unutar tog razdoblja.

Pogledajmo gornju sliku, ako je prva kopija datoteke dnevnika izgubljena, tada ćete moći vratiti stanje baze podataka samo u vrijeme pune kopije, što će biti slično jednostavnom modelu oporavka; moći će vratiti stanje baze podataka u bilo kojem trenutku tek nakon sljedeće diferencijalne (ili pune) kopije, pod uvjetom da će lanac kopija dnevnika počevši od one koja je prethodila kopiranju baze podataka i dalje biti kontinuiran (na slici - od trećeg i dalje).

Dnevnik transakcija

Da biste razumjeli procese oporavka i svrhu različitih vrsta sigurnosnih kopija, trebali biste pobliže pogledati strukturu i rad dnevnika transakcija. Transakcija je najmanja moguća logična operacija koja ima smisla i može se dovršiti samo u potpunosti. Ovaj pristup osigurava cjelovitost podataka i dosljednost u svim situacijama, budući da je srednje stanje operacije neprihvatljivo. Dnevnik transakcija koristi se za kontrolu svih promjena u bazi podataka.

Kada se izvrši bilo koja operacija, zapis o početku transakcije dodaje se u dnevnik transakcija, svakom zapisu se dodjeljuje jedinstveni broj (LSN) iz neprekinutog niza, kada se bilo koji podatak promijeni, odgovarajući unos se pravi u dnevniku, a nakon završetka operacije u dnevniku se pojavljuje oznaka koja označava da je transakcija zatvorena (fiksna).

Pri svakom pokretanju, sustav analizira dnevnik transakcija i vraća sve neizvršene transakcije, dok istovremeno vraća promjene koje su zabilježene u dnevniku, ali nisu zapisane na disk. To omogućuje korištenje predmemoriranja i odgođenog pisanja bez brige o integritetu podataka, čak i u odsutnosti rezervnih sustava napajanja.

Dio dnevnika koji sadrži aktivne transakcije i služi za oporavak podataka naziva se aktivni dio dnevnika. Započinje brojem koji se naziva minimalni broj oporavka (MinLSN).

U najjednostavnijem slučaju, MinLSN je rekordni broj prve transakcije na čekanju. Ako pogledate gornju sliku, otvaranjem plave transakcije dobit ćemo MinLSN jednak 321, nakon što se popravi u zapisu 324, MinLSN broj će se promijeniti u 323, što će odgovarati broju zelene, još ne počinjena, transakcija.

U praksi je sve malo kompliciranije, na primjer, podaci zatvorene plave transakcije možda još nisu isprani na disk i premještanje MinLSN-a na 323 onemogućit će oporavak ove operacije. Kako bi se izbjegle takve situacije, uveden je koncept kontrolne točke. Kontrolna točka se stvara automatski kada se pojave sljedeći uvjeti:

  • Prilikom eksplicitnog izvođenja naredbe CHECKPOINT. Kontrolna točka se pokreće na trenutnoj bazi podataka veze.
  • Kada izvodite minimalno zabilježenu operaciju na bazi podataka, kao što je kada izvodite operaciju skupnog kopiranja na bazi podataka koja podliježe modelu skupno zabilježenog oporavka.
  • Prilikom dodavanja ili uklanjanja datoteka baze podataka korištenjem naredbe ALTER DATABASE.
  • Kada zaustavite instancu SQL Servera pomoću izjave SHUTDOWN ili kada zaustavite uslugu SQL Servera (MSSQLSERVER). U oba slučaja, kontrolna točka će se stvoriti za svaku bazu podataka u instanci SQL Servera.
  • Ako vaša instanca SQL Servera povremeno stvara automatske kontrolne točke na svakoj bazi podataka kako bi se smanjilo vrijeme oporavka baze podataka.
  • Prilikom izrade sigurnosne kopije baze podataka.
  • Prilikom izvođenja radnje koja zahtijeva gašenje baze podataka. Primjeri uključuju postavljanje parametra AUTO_CLOSE na ON i zatvaranje posljednje veze korisnika s bazom podataka ili promjenu postavke baze podataka koja zahtijeva ponovno pokretanje baze podataka.

Ovisno o tome koji se događaj dogodio prvi, MinLSN će biti postavljen ili na broj zapisa kontrolne točke ili na početak najstarije transakcije na čekanju.

Skraćivanje dnevnika transakcija

Dnevnik transakcija, kao i svaki dnevnik, zahtijeva povremeno čišćenje zastarjelih unosa, inače će se povećati i zauzeti sav raspoloživi prostor. S obzirom da pri aktivnom radu s bazom podataka veličina dnevnika transakcija može značajno premašiti veličinu baze podataka, ovo je pitanje relevantno za mnoge administratore.

Fizički, datoteka dnevnika transakcija je spremnik za virtualne zapisnike koji se uzastopno popunjavaju kako dnevnik raste. Logički zapisnik koji sadrži MinLSN unos je početak aktivnog dnevnika; logički zapisnici koji mu prethode su neaktivni i nisu potrebni za automatsko obnavljanje baze podataka.

Ako je odabran jednostavan model oporavka, tada kada logički dnevnici dostignu veličinu jednaku 70% fizičke datoteke, automatski se briše neaktivni dio loga, tzv. skraćivanje. Međutim, to ne smanjuje fizičku datoteku dnevnika; samo su logički zapisnici skraćeni i mogu se ponovno koristiti nakon ove operacije.

Ako je broj transakcija velik i kada se dosegne 70% fizičke veličine datoteke, nema neaktivnih logičkih zapisa, tada će se fizička veličina datoteke povećati.

Tako će datoteka dnevnika transakcija s jednostavnim modelom oporavka rasti sukladno aktivnosti rada s bazom podataka sve dok pouzdano ne sadrži cijeli aktivni dio dnevnika. Nakon čega će njegov rast prestati.

S punim modelom, neaktivni dio dnevnika ne može se skratiti dok se u potpunosti ne napravi sigurnosna kopija. Do skraćivanja dnevnika dolazi ako je napravljena sigurnosna kopija dnevnika transakcija i ako je kreirana kontrolna točka.

Neispravno konfiguriranje sigurnosne kopije dnevnika transakcija u potpunom modelu može rezultirati nekontroliranim rastom datoteke dnevnika, što je često problem za neiskusne administratore. Također često nailazite na savjete o ručnom skraćivanju dnevnika transakcija. S modelom potpunog oporavka to se ne smije činiti kategorički, jer će to narušiti cjelovitost lanca kopija dnevnika i moći ćete vratiti bazu podataka samo u trenutku kada su kopije stvorene, što će odgovarati jednostavnom modelu .

U ovom slučaju, vrijeme je da se prisjetimo onoga o čemu smo govorili na početku članka; ako troškovi punog modela premašuju troškove restauracije, prednost treba dati jednostavnom modelu.

Jednostavan model oporavka

Sada, nakon što smo stekli potreban minimum znanja, možemo prijeći na detaljnije razmatranje modela oporavka. Počnimo s jednim jednostavnim. Recimo da u trenutku kvara imamo jednu punu i dvije diferencijalne kopije:

Sigurnosne kopije su se radile jednom dnevno, a zadnja kopija je napravljena u noći s 21. na 22. Neuspjeh se događa navečer 22. prije nego što se stvori sljedeća kopija. U tom slučaju morat ćemo sekvencijalno vratiti punu i posljednju diferencijalnu kopiju, a podaci za zadnji radni dan bit će izgubljeni. Ako se iz nekog razloga i kopija od 21. pokaže oštećenom, tada možemo restaurirati prethodnu kopiju, izgubivši još jedan dan posla, a pritom nas oštećenje kopije za 20. neće ni na koji način spriječiti od uspješnog vraćanja podataka navečer 21., kada je dostupna odgovarajuća kopija.

Model potpunog oporavka

Razmotrimo sličnu situaciju, ali koristeći model potpunog oporavka. Također svakodnevno izrađujemo sigurnosne kopije po principu pun + diferencijal, a također kopiramo dnevnik transakcija nekoliko puta dnevno.

Proces oporavka u ovom će slučaju biti složeniji. Prije svega, morat ćete ručno napraviti sigurnosnu kopiju repa dnevnika (prikazano crvenom bojom), tj. dio dnevnika od vremena kada je zadnja kopija stvorena do nesreće.

Ako se to ne učini, tada će biti moguće vratiti bazu podataka samo u stanje u vrijeme kada je kreirana zadnja kopija dnevnika transakcija.

U tom slučaju oštećenje datoteke kopije dnevnika za prethodni dan neće nas spriječiti da vratimo trenutno stanje baze podataka, već će nas ograničiti na trenutak kada je zadnja kopija kreirana, tj. trenutni dani.

Zatim sekvencijalno vraćamo potpune i diferencijalne kopije i lanac kopija dnevnika stvorenog nakon posljednje sigurnosne kopije, posljednja koju vraćamo je kopija konačnog fragmenta dnevnika, što će nam dati priliku da vratimo bazu podataka ispravno u vrijeme nesreće ili proizvoljna koja joj je prethodila.

Ako je posljednja diferencijalna kopija oštećena, u slučaju jednostavnog modela to će dovesti do gubitka još jednog radnog dana; puni model vam omogućuje vraćanje pretposljednje kopije, nakon čega ćete morati vratiti cijeli lanac transakcije kopije dnevnika od trenutka pretposljednje kopije do kvara. Dubina izvlačenja ovisi samo o dubini kontinuiranog lanca trupaca.

S druge strane, ako je jedna od kopija transakcijskog dnevnika oštećena, recimo pretposljednja, tada ćemo podatke moći vratiti samo do vremena zadnje sigurnosne kopije + razdoblje u netaknutom lancu kopija dnevnika. Na primjer, ako su dnevnici napravljeni u 12, 14 i 16 sati, a zapis kreiran u 14 sati je oštećen, tada s dnevnom kopijom možemo obnoviti bazu podataka do kraja kontinuiranog lanca, tj. do 12 sati.

  • Oznake:

Omogućite JavaScript za pregled