Automatické zálohovanie servera MS SQL. Ako nastavím denné zálohovanie pomocou SQL Server Express? Ako obnoviť zálohy

Pozrime sa, ako usporiadať dve najbežnejšie administratívne úlohy. SQL Server'A:

Plánovanie zálohovania databázy

  • Otvorte SQL Management Studio a pripojte sa k požadovanej databáze. Uistite sa, že je spustený SQL Server Agent;
  • Rozbaľte uzol Správa - Údržba (na to musíte mať rolu "SYSADMIN") - kliknite kliknite pravým tlačidlom myši a vyberte „Nový plán údržby“;
  • Zadajte názov pre nový plán údržby;
  • Kliknite na ikonu kalendára na pravej strane jedného riadku. V okne, ktoré sa otvorí, nakonfigurujte čas vykonania úlohy. Vyberte si čas, kedy je databáza menej vyťažená;
  • V sekcii Toolbox presuňte úlohu Backup Database Task do hlavnej oblasti;
  • Dvakrát kliknite na Backup Database Task - otvorí sa okno s nastaveniami zálohovacej úlohy - nastavte požadované nastavenia;
  • Kliknite na tlačidlo OK - teraz sa zálohy vytvoria v súlade s naplánovaným časom;




Odstránenie starých záloh

Keďže záložné súbory sa budú vytvárať často, čoskoro budete mať na pevnom disku menej voľného miesta. Preto budete musieť odstrániť zastarané záložné súbory. Pokračujme v konfigurácii plánu údržby:

  • Z panela s nástrojmi presuňte úlohu Maintenance Cleanup Task do hlavnej oblasti;
  • Dvojitým kliknutím na Úloha údržby údržby otvoríte okno vlastností. V ňom musíte definovať umiestnenie záloh, ich rozšírenie a určiť vek súborov, ktoré sa majú vymazať. Je dobrou praxou uchovávať zálohy až jeden mesiac;
  • Kliknite na tlačidlo OK a uložte plán údržby;
  • Potom môžete buď počkať, kým sa vykoná ďalší plán údržby, alebo ho spustiť manuálne (kliknutím pravým tlačidlom myši na plán údržby v Prieskumníkovi objektov).

Odporúča sa prispôsobiť pravidelné zálohovanie databázy(v prípade zlyhania hardvéru alebo softvéru) a najlepšie so zálohami za posledných pár dní, napríklad sedem (za posledný týždeň).

Na tento účel môžete použiť buď vstavaný plánovač úloh v SQL Server - "SQL Server Agent" (in bezplatná verzia nie je súčasťou dodávky), alebo štandardný "Windows Scheduler" v kombinácii s pomôckou SQLCMD.EXE, ktorá vám umožňuje spúšťať dotazy na SQL Server z príkazový riadok. V plánovači musíte vytvoriť aspoň sedem úloh (jednu pre každý deň v týždni), pričom každá z nich (raz týždenne) nahradí jeden zo siedmich súborov obsahujúcich zodpovedajúcu zálohu databázy.

Okrem toho sa odporúča ukladať záložné súbory nielen na pevný disk počítača, kde je nainštalovaný SQL Server, ale aj duplikovať ich na pásku resp. HDD iný počítač v sieti. Na tento účel môžete použiť buď špeciálny softvér, ktorý vám umožní zálohovať celý disk, alebo použiť rovnaký plánovač na kopírovanie súborov na pásku alebo iný počítač (druhý krok).

Používanie „Plánovača systému Windows“ (pre bezplatnú verziu)

Na vytvorenie úlohy v "Plánovači systému Windows" potrebujete:

Spustite program Poznámkový blok (Štart->Všetky programy->Príslušenstvo->Poznámkový blok) a zadajte nasledujúce dva riadky, potom ich uložte ako dávkový súbor (*.BAT):

SQLCMD -S (lokálne) -E -Q "ZÁLOHOVANIE DATABÁZY AltaSVHDb NA DISK = "D:\BACKUP\ AltaSVHDb_monday.bak" S INIT, NOFORMAT, SKIP, NOUNLOAD"
XCOPY D:\BACKUP\ AltaSVHDb_monday.bak \\BACKUP_SERVER\Folder\*.* /Y

Kde "(miestne)"- názov servera (ak inštalujete pomenovanú inštanciu SQL Servera, musíte zadať celý názov: „COMP_NAME\SQLEXPRESS“), AltaSVHDb- názov databázy, "D:\BACKUP\ AltaSVHDb_monday.bak"- názov súboru na vytvorenie záložnej kópie v ňom (líši sa podľa dňa v týždni), "BACKUP_SERVER"- názov počítača, do ktorého sa vykoná dodatočné kopírovanie, Priečinok- priečinok na tomto počítači (musí byť zdieľaný).

Spustite sprievodcu plánovaním úloh (Ovládací panel->Naplánované úlohy->Pridať úlohu) a kliknite na tlačidlo „Ďalej“:

Kliknite na tlačidlo "Prehľadávať" a zadajte cestu dávkový súbor(*.BAT) vytvorené v kroku a):

Zadajte názov úlohy, vyberte možnosť „týždenného“ spúšťania a kliknite na tlačidlo „Ďalej“:

Začiarknite políčko vedľa požadovaného dňa v týždni a v poli „Čas začiatku“ zadajte čas, kedy sa má proces zálohovania spustiť (zvyčajne sa to robí v noci), potom kliknite na tlačidlo „Ďalej“:

Zadajte používateľské meno a heslo (dvakrát) účtu OS, pod ktorým sa úloha vykoná, a kliknite na tlačidlo „Ďalej“:

Pozor! Aby úloha prebehla úspešne, musíte zadať tu uvedený účet (doménu alebo lokálny počítač) oprávnenia na zápis do vyššie uvedeného priečinka "\\BACKUP_SERVER\Folder", ako aj konfiguráciu prístupu k samotnému serveru SQL Server.

Stlačte tlačidlo "Dokončiť".

Poznámka. Ak chcete skontrolovať funkčnosť vytvorenej úlohy, v zozname úloh (Ovládací panel->Naplánované úlohy) kliknite pravým tlačidlom myši na úlohu, ktorá vás zaujíma, a v obsahové menu vyberte položku "Spustiť" a potom sa uistite, že záložný súbor databázy bol úspešne vytvorený pomocou ciest, ktoré boli zadané v kroku a).

Použitie "SQL Server Agent" (nie je súčasťou bezplatnej verzie)

Ak chcete vytvoriť úlohu v SQL Server Agent, musíte:

Spustite pomôcku SQL Server Management Studio a pripojte sa k serveru pomocou účtu správcu.

V ľavej časti okna kliknite pravým tlačidlom myši na časť „Objekty servera / Záložné zariadenia“ a v kontextovej ponuke vyberte položku „Vytvoriť zálohovacie zariadenie“:

Do poľa „Názov zariadenia“ zadajte názov, ktorý bude priradený k súboru zálohy databázy, v prípade potreby zmeňte cestu v poli „Súbor“ a kliknite na „OK“:

V ľavej časti okna kliknite pravým tlačidlom myši na sekciu „SQL Server Agent/Jobs“ a v kontextovej ponuke vyberte položku „Create Job“:

Do poľa „Názov“ zadajte názov úlohy:

Na stránke Kroky kliknite na tlačidlo Vytvoriť:

V zobrazenom okne zadajte názov do poľa „Názov kroku“, skontrolujte, či je v poli „Typ“ vybratá možnosť „Transact-SQL (T-SQL) Script“ a do poľa „Príkaz“ zadajte riadok:

ZÁLOHA DATABÁZY AltaSVHDb DO AltaSVHDb_pondelka S INIT, NOFORMAT, SKIP, NOUNLOAD

Kde AltaSVHDb- názov databázy, AltaSVHDb_pondelok- názov zálohovacieho zariadenia vytvoreného v kroku c) (líši sa podľa dňa v týždni):

V predchádzajúcom okne kliknite na tlačidlo "OK", v dôsledku toho by sa na stránke "Kroky" mal zobraziť nasledujúci riadok:

Aby sa záložný súbor databázy okamžite skopíroval na iný počítač v sieti, zopakujte kroky f) - h), v okne "Vytvorenie kroku úlohy" a vyberte hodnotu " operačný systém(CmdExec)“ a v poli „Command“ špecifikujúcom riadok:

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

Kde "D:\MSSQL\BACKUP\AltaSVHDb_monday.bak"- cesta špecifikovaná v kroku c) (bude sa líšiť podľa dňa v týždni), "BACKUP_SERVER"- názov počítača, do ktorého sa kópia vytvorí, Priečinok- priečinok na tomto počítači (musí byť zdieľaný):

Poznámka. Ak chcete súbor úspešne skopírovať, musíte pod účtom spustiť "SQL Server Agent". Windows doména, ktorému boli udelené povolenia na zápis do vyššie uvedeného priečinka (pozri tiež „SQL2005_installation.doc“ alebo „SQL2008_installation.doc“) a bol nakonfigurovaný prístup k samotnému serveru SQL (pozri časť „Nastavenie prístupových práv k databáze“, povoľte túto možnosť účet na stránke Roly servera a nerobte nič na stránkach Mapovanie používateľov a Zabezpečiteľné objekty).

Na stránke „Rozvrhy“ kliknite na tlačidlo „Vytvoriť“:

Zadajte názov do poľa Názov, uistite sa, že pole Typ plánu je nastavené na možnosť Opakovaná úloha a pole Spustenia je nastavené na Týždenne. Začiarknite políčko vedľa požadovaného dňa v týždni (zrušte začiarknutie zvyšku) a v poli „Jedna úloha“ zadajte čas, kedy má začať proces zálohovania (zvyčajne sa to robí v noci):

V predchádzajúcom okne kliknite na tlačidlo "OK", v dôsledku toho by sa na stránke "Plány" mal zobraziť nasledujúci riadok:

Stlačte tlačidlo "OK".

Poznámka. Ak chcete skontrolovať funkčnosť vytvorenej úlohy, musíte kliknúť pravým tlačidlom myši na požadovanú úlohu v časti „SQL Server Agent / Úlohy“ a v kontextovej ponuke vybrať položku „Spustiť úlohu v kroku“, vybrať prvý krok tejto úlohy v zobrazenom okne a kliknite na tlačidlo "OK". Zobrazí sa okno s priebehom úlohy. Ak sa vykonávanie úlohy skončí chybou, potom Detailný popis chyby je možné zobraziť vyvolaním položky "Zobraziť protokol" v tej istej kontextovej ponuke.

Rozdielová záloha je založená na poslednej predchádzajúcej úplnej zálohe údajov. Rozdielová záloha uchováva iba zmeny, ktoré boli vykonané od poslednej úplnej zálohy.
Odporúčania:
  1. Ak vytvorenie úplnej kópie databázy trvá dlho, použite rozdielové kópie databázy
  2. Pravidelne vytvárajte úplnú zálohu databázy, aby ste znížili množstvo rozdielových záloh, ktoré vytvárate.
  3. Po vytvorení úplnej kópie databázy strácajú všetky predchádzajúce rozdielové kópie svoj význam.
Môžete si prečítať viac o odporúčaniach pre frekvenciu vytvárania rozdielových záloh.

Uvediem malý príklad z praxe, prečo sme začali používať rozdielovú kópiu. Databáza nášho klienta sa časom rozrástla do takej veľkosti, že vytvorenie plnej zálohy trvalo 8 hodín, niekoľko ďalších mesiacov a možno by sa do začiatku pracovného dňa táto operácia nestihla dokončiť. Po prechode na rozdielovú zálohu sme skrátili čas z 8 hodín na 2-4 minúty (v závislosti od dňa v týždni). Raz týždenne sme vytvorili úplnú kópiu databázy.

Príklad SQL na vytvorenie rozdielovej zálohy databázy s overením zálohy po dokončení (odlišné od úplná kópia vlajka DIFERENCIÁLNY by sa mal použiť namiesto toho NOFORMAT).

Deklarujte @pathBackup ako varchar(55) set @pathBackup = N"C:\Backup\[Názov súboru DB]_" + REPLACE(convert(varchar,GETDATE(), 104),".","_") + " . bak" ZÁLOHA DATABÁZY [Názov databázy] NA DISK = @pathBackup S DIFERENCIÁLOM, NOFORMAT, INIT, NAME = N"Úplná záloha databázy", SKIP, NOREWIND, NOUNLOAD, STATS = 10, CHECKSUM GO deklarovať @backupSetId ako int deklarovať @pathBackup varchar(55) set @pathBackup = N"C:\Backup\[názov súboru databázy]_" + REPLACE(convert(varchar,GETDATE(), 104),".","_") + ".bak" vyberte @ backupSetId = pozícia z msdb..backupset kde database_name=N"[názov databázy]" a backup_set_id=(vyberte max(backup_set_id) z msdb..backupset kde database_name=N"[názov databázy]") ak je @backupSetId null begin raiserror (N"Overenie zlyhalo. Nenašli sa žiadne informácie o zálohe pre databázu '[Názov databázy]'", 16, 1) end OBNOVIŤ VERIFYONLY Z DISKU = @pathBackup WITH FILE = @backupSetId, NOUNLOAD, NOREWIND GO

3.Systémové databázy
Okrem hlavnej databázy a jej pridružených súborov dôrazne odporúčam vytvárať kópie aj systémových databáz. Začnime tým, že sa pozrieme na to, aké databázy existujú v MS SQL. Je ich len 5:

Rozhodol som sa zálohovať iba 2 systémové databázy:

  1. msdb - pretože tam sú uložené nakonfigurované úlohy a iné
  2. master - ukladá všetky nastavenia vykonané SQL Serverom.
Tieto informácie stále nie sú veľmi dôležité a možno ich obnoviť ručne, ale prečo strácať čas navyše, keď ich môžete jednoducho prevziať zo zálohy.
4. Záložný plán
Na základe vyššie uvedeného zostavíme náš plán zálohovania dát. Môže sa líšiť od toho, čo potrebujete, všetko závisí od požiadaviek na obnovu databázy. Keď som plán pripravoval, musel som počítať s tým, že je potrebné dáta čo najviac obnoviť a strata dát nebola dlhšia ako jedna hodina.

Urobíme nasledujúce zálohy:

  • Úplná kópia hlavnej databázy nie je potrebná viac ako raz týždenne
  • Rozdielna kópia hlavnej databázy, každý deň
  • Kópie protokolu transakcií hlavnej databázy každú hodinu
  • Raz týždenne kópia databázy hlavného systému
  • Kópia systémovej databázy msdb raz týždenne
V dôsledku toho sme dostali nasledujúci plán zálohovania údajov:
Deň v týždni
Čas
Akcie
Frekvencia
Popis
pondelok piatok
Od 8:00 do 21:00
Zálohy

Denník transakcií

Každú hodinu
Po vykonaní zálohy databázy sa protokol transakcií skomprimuje a skráti
Sobota nedeľa
Od 8:00 do 18:00
pondelok nedeľa
22-00
Diferenciálna kópia hlavnej databázy
1 za deň
Po úspešnej delta kópii sa vymažú všetky staré kópie protokolu transakcií
sobota
12-00
Kontrola databázy
1 za deň
Kontrola integrity databázy Case.
sobota
18-00
Vytvorenie úplnej kópie databázy
1 za deň
Po dokončení tejto operácie sa na e-mail odošle upozornenie.

Ak bola záloha úspešná,

  • stará plná záloha
  • všetky staré diferenciálne kópie
  • všetky staré protokoly transakcií
pondelok nedeľa
23-30
Vytvorenie kópie základne hlavného systému
1 za deň

nedeľu
12-30
Vytvorenie kópie systémovej databázy msdb
1 krát za mesiac
Vždy je uložená len posledná kópia databázy
  1. Použite možnosť ZÁLOHA S KONTROLNÝM SÚČTOM
    aby bolo všetko v poriadku. Nevýhodou tohto riešenia je, že pri veľkých databázach môže kontrola kontrolného súčtu vážne zaťažiť systém.
  2. Nezálohujte súbory na rovnaký fyzický disk ako databáza alebo denník transakcií.
  3. Ak používate MS SQL 2008 alebo vyšší, odporúčam vám použiť kompresiu záloh SQL. Nasledujúci kód štandardne povolí kompresiu: USE master; GO EXEC sp_configure „predvolená kompresia zálohy“, „1“; PREKONFIGURÁCIA S PREPISOM;
  4. uchovávajte zálohy niekoľko dní pre prípad, že by sa jedna z nich poškodila – stará záloha je lepšia ako žiadna.
  5. Použite DBCC CHECKDB na kontrolu každej databázy pred kopírovaním vás to včas upozorní na hroziace problémy. DBCC CHECKDB("Názov databázy") S NO_INFOMSGS, ALL_ERRORMSGS; Poznámka: v praxi sme používali túto kontrolu tesne pred vykonaním úplnej zálohy.
  6. Pravidelne aktualizujte štatistiky a reorganizujte databázové indexy

Používame aplikáciu

Niekoľko poznámok k aplikácii:
  • Všetky texty a požiadavky v kóde sú vyňaté ako zdroje, bolo to pre mňa jednoduchšie
  • Keď zadáte parametre pripojenia a ďalšie nastavenia, uložia sa do súboru. Pre Express a Standard sa používajú rôzne súbory (dbStandart, udExpress), v ktorých je uložená trieda UserData
  • Niektoré operácie môžu vyžadovať práva správcu
  • Zapnuté tento moment db pripojenie nefunguje pod účtom domény
  • Program nemá super krásne rozhranie
1. Nastavenie upozornení správcu
Bol som príliš lenivý na to, aby som zakaždým šiel na server a skontroloval, či úloha fungovala alebo sa vyskytla nejaká chyba. Áno, a chcel som dostávať ďalšie upozornenia, nielen o dokončení úloh.

Na tento účel sa používa DatabaseMail MS SQL (pre verziu Standard a vyššie)
Vo svojej aplikácii som vytvoril špeciálnu sekciu na automatizáciu tejto úlohy

Po kliknutí sa zobrazí formulár na vyplnenie údajov potrebných na vytvorenie profilu zoznamu adries:

Aplikácia je automaticky nastavená na štandard 25 SMTP port pre adresu, z ktorej sa listy odosielajú. V prípade potreby ho možno zmeniť v procedúre sysmail_add_account_sp
Používateľské meno a heslo sa vyžadujú, ak má poštová služba nakonfigurovanú autentifikáciu.

Meno operátora v systéme je uvedené, aby sme mohli normálne vytvoriť profil v DatabaseMail. Napíšte akékoľvek meno, ktoré vám bude jasné. Nižšie je uvedený príklad vyplneného formulára.

  1. sa menia systémové parametre MS SQL.
  2. Profil DatabaseMail je vytvorený
  3. Profil aktivovaný v SQL Agente
  4. DatabaseMail Account je vytvorený
  5. Pridajte DatabaseMail účet do Database Mail Profile
  6. Operátor DatabaseMail je vytvorený
Podrobnejšie je to popísané v ďalšom článku a čiastočne som to prevzal odtiaľto. Prirodzene, tieto akcie je možné vykonávať pomocou SSMS.
2. Ďalšie upozornenia pre správcu
Program poskytuje 2 úlohy aplikované na databázu:
  1. kontrola integrity databázy. Na kontrolu databázy bol použitý štandardný postup DBCC CHECKDB.
  2. informovanie o voľné miesto v súborových skupinách.
  3. Druhá úloha bola implementovaná dotazom na systémovú tabuľku dbo.sysfiles
  4. Tu je príklad daná žiadosť, ktorý bol vykonaný do databázy:
Vyberte NAME = left(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 Z dbo.sysfiles a
Odpoveď zo servera prichádza na e-mail administrátora vo forme html značky. Táto syntax je možná vďaka nasledovnému štandardná funkcia MS SQL pre XML.

Taktiež, keď som hľadal, ako previesť text na vrátený výsledok dopytov v html, narazil som na nasledujúcu stránku, kde človek vytvoril celý postup na tieto účely
Tieto operácie môžete nakonfigurovať pomocou príslušnej položky v ponuke programu:

Zobrazí sa okno na zadanie poštovej schránky, do ktorej sa má odoslať html text správy:

3. Riešenie problémov pri konfigurácii DatabaseMail
V MS SQL 2008 som narazil na problém pri konfigurácii SQL Server Agent. Symptómy sú nasledovné, po nastavení nie je možné spustiť SQL Agenta. Toto sa rieši hlavne inštaláciou aktualizácie na SQL server.

Ak tieto aktualizácie nepomôžu, musíte si stiahnuť opravu. Dá sa nájsť na tejto stránke. Nemôžem teraz špecifikovať konečný odkaz, aby som sa dostal k balíku opráv, budem musieť odpovedať na niekoľko otázok.
Ak sa vyskytnú problémy s modulom DatabaseMail. Po nakonfigurovaní tohto modulu pomocou aplikácie musíte prejsť na SQL Agent a zobraziť denník udalostí. Ak sa vyskytnú chyby, nemožno sa pripojiť k poštová schránka". Znamená to, že existuje problém, aj keď je list odoslaný cez šek.

Toto je opravené nasledujúcimi manipuláciami:

  1. Management Studio - SQL Server Agent - Vlastnosti.
  2. Výstražný systém
  3. Zrušte začiarknutie políčka Povoliť poštový profil
  4. Kliknite na tlačidlo OK
  5. Prihláste sa znova a začiarknite políčko.
  6. Reštartujte SQL Server Agent.
Skontrolujte účet pre službu SQL Agent. Ak je to doména účtu zmeniť na systém alebo naopak. Všetko musí fungovať.
4.Nastavte zálohovanie pomocou aplikácie pre SQL Standard:
Vyberte verziu Standard. Nastavte upozornenia. (pozri časť, nastavenia upozornení):

Pripojíme sa k databáze, vyplníme údaje pre pripojenie a určíme databázu, pre ktorú sa bude úloha uplatňovať:

Vyberte nastavenie zálohovania:

Zadajte cesty na ukladanie kópií databázy. Ak zadané priečinky neexistujú, program sa ich pokúsi vytvoriť (vyžadujú sa príslušné práva).

Stlačíme uložiť a príslušné úlohy sa nakonfigurujú pre databázu. Odporúča sa konfigurovať pre každú zálohu rôzne priečinky, pretože pri odstraňovaní sa vymažú všetky súbory s príponou bak. (cm. sekcia mazanie kópií databázy)

5.Nastavte zálohovanie pomocou aplikácie pre SQL Express:
Keďže v SQL Express nie je žiadny SQL Agent, úloha automatizácie záloh musela byť vyriešená iným spôsobom. Vytvorené v priečinku určenom používateľom bat súbor e, v ktorom je popísaný SQL dotaz Ten, kto je zodpovedný za vytvorenie zálohy. V prípade potreby ho môžete priamo upraviť. Okrem toho by mal fungovať štandardný plánovač Windows, ktorý vytvorí úlohu, ktorá sa spustí raz denne v určenom čase.

Za týmto účelom spustíme aplikáciu. Vyberte MS SQL Express:

Zobrazí sa formulár na vyplnenie parametrov:

Označíme, kde bude naša kópia uložená, a tiež kde sa bude nachádzať bat súbor na vytvorenie kópie databázy (nemusíte zadávať názov súboru, nastaví sa automaticky). Ďalej zadajte nastavenia pripojenia a čas, kedy chcete spustiť úlohu.

Jedinou nevýhodou tohto prístupu je, že heslo na pripojenie k databáze musí byť uložené ako čistý text.

6.Vymazanie úloh z databázy.
Ak potrebujete vymazať všetky úlohy z databázy (napríklad chcete zmeniť spôsob uloženia databázy). Na tento účel použite príslušnú položku v ponuke programu. Všetky úlohy s určitou počiatočnou predponou (v mojom prípade King) budú z SQL Agenta odstránené:

7. Odstránenie kópií databázy
V niektorých úlohách je nakonfigurované vymazanie starých kópií databázy. Na to používam procedúru master.dbo.xp_delete_file. Príklad použitia: Odstráňte všetky súbory bak zo zadaného priečinka, ktoré sú staršie ako 14 dní.
EXECUTE master.dbo.xp_delete_file 0,"E:\backups",N"bak",dateadd(d,-14,getdate()),0;
A tu je ďalší podrobnejší príklad a informácie o tom, aké parametre daná funkcia akceptuje.

Ako obnoviť zálohy

Pre nedostatok času ešte nebol implementovaný recovery modul, možno ho v budúcnosti doplním, ale zatiaľ len stručne popíšem, ako bude možné obnoviť databázu.

S pomocou SQL skript. Príkaz RESTORE sa používa na obnovenie databázy.

Ak potrebujete obnoviť iba databázu z úplnej kópie, stačí spustiť nasledujúci skript:
OBNOVIŤ DATABÁZU [názov databázy] Z DISKU = "Z:\SQLServerBackups\back.bak" NÁHRADOU
Ak je potrebné postupne obnoviť najprv úplnú kópiu, rozdielové kópie a protokoly transakcií, musíte napísať nasledujúci SQL skript.

OBNOVIŤ DATABÁZU TEST_DB - obnovenie úplnej kópie Z test_db_full S NORECOVERY; GO RESTORE DATABASE TEST_DB - obnovenie rozdielovej kópie FROM test_db_diff SO SÚBOROM = 1, NORECOVERY; GO RESTORE LOG TEST_DB – obnovenie transakčného protokolu #1 FROM test_db_tran_1 SO SÚBOROM = 1, S NORECOVERY; GO RESTORE LOG TEST_DB – obnovenie protokolu transakcie #2 FROM test_db_tran_2 SO SÚBOROM = 1, S NORECOVERY; GO OBNOVIŤ DATABÁZU TEST_DB S OBNOVOU; Ísť
Na obnovenie databázy môžete použiť aj SSMS.

Štítky: Pridajte štítky

Napriek tomu, že v našich predchádzajúcich materiáloch sme sa už problematiky zálohovania dotkli základne spoločnosti Microsoft SQL Server, ohlas čitateľa ukázal potrebu vytvorenia plnohodnotného materiálu s hlbším štúdiom teoretickej časti. Naozaj, vyrobené s dôrazom na praktické pokynyčlánky vám umožňujú rýchlo nakonfigurovať zálohovanie, ale nevysvetľujú dôvody pre výber určitých nastavení. Pokúsme sa opraviť túto medzeru.

Modely obnovy

Pred nastavením zálohy musíte vybrať model obnovy. Pre optimálna voľba mali by ste zhodnotiť požiadavky na obnovu a závažnosť straty údajov a porovnať ich s režijnými nákladmi na implementáciu konkrétneho modelu.

Ako viete, databáza MS SQL pozostáva z dvoch častí: samotnej databázy a protokolu transakcií k nej. Databáza obsahuje užívateľské a servisné údaje v aktuálnom čase, transakčný protokol obsahuje históriu všetkých zmien databázy za určité obdobie, máme transakčný protokol, môžeme vrátiť stav databázy do ľubovoľného bodu v čase.

Na použitie v produkčnom prostredí sú ponúkané dva modely obnovy: jednoduché a úplné. Existuje aj model s neúplné protokolovanie, ale odporúča sa len ako doplnok k úplnému modelu pre obdobie veľkých hromadných operácií, kedy nie je potrebné obnovovať základňu do určitého časového bodu.

jednoduchý model zabezpečuje zálohovanie iba databázy, resp. stav databázy môžeme obnoviť len v čase zálohovania, všetky zmeny v časovom intervale medzi vytvorením poslednej zálohy a zlyhaním sa stratia. V rovnakom čase jednoduchý obvod má malú réžiu: stačí ukladať kópie databázy, protokol transakcií sa automaticky skráti a nezväčší sa. Proces obnovy je tiež najjednoduchší a nezaberie veľa času.

kompletný model umožňuje obnoviť databázu do ľubovoľného bodu v čase, ale vyžaduje okrem zálohovania databázy aj ukladanie kópií protokolu transakcií počas celého obdobia, počas ktorého môže byť obnovenie potrebné. O aktívna práca s databázou môže veľkosť protokolu transakcií a následne aj veľkosť archívov dosiahnuť veľké veľkosti. Proces obnovy je tiež oveľa zložitejší a časovo náročnejší.

Pri výbere modelu obnovy by ste mali porovnať náklady na obnovu s nákladmi na ukladanie záloh a tiež by ste mali vziať do úvahy dostupnosť a kvalifikáciu personálu, ktorý bude obnovu vykonávať. Obnova s ​​úplným modelom vyžaduje určitú kvalifikáciu a znalosti personálu, zatiaľ čo pri jednoduchej schéme bude stačiť postupovať podľa pokynov.

Pre databázy s malým množstvom pridaných informácií môže byť výhodnejšie použiť jednoduchý model s vysokou frekvenciou kopírovania, ktorý vám umožní rýchle obnovenie a pokračovanie v práci ručným zadaním stratených údajov. Úplný model by sa mal používať predovšetkým tam, kde je strata dát neprijateľná a ich prípadná obnova je spojená so značnými nákladmi.

Typy záloh

Úplná kópia databázy- ako už názov napovedá, predstavuje obsah databázy a časť aktívneho protokolu transakcií za čas vytvorenia zálohy (t. j. informácie o všetkých aktuálnych a nedokončených transakciách). Umožňuje vám úplne obnoviť databázu do času vytvorenia zálohy.

Kópia databázy Delta- úplná kópia má jednu výraznú nevýhodu, obsahuje všetky informácie v databáze. Ak je potrebné zálohovať pomerne často, okamžite vyvstáva otázka nehospodárneho využívania miesta na disku, pretože rovnaké údaje zaberajú väčšinu úložiska. Na prekonanie tohto nedostatku môžete použiť rozdielové kópie databázy, ktoré obsahujú iba informácie, ktoré sa zmenili od poslednej úplnej zálohy.

Upozorňujeme, že rozdielová kópia sú údaje od okamihu poslednej kompletný kopírovanie, t.j. každá nasledujúca rozdielová kópia obsahuje údaje predchádzajúcej (ale dajú sa zmeniť) a veľkosť kópie bude neustále rásť. Obnova vyžaduje jednu úplnú a jednu rozdielovú zálohu, zvyčajne poslednú. Počet rozdielových kópií by sa mal zvoliť na základe zväčšenia ich veľkosti, akonáhle sa veľkosť rozdielovej kópie porovná s veľkosťou polovice úplnej kópie, má zmysel vytvoriť novú úplnú kópiu.

Záloha denníka transakcií- vzťahuje sa len na model úplného obnovenia a obsahuje kópiu protokolu transakcií od okamihu vytvorenia predchádzajúcej kópie.

Je dôležité si zapamätať nasledujúci bod - kópie protokolu transakcií nijako nesúvisia s kópiami databázy a neobsahujú informácie z predchádzajúcich kópií, preto na obnovenie databázy musíte mať nepretržitý reťazec kópií obdobia, počas ktorého chcete mať možnosť vrátiť späť stav databázy. V tomto prípade musí byť moment poslednej úspešnej kópie v tejto lehote.

Pozrime sa na obrázok vyššie, ak sa stratí prvá kópia súboru denníka, potom môžete obnoviť stav databázy iba v čase úplnej kópie, čo bude podobné ako pri jednoduchom modeli obnovy, môžete obnoviť stav databázy k akémukoľvek bodu v čase až po ďalšej rozdielovej (alebo úplnej) kópii za predpokladu, že reťazec kópií protokolu počnúc od databázy predchádzajúcej kopírovaniu a ďalej bude súvislý (na obrázku - od tretej a ďalšej).

Denník transakcií

Pochopiť procesy obnovy a priraďovania odlišné typy zálohy, mali by ste sa bližšie pozrieť na štruktúru a fungovanie protokolu transakcií. Transakcia je najmenšia možná logická operácia, ktorá má zmysel a môže byť dokončená len ako celok. Tento prístup zaisťuje integritu a konzistenciu údajov v akejkoľvek situácii, pretože prechodný stav operácie nie je povolený. Transakčný protokol je určený na kontrolu akýchkoľvek zmien v databáze.

Pri vykonaní akejkoľvek operácie sa do protokolu transakcií pridá záznam o začiatku transakcie, každému záznamu je pridelené jedinečné číslo (LSN) z neoddeliteľnej postupnosti, pri akejkoľvek zmene údajov sa do protokolu urobí zodpovedajúci záznam, a po dokončení operácie sa v protokole objaví značka o uzavretí (potvrdení) transakcie.

Pri každom spustení systém analyzuje protokol transakcií a vráti späť všetky nepotvrdené transakcie, pričom sa súčasne odošlú zmeny, ktoré sú potvrdené v protokole, ale neboli zapísané na disk. To umožňuje používať ukladanie do vyrovnávacej pamäte a spätný zápis bez obáv o integritu údajov aj pri absencii záložných systémov napájania.

Časť protokolu, ktorá obsahuje aktívne transakcie a používa sa na obnovu údajov, sa nazýva aktívna časť protokolu. Začína sa číslom nazývaným Minimum Recovery Number (MinLSN).

V najjednoduchšom prípade je MinLSN číslo záznamu prvej čakajúcej transakcie. Ak sa pozriete na obrázok vyššie, tak otvorením modrej transakcie dostaneme MinLSN rovný 321, po jeho zafixovaní v zázname 324 sa číslo MinLSN zmení na 323, čo bude zodpovedať zelenému číslu transakcie, ktoré nemá ešte bol spáchaný.

V praxi sú veci trochu komplikovanejšie, napríklad dáta uzavretej modrej transakcie ešte nemusia byť vyprázdnené na disk a presun MinLSN na 323 znemožní obnovu tejto operácie. Aby sa predišlo takýmto situáciám, bol zavedený koncept kontrolného bodu. Kontrolný bod sa vytvorí automaticky, keď nastanú nasledujúce podmienky:

  • Pri explicitnom vykonávaní CHECKPOINT. Kontrolný bod sa spustí v aktuálnej databáze pripojení.
  • Keď vykonáte minimálne zaprotokolovanú operáciu s databázou, ako napríklad keď vykonáte operáciu hromadného kopírovania na databáze, ktorá podlieha modelu obnovy s hromadným protokolovaním.
  • Pri pridávaní alebo odstraňovaní databázových súborov pomocou príkazu ALTER DATABASE.
  • Keď je inštancia SQL Server zastavená pomocou príkazu SHUTDOWN alebo keď je zastavená služba SQL Server (MSSQLSERVER). V oboch prípadoch sa pre každú databázu v inštancii SQL Server vytvorí kontrolný bod.
  • Ak inštancia SQL Server pravidelne vytvára automatické kontrolné body na každej databáze, aby sa skrátil čas obnovy databázy.
  • Pri vytváraní zálohy databázy.
  • Keď vykonáte akciu, ktorá vyžaduje, aby ste vypli databázu. Príklady zahŕňajú nastavenie AUTO_CLOSE na ON a zatvorenie posledného pripojenia užívateľa k databáze alebo zmenu nastavenia databázy, ktorá vyžaduje reštart databázy.

V závislosti od toho, ktorá udalosť nastala ako prvá, sa MinLSN nastaví buď na číslo záznamu kontrolného bodu, alebo na začiatok najstaršej čakajúcej transakcie.

Skrátenie denníka transakcií

Protokol transakcií, ako každý protokol, vyžaduje pravidelné čistenie zastaraných záznamov, inak sa rozrastie a zaberie všetok dostupný priestor. Vzhľadom na to, že pri aktívnej práci s databázou môže veľkosť transakčného logu výrazne presiahnuť veľkosť databázy, je tento problém pre mnohých administrátorov aktuálny.

Fyzicky je súbor denníka transakcií kontajnerom pre virtuálne denníky, ktoré sa zapĺňajú postupne, ako denník rastie. Logický protokol obsahujúci záznam MinLSN je začiatkom aktívneho protokolu, logické protokoly, ktoré mu predchádzajú, sú neaktívne a nie sú potrebné na automatickú obnovu databázy.

Ak sa zvolí jednoduchý model obnovy, tak keď logické protokoly dosiahnu veľkosť rovnajúcu sa 70 % fyzického súboru, automaticky sa vymaže neaktívna časť protokolu, tzv. skrátenie. Tým sa však nezredukuje fyzický protokolový súbor, skrátia sa iba logické protokoly, ktoré je možné po tejto operácii znova použiť.

Ak je počet transakcií vysoký a v čase, keď veľkosť fyzického súboru dosiahne 70 %, neexistujú žiadne neaktívne logické protokoly, veľkosť fyzického súboru sa zväčší.

Transakčný protokolový súbor s jednoduchým modelom obnovy teda bude rásť podľa aktivity práce s databázou, až bude spoľahlivo obsahovať celú aktívnu časť protokolu. Potom sa jeho rast zastaví.

Pri úplnom modeli nie je možné skrátiť neaktívnu časť denníka, kým nie je úplne zálohovaná. Skrátenie protokolu sa vykoná pod podmienkou, že protokol transakcií bol zálohovaný, po čom bol vytvorený kontrolný bod.

Nesprávne nastavenie zálohy protokolu transakcií na úplnom modeli môže spôsobiť nekontrolovateľný rast súboru protokolu, čo je často problém pre neskúsených správcov. Často sa tiež nachádzajú tipy na manuálne skrátenie protokolu transakcií. Pri modeli úplného obnovenia by sa to nemalo robiť kategoricky, pretože tým narušíte integritu reťazca kópií denníka a databázu budete môcť obnoviť iba v čase, keď boli kópie vytvorené, čo bude zodpovedať jednoduchý model.

V tomto prípade je načase pripomenúť si, o čom sme hovorili na začiatku článku, ak náklady na úplný model prevyšujú náklady na obnovu, mal by sa uprednostniť jednoduchý model.

Jednoduchý model obnovy

Teraz, po získaní potrebných minimálnych vedomostí, môžeme prejsť k podrobnejšiemu zváženiu modelov obnovy. Začnime s jednoduchým. Povedzme, že v čase zlyhania máme jednu úplnú a dve rozdielové kópie:

Zálohovanie sa vykonávalo raz denne a posledná kópia bola vytvorená v noci z 21. na 22. deň. Zlyhanie nastane 22. večer pred vytvorením ďalšej kópie. V tomto prípade budeme musieť postupne obnoviť úplné a najnovšie rozdielové zálohy a údaje za posledný pracovný deň sa stratia. Ak sa z nejakého dôvodu ukáže, že je poškodená aj kópia z 21. dňa, potom môžeme obnoviť predchádzajúcu kópiu, čím prídeme o ďalší deň práce, pričom poškodenie kópie 20. dňa nám zároveň nebráni v úspešnom obnovení údaje 21. večer s príslušnou kópiou.

Kompletný model obnovy

Uvažujme o podobnej situácii, ale s použitím modelu úplného obnovenia. Zálohy robíme aj na dennej báze, podľa princípu plné + rozdielové, a protokol transakcií sa kopíruje niekoľkokrát denne.

Proces obnovy v tomto prípade bude komplikovanejší. V prvom rade si budete musieť vytvoriť manuálnu zálohu konečného fragmentu protokolu (zobrazený červenou farbou), t.j. časť denníka od času, keď bola kópia naposledy vytvorená, do doby pred zlyhaním.

Ak sa tak nestane, bude možné obnoviť databázu len do stavu, v ktorom bola vytvorená posledná kópia protokolu transakcií.

Poškodenie súboru kópie protokolu za predchádzajúci deň nám zároveň nezabráni v obnovení aktuálneho stavu databázy, ale obmedzí nás na moment vytvorenia poslednej kópie, t.j. aktuálne dni.

Potom postupne obnovíme úplné a rozdielové kópie a reťazec kópií protokolu vytvorených po poslednej zálohe, poslednej na obnovenie kópie konečného fragmentu protokolu, čo nám dá príležitosť obnoviť databázu priamo na čas nehody alebo svojvoľný, ktorý jej predchádzal.

Ak je poškodená posledná diferenciálna kópia, potom v prípade jednoduchého modelu to povedie k strate ďalšieho pracovného dňa, úplný model vám umožní obnoviť predposlednú kópiu, po ktorej budete musieť obnoviť celý reťazec kópie protokolu transakcií od okamihu predposlednej kópie po zlyhanie. Hĺbka obnovy závisí len od hĺbky súvislého reťazca guľatiny.

Na druhej strane, ak je jedna z kópií protokolu transakcií poškodená, povedzme predposledná, potom môžeme obnoviť údaje iba do času poslednej záložnej kópie + obdobia v nepoškodenom reťazci kópií protokolu. Napríklad, ak boli protokoly vytvorené o 12:00, 14:00 a 16:00 a protokol vytvorený o 14:00 je poškodený, potom s dennou kópiou môžeme obnoviť databázu až do konca nepretržitého reťazca, t.j. do 12-tej hodiny.

  • Značky:

Ak chcete zobraziť, povoľte JavaScript

A tiež: záloha SQL, záloha 1C.

Server 1C obsahuje údaje v databáze, ktorá sa nachádza na serveri SQL. Dnes uvažujeme o MS SQL 2005/2008.

Aby nedošlo k strate dát v prípade vypálenia disku servera alebo iných situácií vyššej moci, je potrebné zálohovať už od začiatku.

Vytvárajte perá každý deň Zálohovanie SQL databázy 1C samozrejme nikto nechce. Existujú na to automatické nástroje. Poďme sa s nimi zoznámiť.

Konfigurácia BackupSQL

Nastavenie zálohovania SQL pre databázu 1C sa nelíši od nastavenia zálohy pre akúkoľvek inú databázu.

Ak chcete konfigurovať, spustite MS SQL Management Studio. Tento program je v skupine programov MS SQL.

Pridanie úlohy zálohovania databázy 1C SQL

Úlohy pre automatické zálohovanie SQL databáz sa nachádzajú vo vetve Plány správy / údržby.

Ak chcete pridať novú úlohu zálohovania, kliknite pravým tlačidlom myši na skupinu Plány údržby a vyberte položku Nový plán údržby.

Zadajte názov úlohy. Na mene záleží len tebe. Pre každý prípad je lepšie použiť anglické znaky.

Nastavenie úlohy zálohovania databázy 1C SQL

Otvorí sa editor úloh. Upozorňujeme, že úlohy môžu vykonávať rôzne operácie s databázou, nielen zálohy.

Vľavo dole je zobrazený zoznam možností operácií. Vyberte Zálohovať databázovú úlohu dvojitým kliknutím alebo jednoducho potiahnite doprava.

Všimnite si šípku. Môžete presunúť myšou niekoľko rôznych alebo rovnakých operácií a prepojiť ich pomocou šípok. Potom sa vykoná niekoľko úloh naraz v poradí, ktoré určíte.

V okne nastavení vyberte požadované databázy SQL 1C (môžete ich mať niekoľko alebo jednu naraz).

Vyberte umiestnenie na uloženie zálohy databázy SQL 1C. Musíte vybrať fyzicky odlišný pevný disk. Organizačne môžete zaškrtnúť políčko „Vytvoriť podpriečinky“.

Teraz nastavíme plán zálohovania. Predvolený plán zálohovania bol pridaný sám. Môžete však pridať viacero plánov (napríklad jeden denný, jeden týždenný atď.). Kliknite na tlačidlo nastavení plánu zálohovania.

Snímka obrazovky ukazuje príklad dennej zálohy SQL databázy 1C o 3:00 ráno.

Aby bol plán zálohovania v zozname pekný a zrozumiteľný, môžete ho zmeniť.

Ukladá sa úloha zálohovania databázy 1C SQL

Kliknite na vypáliť. Úloha sa zobrazí na ľavej strane zoznamu.

To je dôležité! Skontrolujte, či bola úloha Zálohovanie databázy SQL správne vytvorená. Ak to chcete urobiť, kliknite pravým tlačidlom myši na úlohu a vyberte možnosť Vykonať.

V dôsledku toho by sa na zadanej ceste mal objaviť záložný súbor. Ak niečo nie je v poriadku, odstráňte úlohu (Del) a začnite od začiatku.



Načítava...
Hore