4D Backup, snímky VSS a nové příkazy pro uzamčení datového úložiště

Automaticky přeloženo z Deepl

4D nabízí několik integrovaných způsobů zálohování dat: Zálohování 4D a použití zrcadlového serveru. Ve verzi 4D v20 zpřístupňuje 4D interní příkazy pro uzamčení datového úložiště, což umožňuje kopírovat data za běhu 4D.
Nejprve si povězme o různých způsobech zálohování dat pomocí 4D.

Automatické zálohování a obnovení

Vestavěná záloha nejenže vytváří automatickou úplnou kopii vašeho datového souboru, ale také spravuje protokol transakcí obsahující všechny operace, které se ve vašich datech odehrávají. Jedná se o nejlepší ochranu vaší práce. Pokud se cokoli stane, například výpadek proudu, poškození pevného disku nebo pád systému, při dalším spuštění 4D automaticky zjistí poruchu a – pokud je to nutné – integruje chybějící operace z protokolu nebo provede úplnou obnovu plus integraci protokolu. Proto doporučujeme 4D Backup pro většinu případů použití.

Další podrobnosti najdete na adrese https://developer.4d.com/docs/Backup/overview.

Zrcadlový SERVER

Pro instalace s nepřetržitým provozem, kde nemůžete uzamknout datový soubor pro úplnou zálohu nebo kde chcete minimální dobu obnovy, je třeba použít zrcadlový server. 4D automaticky replikuje každou změnu na zrcadlovém serveru, takže v případě selhání hlavního serveru může být váš zrcadlový server v provozu během několika sekund.

Nastavení konfigurace zrcadlového serveru je pracnější a složitější než použití zálohování. S nasazením této konfigurace jsme již pomohli mnoha našim zákazníkům, proto se neváhejte obrátit na tým profesionálních služeb společnosti 4D a požádat o pomoc a radu.

Stínová kopie svazku systému Windows

Zejména u virtuálních prostředí dávají správci systémů přednost používání snímků založených na stínové kopii svazku (VSS). Společnost 4D to podporuje pomocí vlastního nástroje 4D VSS Writer. Podrobnosti naleznete na adrese https://blog.4d.com/enterprise-virtual-machine-snapshot-support/.

Buďte opatrní, protože nenahrazuje zálohování 4D Backup, protože snapshot obsahuje pouze data z daného okamžiku. Každou operaci, která proběhla po vytvoření snapshotu, nelze obnovit, protože vám chybí žurnál a protokol transakcí.

Vizuální vysvětlení, jak zálohování 4D Backup funguje

Jak funguje zálohování a VSS?

Zrcadlové zálohování nechám stranou, protože se jedná o zcela odlišný způsob ukládání dat, a zaměřím se na to, jak fungují 4D Backup a 4D VSS.

První bod, který je třeba vzít v úvahu, je, že 4D neprovádí okamžitě každou změnu na datovém souboru v reálném čase. Takový postup by si vyžádal příliš mnoho přístupů na disk, což by výrazně ovlivnilo výkon vaší aplikace. 4D používá mezipaměť v paměti, kam se nejprve aplikují všechny vaše změny, a pravidelně 4D mezipaměť proplachuje a aplikuje všechny změny na datový soubor najednou. Při spuštění zálohování nebo při volání VSS tedy 4D nejprve propláchne mezipaměť, aby datový soubor obsahoval aktuální data.

Dalším důležitým bodem, který je třeba vzít v úvahu, je, že kopírování datového souboru v době, kdy je používán, nefunguje: Pokud je datový soubor během kopírování změněn, může být výsledný datový soubor poškozen nebo může dojít k rozdílům mezi datovým souborem a žurnálem nebo indexy. Druhým krokem je tedy uzamčení datového souboru zamezením operací zápisu během kopírování. Operace čtení jsou stále podporovány, ale každý proces, který se pokusí provést operaci zápisu, bude zablokován, dokud zálohování/VSS snímek neskončí.

Nakonec vám řeknu něco o žurnálu. Žurnál obsahuje všechny operace, které jste provedli od poslední zálohy. Používá se ve dvou hlavních případech: Pokud dojde k poškození datového souboru nebo pokud chcete vrátit zpět některé nešťastné uživatelské operace. Jedná se o velmi důležitý soubor, pokud nechcete přijít o jedinou změnu datového souboru.

Jakmile je tedy mezipaměť propláchnuta a datový soubor uzamčen, vytvoří zálohování 4D (ale ne VSS) nový soubor žurnálu. Poté lze datový soubor, indexový soubor a žurnál zkopírovat, a to ještě před odemknutím dat.

Jak vidíte, celá operace je poměrně složitá. Proto našim zákazníkům důrazně doporučujeme používat zálohování 4D, protože je plně automatizované a bezpečné. Přesto si někteří z vás vytvoří vlastní mechanismus snímků. Pro ně jsme přinesli možnost uzamknout datové úložiště za chodu 4D!

Nová funkce: uzamčení datového úložiště

Poskytli jsme vám tři nové příkazy: ds.flushAndLock(), ds.locked() a ds.unlock().

Příkaz ds.flushAndLock() propláchne mezipaměť a poté uzamkne datové úložiště pro ostatní procesy. Dokud je datové úložiště uzamčeno, budou všechny operace zápisu přicházející z jiných procesů pozastaveny, dokud nebude odemčeno. Od této chvíle tedy víte, že datový soubor, indexový soubor ani žurnál nebudou změněny, což vám umožní je volně kopírovat a mít jistotu, že jsou synchronizované a nepoškozené.

Po dokončení kopírování můžete ve stejném procesu zavolat ds.unlock(). Uvolní se tak zámek datového úložiště, což umožní opět provádět operace zápisu.

Příkaz ds.locked() vám sdělí, zda proces aktuálně uzamkl datové úložiště.

Pomocí těchto tří příkazů nyní můžete reprodukovat způsob, jakým zálohování 4D a VSS zamykají datové úložiště před jeho kopírováním.

Kód provádějící archivaci datové složky

Pro ilustraci této nové funkce vám uvedu ukázku kódu. Tento kód provede archivaci datové složky (a tím i datových a indexových souborů) a žurnálu:

$destination:=Folder(fk documents folder).folder("Archive")
$destination.create() // The folder where we will copy the archive
ds.flushAndLock() // We first lock the datastore, blocking write operations from other processes

$dataFolder:=Folder(fk data folder)
$dataFolder.copyTo($destination) // We can now copy the data folder

$oldJournalPath:=New log file() // We create a new journal
$oldJournal:=File($oldJournalPath; fk platform path)
$oldJournal.moveTo($destination) // We move the old journal

ds.unlock() // Our copy is over, we can now unlock the datastore

Jak vidíte, i když je kód poměrně malý, je třeba provést mnoho důležitých kroků, aby bylo jisté, že archiv nebude poškozen: kód se postará o propláchnutí mezipaměti a uzamčení datového úložiště, vytvoření nového žurnálu a uložení starého a samozřejmě odemčení datového úložiště na konci operace. Doporučuji vám, abyste tento kus kódu použili jako základ pro vlastní mechanismy snímkování, abyste nezapomněli na důležitý krok.

To je pro tuto chvíli vše. Doufám, že vám tento příspěvek na blogu pomůže lépe pochopit vnitřní fungování zálohování 4D.
A samozřejmě, pokud máte dotazy nebo připomínky, neváhejte s nimi přijít do fóra.

Nicolas Brachfogel
• Product Owner & Senior Developer • Nicolas Brachfogel nastoupil do 4D v roce 2017 jako senior vývojář (4D server a sítě). Jako Product Owner, který řídí vydání Apple Silicon, má na starosti psaní uživatelských příběhů a jejich převod do funkčních specifikací a také zajišťuje, aby implementace funkcí vyhovovaly potřebám zákazníků. Nicolas, absolvent Institut Supérieur d'Informatique Appliquée (INSIA), začal svou kariéru jako softwarový vývojář v roce 2001. Po několika letech kódování v Javě a C++ se specializoval na vývoj klient-server pro společnosti zabývající se videohrami. Jako serverový vývojář/architekt úspěšně pracoval na serverových architekturách mnoha her (Dofus Arena, Drakerz, Trivial Pursuit Go!).