602SQL-Úplná dokumentace Index  

Jak lze provádět kompletní zálohování databáze?

Jedním ze způsobů, jak zajistit databázi proti ztrátě dat, je pravidelné zálohování celého databázového souboru. Níže jsou popsány způsoby zálohování a jejich vlastnosti. Není zde popsáno, jak zálohovat data z důležitých tabulek exportem do souboru.

Ruční kopírování databázového souboru

Zálohu databáze lze pořídit tak, že se databázový soubor zkopíruje na jiné místo. Toto kopírování lze provádět pouze tehdy, když nad souborem neběží databázový server, jinak nelze zaručit integritu zkopírované databáze.

Jednorázová záloha z klientského prostředí

Na Řídicím panelu, stránka Systém / Nástroje / Automatické zálohování lze stisknout tlačítko Zálohovat teď. Jsou-li v témže dialogu zadány parametry zálohování (viz násl. odstavec - alespoň adresář pro záložní soubor), provede se záloha bez ohledu na plán automatických záloh.

Automatické zálohování databáze

Na Řídicím panelu, stránka Systém / Nástroje / Automatické zálohování (nebo pomocí API funkce Get_property_value) lze nastavit vlastnosti serveru Backup..., definující automatické zálohování databáze. Toto zálohování může probíhat buď se zadanou periodou od startu serveru, nebo v určenou dobu a v určené dny.

VlastnostVýznamPříklad hodnoty
BackupDirectoryadresář pro zálohue:\zaloha
BackupFilesLimitpočet ponechaných záloh7
BackupZipkomprimovat zálohy1
BackupZipMoveToadresář, kam se zkopíruje zkomprimovaná zálohaw:\zaloha
BUĎ Zálohovat periodicky
BackupIntervalHourszáloha serveru se provede po N hodinách12
BackupIntervalMinutes ... a M minutách běhu0
NEBO Zálohovat v určenou dobu
BackupTimeDay1určení dne zálohy 9
BackupTimeHour1určení hodiny zálohy6
BackupTimeMin1určení minuty zálohy0
BackupTimeDay2určení dne zálohy 9
BackupTimeHour2určení hodiny zálohy18
BackupTimeMin2určení minuty zálohy0
BackupTimeDay3určení dne zálohy 10
BackupTimeHour3určení hodiny zálohy0
BackupTimeMin3určení minuty zálohy30

V uvedených příkladech se zálohuje každých 12 hodin nebo v pracovní dny (po-pá 2x denně v 6:00 a 18:00 a v so+ne 30 min po půlnoci). Číselník s určením dne:
1denně
2pondělí
3-8úterý až neděle
9pracovní dny (po-pá)
10volné dny (so-ne)

Záloha se vytváří v adresáři určeném BackupDirectory. Přitom se může testovat, kolik záloh se v tomto adresáři již nachází, a pokud jejich počet překročí nastavený limit BackupFilesLimit, nejstarší záloha se smaže. Záložním souborům se přidělí jméno ve tvaru YYMMDDhh.mmX, kde YYMMDD je rok, měsíc a den, hhmm je hodina a minuta, X je A až D pro jednotlivé části databázového souboru.

Z takto vytvořených záloh lze databázový soubor kdykoli snadno obnovit pomocí tlačítka Obnovit! na záložce Správa dialogu Správa databáze (přístupné z popup menu u lokálního nespuštěného serveru).

Pokud se během práce serveru začne vytvářet záloha v blokujícím režimu, provádění většiny operací je pozastaveno na dobu, po kterou se vytváří kopie souboru. V neblokujícím režimu lze v práci pokračovat.

Bezprostředně po vytvoření zálohy se zavolá systémový trigger _on_backup. Díky tomu lze reagovat na úspěšné i neúspěšné zálohování (např. odesláním mailu správci). Případná komprimace (viz násl. odstavec) se na výsledek zálohování předaný v _on_backup již neprojeví, protože probíhá asynchronně.

Komprimace záloh

Je-li pomocí vlastnosti BackupZip zapnuta komprimace záloh, pak se každá nová záloha po vytvoření v adresáři BackupDirectory ihned komprimuje, přesune do adresáře určeného vlastností BackupZipMoveTo (je-li zadán nebo je přístupný) a následně smaže z adresáře BackupDirectory.

Pomalá komprimace a následný přesun zálohy probíhá asynchronně v samostatném vlákně, takže neblokuje SQL server.

Komprimované automaticky vytvářené zálohy jsou v souboru jménem YYMMDDhh.mmz.

I u komprimovaných záloh funguje udržování stanoveného počtu posledních záloh - adresáře zadané v BackupZipMoveTo a BackupDirectory se však musí lišit.

Komprimaci automatických záloh je lepší provádět na rychlém médiu, ale zálohy je často třeba uložit na externí pomalé médium. Zkomprimované zálohy (pomocí ZIP) jsou podstatně menší než původní databázový soubor.

Zálohování vyvolané z aplikace

Zálohování databáze může explicitně vyvolat databázová aplikace, například tehdy, když její uživatel zvolí tuto akci v menu nebo když počet provedených změn v databázi překročí určitou mez.

Explicitní zálohování provádí funkce Backup_database_file. Podobně jako u automatického zálohování je přitom pozastavena většina normálních operací serveru.

Zásahy do zálohování

Pomocí generického triggeru _ON_SYSTEM_EVENT s parametrem event_num rovným 1 lze ovlivit (i odvolat) provedení zálohy.

Blokující x neblokující zálohování

Zálohování databázového serveru lze provádět ve dvou režimech:

Režimy zálohování se volí na Řídicím panelu, stránka Systém / Nástroje / Automatické zálohování pomocí přepínače Neblokovat práci serveru... nebo pomocí API funkce Get_property_value) lze nastavit vlastnosti serveru NonblockingBackups.

Zálohování externích ftx systémů

Externí fulltextové systémy nejsou uloženy v databázovém souboru ale v souborech na disku, proto je třeba je zálohovat zvlášť. Záloha se však děje automaticky, a to i v případě neblokujícího zálohování. Záložním souborům se přidělí jméno ve tvaru YYMMDDhh.mm.jméno_aplikace.jméno_ftx_systému.ftx, kde YYMMDD je rok, měsíc a den, hhmm je hodina a minuta zálohy, zbytek je název souboru s fultextovým indexem.

Zálohu externích ftx. indexů nelze obnovit jinak než překopírováním souboru na správné místo.