sql >> Databáze >  >> RDS >> MariaDB

Možnosti cloudového zálohování pro databáze MySQL a MariaDB

Hlavním cílem zálohování dat je samozřejmě možnost vrátit se zpět a získat přístup k archivům v případě selhání hardwaru. Chcete-li dnes podnikat, potřebujete jistotu, že v případě katastrofy budou vaše data chráněna a přístupná. Zálohy byste museli ukládat mimo pracoviště pro případ, že by vaše datové centrum shořelo.

Ochrana dat zůstává výzvou pro malé a střední podniky. Malé a střední podniky dávají přednost archivaci firemních dat pomocí přímo připojeného úložiště, přičemž většina firem má v plánu vytvářet záložní kopie mimo pracoviště. Přístup k místnímu úložišti může vést k jednomu z nejzávažnějších dilemat, kterému může moderní společnost čelit – ztrátě dat v případě katastrofy.

Při rozhodování o tom, zda povolit přenos kritické obchodní databáze mimo pracoviště, a při výběru vhodného dodavatele, aby tak učinili, přichází do úvahy mnoho faktorů. Tradiční metody, jako je zápis na pásku a odeslání na vzdálené místo, mohou být komplikovaným procesem, který vyžaduje speciální hardware, adekvátně vyškolený personál a postupy, které zajistí, že zálohy budou pravidelně vytvářeny, chráněny a že informace v nich obsažené jsou ověřovány z hlediska integrity. Malé podniky mají obvykle malé rozpočty na IT. Často si nemohou dovolit mít sekundární datové centrum, i když mají vyhrazené datové centrum. Přesto je stále důležité uchovávat kopii záložních souborů mimo pracoviště. Katastrofy jako hurikán, povodeň, požár nebo krádež mohou zničit vaše servery a úložiště. Zálohování dat v samostatném datovém centru zajišťuje bezpečnost dat bez ohledu na to, co se děje ve vašem primárním datovém centru. Cloudové úložiště je skvělý způsob, jak tento problém vyřešit.
Při přístupu k zálohování v cloudu je třeba zvážit řadu faktorů. Některé z vašich otázek jsou:

  • Jsou zálohovaná data zabezpečena v klidu v externím datovém centru?
  • Je přenos do nebo z externího datového centra prostřednictvím veřejné internetové sítě bezpečný?
  • Má to vliv na RTO (objektivní čas obnovení)?
  • Je proces zálohování a obnovy pro naše IT pracovníky dostatečně snadný?
  • Jsou nutné nějaké změny ve stávajících procesech?
  • Potřebují zálohovací nástroje třetích stran?
  • Jaké jsou dodatečné náklady, pokud jde o požadovaný software nebo přenos dat?
  • Jaké jsou náklady na úložiště?

Funkce zálohování při zálohování do cloudu

Pokud se váš server MySQL 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 MySQL, 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í

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 jednu věc: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íč, nezapomeňte jej 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í mysqldump pomocí GnuPG, vygenerujte soukromý klíč a postupujte podle pokynů průvodce:

$ gpg --gen-key

Vytvořte obyčejnou zálohu mysqldump jako obvykle:

$ mysqldump --routines --events --triggers --single-transaction db1 | gzip > db1.tar.gz

Zašifrujte soubor výpisu 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ý mysqldump 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 uchován na bezpečném místě pro budoucí dešifrování. Pro mysqldump lze vytvořit šifrovanou zálohu propojením obsahu například do openssl

mysqldump --routines --events --triggers --single-transaction database | 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 database.sql

Percona XtraBackup lze použít k šifrování nebo dešifrování místních nebo streamovaných záloh s možností xbstream pro přidání další vrstvy ochrany k zálohám. Šifrování se provádí pomocí knihovny libgcrypt. K zadání šifrovacího klíče lze použít volbu --encrypt-key i --encryptkey-file. Šifrovací klíče lze generovat pomocí příkazů jako

$ openssl rand -base64 24
$ bWuYY6FxIPp3Vg5EDWAxoXlmEFqxUqz1

Tato hodnota pak může být použita jako šifrovací klíč. Příklad příkazu innobackupex pomocí --encrypt-key:

$ innobackupex --encrypt=AES256 --encrypt-key=”bWuYY6FxIPp3Vg5EDWAxoXlmEFqxUqz1” /storage/backups/encrypted

Výstup výše uvedeného příkazu OpenSSL lze také přesměrovat do souboru a lze s ním zacházet jako se souborem klíče:

openssl rand -base64 24 > /etc/keys/pxb.key

Použijte jej místo toho s volbou --encrypt-key-file:

innobackupex --encrypt=AES256 --encrypt-key-file=/etc/keys/pxb.key /storage/backups/encrypted

K dešifrování jednoduše použijte volbu --decrypt s příslušným --encrypt-key nebo --encrypt-key-file:

$ innobackupex --decrypt=AES256 --encrypt-key=”bWuYY6FxIPp3Vg5EDWAxoXlmEFqxUqz1”
/storage/backups/encrypted/2018-11-18_11-10-09/

Další informace o šifrování MySQL a MariaDB naleznete v našem dalším příspěvku na blogu.

Komprese

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.
Existuje mnoho dostupných komprimačních nástrojů, jmenovitě gzip, bzip2, zip, rar a 7z.
Za normálních okolností může mít mysqldump 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ý mysqldump až 6krát menší než původní velikost zálohy. Chcete-li zálohu zkomprimovat, můžete výstup mysqldump propojit s nástrojem pro kompresi a přesměrovat jej do cílového souboru. Můžete také přeskočit několik věcí, jako jsou komentáře, prohlášení o uzamčení tabulek (pokud je InnoDB), přeskočení vyčištěného GTID a spouštění:

mysqldump --single-transaction --skip-comments --skip-triggers --skip-lock-tables --set-gtid-purged OFF --all-databases | gzip > /storage/backups/all-databases.sql.gz

S Percona Xtrabackup můžete použít režim streamování (innobackupex), který místo kopírování souborů do adresáře zálohy pošle zálohu do STDOUT ve speciálním formátu tar nebo xbstream. Komprimovaná záloha vám může ušetřit až 50 % původní velikosti zálohy, v závislosti na datové sadě. Přidejte volbu --compress do příkazu backup. Použitím xbstream ve streamovaných zálohách můžete urychlit proces komprese pomocí volby --compress-threads. Tato volba určuje počet vláken vytvořených xtrabackup pro paralelní kompresi dat. Výchozí hodnota pro tuto možnost je 1. Chcete-li tuto funkci použít, přidejte možnost do místní zálohy. Příklad zálohy s kompresí:

innobackupex --stream=xbstream --compress --compress-threads=4 > /storage/backups/backup.xbstream

Před použitím protokolů během přípravné fáze bude nutné komprimované soubory
dekomprimovat pomocí xbstream:
Potom pomocí qpress extrahujte každý soubor končící příponou .qp do příslušného adresáře před
spuštěním -- příkaz apply-log k přípravě dat MySQL.

$ xbstream -x < /storage/backups/backup.xbstream

Omezit propustnost sítě

Skvělou možností pro cloudové zálohy 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

V níže uvedeném příkladu můžete vidět xtrabackup s paralelním gzip, šifrování

 /usr/bin/innobackupex --defaults-file=/etc/mysql/my.cnf --galera-info --parallel 4 --stream=xbstream --no-timestamp . | pv -q -L 2m | pigz -9 - | openssl enc -aes-256-cbc -pass file:/var/tmp/cmon-008688-19992-72450efc3b6e9e4f.tmp > /home/ubuntu/backups/BACKUP-3445/backup-full-2018-11-28_213540.xbstream.gz.aes256 ) 2>&1.

Přenést zálohu do cloudu

Nyní, když je vaše záloha zkomprimována a zašifrována, je připravena k přenosu.

Cloud Google

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. V opačném případě postupujte podle pokynů pro vaši distribuci Linuxu odtud.

Chcete-li nainstalovat gcloud CLI, postupujte podle níže uvedeného postupu:

curl https://sdk.cloud.google.com | bash

Restartujte svůj shell:

exec -l $SHELL

Spusťte gcloud init pro inicializaci 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 mysql-backups-storage.

gsutil mb -c regional -l europe-west1 gs://severalnines-storage/
Creating gs://mysql-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áze nebo jiných důležitých obchodní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 prostřednictvím webového rozhraní, vyhrazené rozhraní příkazového řádku s3 lze k tomu použít 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. Návod naleznete zde.

aws s3 cp severalnines.sql s3://severalnine-sbucket/mysql_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, spočívá v automatické replikaci 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.sql --name severalnines_backup

Hybridní úložiště pro zálohy MySQL a MariaDB

S rostoucím průmyslem veřejných a soukromých cloudových úložišť máme novou kategorii nazvanou hybridní úložiště. Tato technologie umožňuje, aby byly soubory uloženy lokálně, přičemž změny se automaticky synchronizují se vzdáleným úložištěm 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), stejně jako z cílů obchodní kontinuity.
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 potřebu místního prostoru. 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í pro cloudové zálohy
Uchování duálních záloh ClusterControl Pokročilé zálohovací funkce ClusterControl pro cloud, paralelní komprese, limit síťového pásma, šifrování atd...

Závěr

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.

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é funkce 256bitového šifrování a komprese TLS a AES podporují zabezpečené zálohy, které zabírají výrazně méně místa v cloudu.


  1. Pokud parametr není zadán, ignorujte parametr časového období v klauzuli where

  2. Umění agregace dat v SQL od jednoduchých po posuvné agregace

  3. 2 způsoby, jak vrátit řádky, které obsahují pouze nealfanumerické znaky v MySQL

  4. Laravel:Chyba [PDOException]:Nelze najít ovladač v PostgreSQL