Pokud jde o zálohování a archivaci dat, IT oddělení jsou pod tlakem, aby splnila přísnější smlouvy o úrovni služeb, poskytovala více vlastních sestav a dodržovala rozšiřující se požadavky na dodržování předpisů a zároveň pokračovala ve správě každodenních úloh archivace a zálohování. Databázový server bezpochyby ukládá některé z nejcennějších informací vašeho podniku. Zásadním zaškrtávacím políčkem je zaručit spolehlivé zálohování databáze, aby se zabránilo ztrátě dat v případě nehody nebo selhání hardwaru.
Jak to ale udělat skutečně DR, když jsou všechna vaše data v jediném datovém centru nebo dokonce v datových centrech, která jsou v blízké geolokaci? Navíc, ať už se jedná o 24x7 vysoce zatížený server nebo prostředí s nízkým objemem transakcí, budete potřebovat, aby zálohování bylo bezproblémové, aniž by došlo k narušení výkonu serveru v produkčním prostředí.
V tomto blogu se podíváme na zálohování MongoDB do cloudu. Cloud změnil odvětví zálohování dat. Vzhledem k dostupné ceně mají menší podniky řešení mimo pracoviště, které zálohuje všechna jejich data.
Ukážeme vám, jak provádět bezpečné zálohování MongoDB pomocí služeb mongo a také další metody, které můžete použít k rozšíření možností obnovy databáze po havárii.
Pokud se váš server nebo cíl zálohy nachází v exponované infrastruktuře, jako je veřejný cloud, poskytovatel hostingu nebo je připojen přes nedůvěryhodnou síť WAN, musíte ve svých zásadách zálohování přemýšlet o dalších akcích. Existuje několik různých způsobů, jak provádět zálohy databáze pro MongoDB, a v závislosti na typu zálohy se bude lišit doba obnovy, velikost a možnosti infrastruktury. Protože mnoho řešení cloudového úložiště jsou jednoduše úložiště s různými rozhraními API, jakékoli řešení zálohování lze provést s trochou skriptování. Jaké tedy máme možnosti, aby byl proces hladký a bezpečný?
Šifrování záloh MongoDB
Zabezpečení by mělo být středobodem každé akce, kterou týmy IT dělají. Vždy je dobré vynutit šifrování, aby se zvýšila bezpečnost zálohovaných dat. Jednoduchým případem použití k implementaci šifrování je situace, kdy chcete zálohu přesunout do externího úložiště záloh umístěného ve veřejném cloudu.
Při vytváření šifrované zálohy je třeba mít na paměti, že obnovení obvykle trvá déle. Záloha musí být dešifrována před jakoukoli činností obnovy. S velkým souborem dat by to mohlo způsobit určité zpoždění RTO.
Na druhou stranu, pokud k šifrování používáte soukromé klíče, nezapomeňte klíč uložit na bezpečném místě. Pokud soukromý klíč chybí, záloha bude zbytečná a neobnovitelná. Pokud je klíč odcizen, všechny vytvořené zálohy, které používají stejný klíč, budou ohroženy, protože již nejsou zabezpečeny. Ke generování soukromých nebo veřejných klíčů můžete použít populární GnuPG nebo OpenSSL.
Chcete-li provést šifrování MongoDBdump pomocí GnuPG, vygenerujte soukromý klíč a postupujte podle pokynů průvodce:
$ gpg --gen-key
Vytvořte obyčejnou zálohu MongoDBdump jako obvykle:
$ mongodump –db db1 –gzip –archive=/tmp/db1.tar.gz
Zašifrujte soubor s výpisem paměti a odstraňte starší obyčejnou zálohu:$ gpg --encrypt -r ‘[email protected]’ db1.tar.gz
$ rm -f db1.tar.gz
GnuPG k zašifrovanému souboru automaticky připojí příponu .gpg. Chcete-li dešifrovat,prostě spusťte příkaz gpg s příznakem --decrypt:
$ gpg --output db1.tar.gz --decrypt db1.tar.gz.gpg
Chcete-li vytvořit šifrovaný MongoDBdump pomocí OpenSSL, musíte vygenerovat soukromý klíč a veřejný klíč:OpenSSL req -x509 -nodes -newkey rsa:2048 -keyout dump.priv.pem -out dump.pub.pem
Tento soukromý klíč (dump.priv.pem) musí být uložen na bezpečném místě pro budoucí dešifrování. Pro Mongodump lze šifrovanou zálohu vytvořit například propojením obsahu do openssl
mongodump –db db1 –gzip –archive=/tmp/db1.tar.gz | openssl smime -encrypt -binary -text -aes256
-out database.sql.enc -outform DER dump.pub.pem
K dešifrování jednoduše použijte soukromý klíč (dump.priv.pem) spolu s příznakem -decrypt:openssl smime -decrypt -in database.sql.enc -binary -inform
DEM -inkey dump.priv.pem -out db1.tar.gz
Komprese záloh MongoDB
Ve světě zálohování databází v cloudu je komprese jedním z vašich nejlepších přátel. Dokáže nejen ušetřit úložný prostor, ale může také výrazně zkrátit čas potřebný ke stažení/nahrání dat.
Kromě archivace jsme také přidali podporu pro kompresi pomocí gzip. To je odhaleno zavedením nové možnosti příkazového řádku „--gzip“ v mongodump i mongorestore. Komprese funguje jak u záloh vytvořených pomocí adresáře, tak v režimu archivu a snižuje využití místa na disku.
Normálně může mít výpis MongoDB nejlepší míru komprese, protože se jedná o plochý textový soubor. V závislosti na kompresním nástroji a poměru může být komprimovaný MongoDBdump až 6krát menší než původní velikost zálohy. Chcete-li zálohu zkomprimovat, můžete výstup MongoDBdump propojit s nástrojem pro kompresi a přesměrovat jej do cílového souboru
Komprimovaná záloha vám může ušetřit až 50 % původní velikosti zálohy v závislosti na datové sadě.
mongodump --db country --gzip --archive=country.archive
Omezení propustnosti sítě
Skvělou možností pro zálohování v cloudu je omezení šířky pásma streamování sítě (Mb/s) při zálohování. Můžete toho dosáhnout pomocí nástroje pv. Obslužný program pv přichází s možností modifikátorů dat -L RATE, --rate-limit RATE, které omezují přenos na maximum RATE bytů za sekundu. Níže uvedený příklad jej omezí na 2 MB/s.
$ pv -q -L 2m
Přenos záloh MongoDB do cloudu
Když je nyní vaše záloha zkomprimovaná a zabezpečená (zašifrovaná), je připravena k přenosu.
Google Cloud
Nástroj příkazového řádku gsutil se používá ke správě, sledování a používání segmentů úložiště ve službě Google Cloud Storage. Pokud jste již nainstalovali gcloud util, máte již nainstalovaný gsutil. Jinak postupujte podle pokynů pro vaši distribuci Linuxu zde.
Chcete-li nainstalovat gcloud CLI, můžete postupovat podle níže uvedeného postupu:
curl https://sdk.cloud.google.com | bash
Restartujte svůj shell:exec -l $SHELL
Spusťte gcloud init a inicializujte prostředí gcloud:gcloud init
S nainstalovaným a ověřeným nástrojem příkazového řádku gsutil vytvořte ve svém aktuálním projektu oblast regionálního úložiště s názvem MongoDB-backups-storage.gsutil mb -c regional -l europe-west1 gs://severalnines-storage/
Creating gs://MongoDB-backups-storage/
Amazon S3
Pokud k hostování databází nepoužíváte RDS, je velmi pravděpodobné, že si zálohujete sami. Platforma Amazon AWS, S3 (Amazon Simple Storage Service) je služba pro ukládání dat, kterou lze použít k ukládání záloh databází nebo jiných kritických souborů. K zabezpečení svých dat můžete službu použít buďto v instanci Amazon EC2, nebo ve vašem on-prem prostředí.
Zatímco zálohy lze nahrát přes webové rozhraní, lze k tomu použít vyhrazené rozhraní příkazového řádku s3 z příkazového řádku a pomocí skriptů pro automatizaci zálohování. Pokud mají být zálohy uchovávány po velmi dlouhou dobu a doba obnovy není problémem, lze zálohy přenést do služby Amazon Glacier, která poskytuje mnohem levnější dlouhodobé úložiště. Soubory (objekty Amazonu) jsou logicky uloženy v obrovském plochém kontejneru jménem bucket. S3 představuje rozhraní REST pro své vnitřnosti. Toto rozhraní API můžete použít k provádění operací CRUD na segmentech a objektech a také ke změně oprávnění a konfigurací u obou.
Primární distribuční metodou pro AWS CLI v systémech Linux, Windows a macOS je pip, správce balíčků pro Python. Pokyny naleznete zde.
aws s3 cp severalnines.sql s3://severalnine-sbucket/MongoDB_backups
Ve výchozím nastavení poskytuje S3 životnost objektů 11 9s. To znamená, že pokud do něj uložíte 1 000 000 000 (1 miliardu) objektů, můžete očekávat, že ztratíte 1 objekt v průměru každých 10 let. Způsob, jakým S3 dosahuje tohoto působivého počtu 9, je automatická replikace objektu ve více zónách dostupnosti, o kterých budeme hovořit v jiném příspěvku. Amazon má regionální datová centra po celém světě. Microsoft Azure Storage
Veřejná cloudová platforma společnosti Microsoft, Azure, má možnosti úložiště s rozhraním řídicí linky. Informace naleznete zde. Open source rozhraní Azure CLI pro různé platformy poskytuje sadu příkazů pro práci s platformou Azure. Poskytuje velkou část funkcí, které lze vidět na portálu Azure, včetně bohatého přístupu k datům.
Instalace Azure CLI je poměrně jednoduchá, pokyny najdete zde. Níže naleznete, jak přenést zálohu do úložiště Microsoft.
az storage blob upload --container-name severalnines --file severalnines.gz.tar --name severalnines_backup
Hybridní úložiště pro zálohy MongoDB
S rostoucím průmyslem veřejných a soukromých cloudových úložišť máme novou kategorii nazvanou hybridní úložiště. Typickým přístupem je uchovávat data na lokálních discích po kratší dobu, zatímco cloudové zálohovací úložiště by bylo drženo po delší dobu. Požadavek na delší uchovávání záloh často vychází ze zákonných povinností pro různá odvětví (např. telekomunikační společnosti musí ukládat metadata připojení). Tato technologie umožňuje ukládat soubory lokálně se změnami automaticky synchronizovanými vzdáleně v cloudu. Takový přístup vychází z potřeby mít nedávné zálohy uložené lokálně pro rychlou obnovu (nižší RTO) a také z cílů kontinuity podnikání.
Důležitým aspektem efektivního využití zdrojů je mít oddělené zálohy. Data, která jsou uložena lokálně na redundantních diskových jednotkách, by byla uchovávána kratší dobu, zatímco úložiště záloh v cloudu by bylo drženo po delší dobu. Požadavek na delší uchovávání záloh často pochází ze zákonných povinností pro různá odvětví (jako jsou telekomunikace, které musí ukládat metadata připojení).
Poskytovatelé cloudu, jako jsou Google Cloud Services, Microsoft Azure a Amazon S3, nabízejí prakticky neomezené úložiště, což snižuje nároky na místní prostor. Umožňuje vám uchovávat záložní soubory déle, jak dlouho chcete, a nemusíte se obávat o místo na místním disku.
Správa zálohování ClusterControl – hybridní úložiště
Při plánování zálohování pomocí ClusterControl lze každou z metod zálohování konfigurovat pomocí sady možností, jak chcete zálohování provést. Nejdůležitější pro hybridní cloudové úložiště by bylo:
- Omezování sítě
- Šifrování s vestavěnou správou klíčů
- Komprese
- Doba uchování pro místní zálohy
- Doba uchování cloudových záloh
Pokročilé funkce zálohování ClusterControl pro cloud, paralelní komprese, omezení šířky pásma sítě, šifrování , atd. Vaše společnost může využít výhod cloudové škálovatelnosti a průběžných cen pro rostoucí potřeby úložiště. Můžete navrhnout strategii zálohování, která poskytne jak místní kopie v datovém centru pro okamžitou obnovu, tak bezproblémovou bránu ke službám cloudového úložiště od AWS, Google a Azure.
Pokročilé TLS a AES 256 -bitové šifrování a kompresní funkce podporují zabezpečené zálohy, které zabírají výrazně méně místa v cloudu.