Zálohování databáze není nic jiného než způsob ochrany nebo obnovy dat. Je to proces ukládání provozního stavu, architektury a dat vaší databáze. To může být velmi užitečné v situacích technického výpadku nebo katastrofy. Je tedy nezbytné ponechat si zálohu vaší databáze a zajistit, aby vaše databáze měla dobrý a snadný proces zálohování.
MongoDB poskytuje několik nástrojů/technik pro snadné zálohování vašich databází.
V tomto článku probereme některé z nejlepších pracovních postupů zálohování a obnovy MongoDB.
Obecně existují tři nejběžnější možnosti zálohování serveru/klastru MongoDB.
- Mongodump/Mongorestore
- MongoDB Cloud Manager
- Snímky databáze
Kromě těchto obecných možností existují další způsoby, jak zálohovat MongoDB. Všechny tyto možnosti také probereme v tomto článku. Začněme.
MongoDump/MongoRestore
Pokud máte malou databázi (<100 GB) a chcete mít plnou kontrolu nad svými zálohami, pak jsou Mongodump a Mongorestore vaší nejlepší volbou. Toto jsou příkazy mongo shell, které lze použít k ručnímu zálohování databáze nebo sbírek. Mongodump vypíše všechna data ve formátu Binary JSON(BSON) do zadaného umístění. Mongorestore může použít tyto soubory BSON k obnovení vaší databáze.
Zálohujte celou databázi
$ sudo mongodump --db mydb --out /var/backups/mongo
Výstup:
2018-08-20T10:11:57.685-0500 writing mydb.users to /var/backups/mongo/mydb/users.bson
2018-08-20T10:11:57.907-0500 writing mydb.users metadata to /var/backups/mongo/mydb/users.metadata.json
2018-08-20T10:11:57.911-0500 done dumping mydb.users (25000 documents)
2018-08-20T10:11:57.911-0500 writing mydb.system.indexes to /var/backups/mongo/mydb/system.indexes.bson
V tomto příkazu je nejdůležitějším argumentem --db. Určuje název databáze, kterou chcete zálohovat. Pokud tento argument nezadáte, příkaz Mongodump provede zálohu všech vašich databází, což může být velmi náročný proces.
Zálohování jedné sbírky
$ mongodump -d mydb -o /var/backups/mongo --collection users
Tento příkaz bude zálohovat pouze kolekci uživatelů v databázi mydb. Pokud tuto možnost neuvedete, ve výchozím nastavení se zálohuje celá kolekce v databázi.
Pravidelné zálohování pomocí Mongodump/Mongorestore
Jako standardní postup byste měli pravidelně zálohovat svou databázi MongoDB. Předpokládejme, že chcete zálohovat každý den ve 3:03, pak v systému Linux to můžete provést přidáním záznamu cron do crontab.
$ sudo crontab -e
Přidejte tento řádek do crontab:
3 3 * * * mongodump --out /var/backups/mongo
Obnovení celé databáze
Pro obnovu databáze můžeme použít příkaz Mongorestore s volbou --db. Přečte soubory BSON vytvořené Mongodumpem a obnoví vaši databázi.
$ sudo mongorestore --db mydb /var/backups/mongo/mydb
Výstup
2018-07-20T12:44:30.876-0500 building a list of collections to restore from /var/backups/mongo/mydb/ dir
2018-07-20T12:44:30.908-0500 reading metadata file from /var/backups/mongo/mydb/users.metadata.json
2018-07-20T12:44:30.909-0500 restoring mydb.users from file /var/backups/mongo/mydb/users.bson
2018-07-20T12:45:01.591-0500 restoring indexes for collection mydb.users from metadata
2018-07-20T12:45:01.592-0500 finished restoring mydb.users (25000 documents)
2018-07-20T12:45:01.592-0500 done
Obnovit celou sbírku
Chcete-li obnovit pouze jednu kolekci z db, můžete použít následující příkaz:
$ mongorestore -d mydb -c users mydb/users.bson
Pokud je vaše kolekce zálohována ve formátu JSON namísto BSON, můžete použít následující příkaz:
$ mongoimport --db mydb --collection users --file users.json --jsonArray
Výhody
- Velmi snadné použití
- Máte plný přístup ke své záloze
- Zálohy můžete umístit na libovolné místo, jako jsou sdílené složky NFS, AWS S3 atd.
Nevýhody
- Pokaždé to bude vyžadovat úplnou zálohu databáze, nejen rozdíl.
- U velkých databází může zálohování a obnova databáze trvat hodiny.
- Ve výchozím nastavení se nejedná o časový okamžik, což znamená, že pokud se vaše data během zálohování změní, může mít záloha za následek nekonzistenci. K vyřešení tohoto problému můžete použít volbu --oplog. Na konci procesu mongodump pořídí snímek databáze.
Správce operací MongoDB
Ops Manager je aplikace pro správu MongoDB, která běží ve vašem datovém centru. Průběžně zálohuje vaše data a poskytuje procesy obnovy databáze v určitém okamžiku. V rámci této aplikace existuje agent, který se připojuje k vašim instancím MongoDB. Nejprve provede počáteční synchronizaci pro zálohování aktuálního stavu databáze. Agent bude nadále odesílat komprimovaná a zašifrovaná data oplogu do Správce operací, abyste mohli mít nepřetržitou zálohu. Pomocí těchto dat vytvoří Ops Manager snímky databáze. Každých 6 hodin vytvoří snímek vaší databáze a data oplogu budou uložena po dobu 24 hodin. Plán snímku můžete kdykoli nakonfigurovat pomocí Správce operací.
Výhody
- Ve výchozím nastavení je to časový okamžik
- Neovlivňuje výkon produkce kromě počáteční synchronizace
- Podpora konzistentních snímků sdílených clusterů
- Flexibilita pro vyloučení nekritických sbírek
Nevýhody
- Latence sítě se zvyšuje s velikostí snímku při obnově databáze.
MongoDB Cloud Manager
MongoDB Cloud Manager je cloudové zálohovací řešení, které poskytuje řešení pro obnovení v určitém okamžiku, nepřetržité a online zálohování jako plně spravovanou službu. Pro správu zálohování a obnovy databáze můžete jednoduše nainstalovat agenta Cloud Manager. Uloží vaše zálohovaná data v cloudu MongoDB.
Výhody
- Velmi snadné použití. Dobré GUI.
- Nepřetržité zálohování dotazů a oplogů.
Nevýhody
- Žádná kontrola nad zálohovanými daty. Je uložen v cloudu MongoDB.
- Cena závisí na velikosti dat a množství změn oplogu.
- Proces obnovy je pomalý.
Snímky databázových souborů
Toto je nejjednodušší řešení zálohování databáze. Můžete zkopírovat všechny podkladové soubory (obsah dat/adresáře) a umístit je na libovolné bezpečné místo. Před zkopírováním všech souborů byste měli zastavit všechny probíhající operace zápisu do databáze, abyste zajistili konzistenci dat. K zastavení všech operací zápisu můžete použít příkaz db.fsyncLock().
Existují dva typy snímků:jedním jsou snímky na úrovni cloudu a další jsou snímky na úrovni OS.
Pokud ukládáte data databáze u poskytovatele cloudových služeb, jako je AWS, musíte pro zálohování pořídit snímky AWS EBS. Na rozdíl od toho, pokud ukládáte soubory DB v nativním OS, jako je Linux, musíte pořizovat snímky LVM. Snímky LVM nejsou přenosné na jiné počítače. Snímky cloudových základen jsou tedy lepší než snímky založené na OS.
Výhody
- Snadné použití.
- Plná kontrola nad snímky. Můžete jej přesunout do libovolného datového centra.
- Tyto snímky jsou snímky rozdílů, které ukládají pouze rozdíly od předchozích snímků.
- Pro obnovení databáze není třeba stahovat snímky. Můžete jednoduše vytvořit nový svazek ze svého snímku.
Nevýhody
- Pomocí této metody můžete obnovit databázi pouze v bodech přerušení.
- Údržba je někdy velmi složitá.
- Ke koordinaci záloh napříč všemi sadami replik (ve sdíleném systému) potřebujete speciální vývojářský tým.
Nástroj konzistentního zálohování MongoDB
Konzistentní zálohování MongoDB je nástroj pro provádění konzistentních záloh clusterů MongoDB. Může zálohovat cluster s jedním nebo mnoha fragmenty do jednoho bodu databáze. Používá Mongodump jako výchozí metodu zálohování. Spusťte následující příkaz a vytvořte zálohu pomocí tohoto nástroje.
$ mongodb-consistent-backup -H localhost -P 27017 -u USERNAME -p PASSWORD -l /var/backups/mongo
Všechny zálohy generované těmito příkazy jsou kompatibilní s MongoRestore. Pro zajištění konzistence můžete použít příkaz mongorestore s volbou --oplogReplay.
$ mongorestore --host localhost --port 27017 -u USERNAME -p PASSWORD --oplogReplay --dir /var/backups/mongo/mydb/dump
Výhody
- Plně otevřený zdroj
- Funguje se sdíleným clusterem
- Poskytuje možnost vzdáleného zálohování, jako je Amazon S3
- K dispozici je automatické škálování
- Velmi snadná instalace a spuštění
Nevýhoda
- Ne zcela vyzrálý produkt
- Velmi málo možností vzdáleného nahrávání
- Nepodporuje šifrování dat před uložením na disk
- Úložišti oficiálního kódu chybí řádné testování
Záloha ClusterControl
ClusterControl je automatický systém správy databází typu vše v jednom. Umožňuje vám snadno monitorovat, nasazovat, spravovat a škálovat vaše databázové clustery. Podporuje MySQL, MongoDB, PostgreSQL, Percona XtraDB a Galera Cluster. Tento software automatizuje téměř všechny databázové operace, jako je nasazení clusteru, přidání nebo odebrání uzlu z jakéhokoli clusteru, průběžné zálohování, škálování clusteru atd. Všechny tyto věci můžete dělat z jediného GUI poskytovaného systémem ClusterControl.
ClusterControl poskytuje velmi pěkné GUI pro správu zálohování MongoDB s podporou plánování a kreativních sestav. Poskytuje vám dvě možnosti metod zálohování.
- Mongodump
- Konzistentní zálohování Mongodb
Uživatelé si tak mohou vybrat libovolnou možnost podle svých potřeb. Tento nástroj přiřadí jedinečné ID všem zálohám a uloží je pod touto cestou:ClusterControl> Nastavení> Záloha> BackupID. Pokud zadaný uzel není při vytváření zálohy aktivní, nástroj automaticky vyhledá aktivní uzel z clusteru a pokračuje v procesu zálohování na tomto uzlu. Tento nástroj také poskytuje možnost naplánovat zálohování pomocí kterékoli z výše uvedených metod zálohování. Jakoukoli plánovací úlohu můžete povolit/zakázat pouhým přepnutím tlačítka. ClusterControl spouští proces zálohování na pozadí, takže neovlivní ostatní úlohy ve frontě.
Výhody
- Snadná instalace a velmi jednoduché použití
- Více možností pro metody zálohování
- Plánování zálohování je velmi snadné pomocí jednoduchého formuláře GUI
- Automatické ověření zálohy
- Záložní přehledy se stavem
Nevýhoda
- Obě metody zálohování interně používají mongodump, který má určité problémy se zpracováním velmi rozsáhlých databází.
Závěr
Dobrá strategie zálohování je kritickou součástí každého systému správy databází. MongoDB nabízí mnoho možností pro zálohování a obnovu/obnovu. Spolu s dobrou metodou zálohování je velmi důležité mít více replik databáze. To pomáhá obnovit databázi, aniž by došlo k výpadku byť jen jedné sekundy. U větších databází může být někdy proces zálohování velmi náročný na zdroje. Váš server by tedy měl být vybaven dobrým CPU, RAM a větším diskovým prostorem, aby zvládl tento druh zátěže. Proces zálohování může z těchto důvodů zvýšit zátěž serveru, takže byste měli proces zálohování spouštět v noci nebo mimo špičku.