Tato stránka byla strojově přeložena. Přečtěte si anglický originál. English

Knihovna IBSurgeon

Jak implementovat zálohy pomocí online dumpu InterBase XE7

Dmitry Kuzmenko, 08-SEP-2016

InterBase od verze 2007 podporuje online dump - online kopírování databázového souboru. Místo gbak -b/-c vám to umožňuje získat po zkopírování databázi připravenou k použití a nemusíte ji „obnovovat“ ze zálohy (něčeho, co není databází). Online dump je velmi rychlý, téměř jako kopírování souboru operačním systémem.

Pro vytvoření online dumpu databáze použijte následující příkaz

gbak -d [options] database target

(Úplný popis dumpu najdete v dokumentaci, Doc\OpGuide.pdf, nebo zde)

Stejně jako u databázového souboru může mít cíl (target) libovolný název a příponu, jaké chcete. Výsledkem příkazu bude soubor dumpu, který je ekvivalentní původní databázi, ale v režimu pouze pro čtení.

Čas prvního spuštění tohoto příkazu je čas potřebný k prohledání (přečtení) zdrojové databáze a čas potřebný k zápisu cílového souboru.

Dokud je cíl v režimu pouze pro čtení, je propojen s databázovým souborem. Při prvním dumpu bude přečten a zkopírován celý databázový soubor do cíle. Při druhém a dalších - budou do cíle zapsány pouze změněné stránky. Tomu se říká „inkrementální dump“.

Důležité! InterBase XE7 při každém opakovaném příkazu dumpu (samozřejmě se stejnými názvy souborů) čte pouze změněné stránky databáze a zapisuje je do cíle. Jiné verze před XE7 čtou celou zdrojovou databázi. Výkon je tedy rozdílný a XE7 je mnohem rychlejší. Pokud se ve zdrojové databázi nezměnily žádné stránky, inkrementální dump v XE7 zabere ~1 sekundu, zatímco InterBase2007-XE3 stráví čas potřebný k přečtení celého databázového souboru. Čas závisí na velikosti zdrojové databáze a rychlosti úložiště. Například pokud je rychlost úložiště kolem 400 MB/s, 100GB databáze bude prohledána za 250 sekund (4 minuty 10 sekund).

Poznámka. InterBase XE7 podporuje formáty databázových souborů XE7 (ODS 16), XE/XE3 (ODS 15) a 2009 (ODS 13). Funkce inteligentního prohledávání, zmíněná výše, bude fungovat pouze s formátem databáze XE7 (ODS 16).

Pokud potřebujete přepnout cíl do režimu čtení a zápisu (normální režim), použijte příkaz

gfix target -mode read_write

Ale poté cíl ztratí propojení s databází a další spuštění gbak -d database target již nebude možné, protože cíl je považován za „jinou“ databázi.

Pokud chcete cíl zcela přepsat místo inkrementálního dumpu, použijte volbu -ov

gbak -d -ov database target

Dump dumpu

První dump dumpu bude fungovat, ale následné inkrementy nikoli. Například nejprve

gbak -d database target1

zde získáme target1 jako plně dumpovanou databázi v režimu pouze pro čtení.

Dále,

gbak -d target1 target2

Jak vidíte, vytváříme dump dumpu. A ano, tento příkaz zkopíruje target1 do target2. Oba cíle budou v režimu pouze pro čtení. Ale pokud tyto dva příkazy zopakujeme, změny, které přešly z databáze do target1, nebudou zkopírovány do target2. Target2 tedy zůstane ve stavu po prvním, počátečním kopírování. A neobjeví se žádné chybové ani varovné zprávy.

Pokud tedy někdy budete chtít vytvořit dump dumpu, měli byste použít pouze plný dump

gbak -d -ov target1 target2

Volba -ov je povinná, aby bylo zajištěno, že target2 bude zapsán (a přepsán) zdrojem z target1.

Schéma zálohování 1

Příklad dumpů v různých časových intervalech

gbak -d database target

Spouští se například každou 1 hodinu. Zde máme produkční zdrojovou databázi a „záložní“ kopii target, která je o jednu hodinu pozadu.

Kromě toho můžeme každých 24 hodin spustit

gbak -d database target2

Zde máme produkční databázi, kopii target o 1 hodinu pozadu a kopii target2 o 24 hodin pozadu.

Z jedné databáze můžete vytvořit libovolný počet dumpů.

Netřeba dodávat, že cílové dumpy lze použít jako databáze pouze pro čtení pro jakýkoli účel - reporty, analytiku atd., pro úlohy, které nepotřebují nahlížet do aktuální databáze.

Výhody: Každý dump lze naplánovat nezávisle.

Nevýhody: Prodlevy mezi nejnovějším a nejstarším dumpem.

Schéma zálohování 2

Sekvenční dump do různých cílů. V tomto případě musíte nastavit nějaký plánovač (OS nebo vlastní), aby spouštěl následující příkazy jeden za druhým v určeném časovém intervalu

gbak -d database target1

gbak -d database target2

gbak -d database target3

Pokud použijete 1hodinový interval mezi těmito příkazy, budete mít dumpy (zálohy) takto:

target1 ve 12:00, target2 ve 13:00, target3 ve 14:00. Další spuštění dumpu target1 bude aktualizováno v 15:00 a tak dále. Výsledkem budou kopie databází za poslední 3 hodiny.

Výhody: máme dumpy za několik hodin, které zůstávají blízko původní databázi.

Nevýhody: trochu obtížnější naplánovat tyto příkazy. Tj. v tomto příkladu je třeba naplánovat příkazy dumpu na přesný čas:

Dump do target1 v 00:00, 03:00, 06:00…

Dump do target2 v 01:00, 04:00, 07:00…

Dump do target3 v 02:00, 05:00, 08:00…

Shrnutí

Gbak -d lze použít pro dump do lokálního úložiště i pro dump po síti - protože inkrementální dump odesílá do cíle pouze změněné stránky. Cíl tedy může být umístěn na vzdáleném síťovém úložišti. Samozřejmě ale musí mít síť dostatečnou propustnost, aby byla kompatibilní s lokálním úložištěm. Jinak budou zápisy do cíle pomalé.

Online dump lze použít nejen jako nástroj pro vytvoření online záložní kopie databáze, ale také jako nástroj pro „horizontální škálování“ systému, pro vyvážení zátěže produkčních, reportovacích a analytických aplikací.

I když vidíte, že online dump je nejrychlejší způsob, jak získat online kopii databáze (místo gbak -b/-c), protože dump pracuje se stránkami, může přeskočit některá poškození stránek, pokud je databáze poškozená. Stále tedy musíte kontrolovat konzistenci databáze pomocí starého dobrého gbak -b/-c, ale můžete to dělat méně často než dříve.