MariaDB Enterprise Backup je zálohovací řešení od MariaDB Corporation s řadou funkcí, jako jsou neblokující zálohy, plné zálohování, přírůstkové zálohování, částečné zálohování a Point in Time Recovery.
Často dostáváme dotazy ohledně rozdílů mezi funkcemi MariaDB Backup a ClusterControl pro správu záloh. Tak o tomhle je tento blog.
Vytváření záloh vs jejich správa
MariaDB Backup je fork Percona XtraBackup a je to nástroj pro fyzické zálohování serveru MariaDB. Umožňuje vám dělat věci jako úplné, přírůstkové, částečné zálohy. Pomocí binárních protokolů lze také provést obnovu bodu v čase. Podle dokumentace „Enterprise“ verze zálohy MariaDB poskytuje „sledování příkazů DDL, které snižuje dobu blokování během zálohování“.
ClusterControl podporuje zálohování MariaDB jako metodu zálohování pro MariaDB. Poskytuje grafické uživatelské rozhraní pro plánování úplných záloh, přírůstkových záloh a částečných záloh a provádění obnovy souborů záloh nebo také automatizuje obnovu v určitém okamžiku. ClusterControl navíc poskytuje funkce, jako je šifrování, komprese, nahrávání do cloudového úložiště (Azure, AWS, Google Cloud) a automatické ověřování záloh, aby byla zajištěna jejich obnovitelnost.
Úplné zálohování a obnovení
K provedení úplného zálohování pomocí MariaDB Enterprise Backup můžete použít příkazové nástroje mariabackup. Po příkazu mariabackup jsou 4 vstupy parametrů. Parametry jsou:
- Záloha - používá se k zálohování databáze pomocí utilit mariabackup.
- Připravit - Chcete-li vytvořit zálohu konzistentní v určitém časovém okamžiku, musíte zálohu připravit po provedení nezpracované zálohy.
- Copy-back - používá se k obnovení extrahované zálohy do výchozího datového adresáře mysql. Zkopíruje zálohu do adresáře mysql, aniž by byla odstraněna původní záloha.
- Přesunout zpět - používá se k obnovení extrahované zálohy do datového adresáře mysql přesunutím všech záložních adresářů.
Pokud chcete zálohovat a obnovit, stačí předat povinný parametr po příkazu mariabackup. Pro příkaz k úplnému zálohování je níže ukázkový skript využívající MariaDB Backup.
mariabackup --backup --target-dir=/backup/full/ --user=bkpuser --password=p4sswordb4ckup
Existují některé možnosti, které musíte definovat, například --target-dir, což je cílové umístění souborů záloh, --user, používané pro uživatele pověření pro zálohování a --password pro heslo pro zálohu pověření.
Aby se záloha stala konzistentní v určitém okamžiku, musíte po dokončení úplné zálohy spustit přípravu. Datové soubory nejsou konzistentní, dokud nespustíte přípravu, je to proto, že při spuštění zálohy byly datové soubory zkopírovány v různých okamžicích během zálohování.
Spuštění přípravy zálohy:
mariabackup --prepare --target-dir=/backup/full
Po spuštění příprava bude záloha připravena k obnovení. Když byla příprava úspěšná, uvidíte zprávu na posledním řádku, jak je uvedeno níže.
InnoDB: Shutdown completed; log sequence number 9553231
Příkaz obnovení můžete spustit pomocí funkce copy-back. Zde je ukázkový skript pro obnovení zálohy:
mariabackup --copy-back --target-dir=/backup/full
Výše uvedený skript můžete vložit do příkazu skriptu shellu a udělit oprávnění ke spuštění, nakonfigurovat jej v plánovači operačního systému.
Zálohování a obnovení pomocí ClusterControl Backup Management je velmi snadné. ClusterControl podporuje logické zálohování a fyzické zálohování. Pro logické zálohování používá ClusterControl mysqldump a pro fyzické zálohování využívá mariabackup plnou zálohu a přírůstkovou zálohu.
Existují dvě možnosti, jak chcete provést zálohu; zálohu můžete vytvořit přímo nebo můžete zálohu naplánovat.
Můžete také povolit některé možnosti, jako je šifrování, komprese, paralelní kopírovací vlákno jako zobrazeno níže:
Obnovení zálohy je stejně snadné, jako byla záloha vytvořena. Stačí vybrat úplný záložní soubor, který chcete obnovit.
Existují dvě možnosti, jak chcete zálohu obnovit; zálohu můžete obnovit do uzlů, kde byla záloha pořízena, nebo můžete zálohu obnovit na vyhrazeném samostatném hostiteli.
Přírůstkové zálohování a obnovení
Pořízení úplné zálohy velmi velké databáze bude časově náročné a náročné na zdroje. Přírůstková záloha se používá k zálohování změn po pořízení poslední plné zálohy.
Když je spuštěna přírůstková záloha, MariaDB Enterprise Backup porovná předchozí plnou zálohu nebo přírůstkovou zálohu a najde poslední změny.
mariabackup --backup --incremental-basedir=/backup/full --target-dir=/backup/incr --user=bkpuser --password=p4sswordb4ackup
Než provedete přírůstkovou zálohu, musíte se ujistit, že byla připravena plná záloha. Poté můžete spustit přírůstkovou zálohu a aplikovat ji na poslední plnou zálohu.
mariabackup --prepare --target-dir=/backup/full --incremental-dir=/backup/incr
Po použití přírůstkové zálohy na plnou zálohu bude nyní v adresáři plné zálohy připravena všechna zálohovací data.
Obnovení připravené plné zálohy se všemi přírůstkovými změnami lze provést pomocí:
mariabackup --copy-back --target-dir=/backup/full
Chcete-li provést přírůstkové zálohování v ClusterControl, můžete zvolit přírůstkové zálohování. Před provedením přírůstkové zálohy musíte mít připravenou úplnou zálohu.
ClusterControl automaticky najde nejbližší plnou zálohu, když spustíte přírůstkovou zálohu. A pro obnovení zálohy si můžete vybrat plně připravenou zálohu a obnovit. Vyzve vás, jak chcete obnovit zálohu, buď na uzlu, nebo na samostatném hostiteli. Obnoví zálohu včetně přírůstkových změn.
Částečné zálohování a obnovení
Částečná záloha určuje, kterou databázi nebo tabulku chcete zálohovat. Můžete si vybrat buď seznam databází a tabulek k zálohování, nebo můžete některé databáze a tabulky ze zálohy vyloučit. Možnosti zahrnují:--databases, --databases-exclude, --tables, --tables-exclude
Níže je ukázkový skript pro provedení částečné zálohy pro tabulku card_data.
mariabackup --backup --target-dir=/backup/partial --user=bkpuser --password=p4sswordb4ckup --tables=card_data
Stále musíte připravit úplnou částečnou zálohu, aby byla záloha konzistentní v časovém bodě spuštěním níže uvedeného příkazu:
mariabackup --prepare --export --target-dir=/backup/partial
Provádění částečného obnovení je velmi odlišné od obnovení plné zálohy a přírůstkové zálohy. Je třeba připravit tabulky a databázi na běžícím serveru MariaDB a poté ručně zkopírovat datové soubory do datového adresáře mysql.
Chcete například provést částečné obnovení tabulky card_data (nerozdělená tabulka).
- Vytvořte prázdnou tabulku card_data se stejnou strukturou v cílové databázi
- Spusťte tabulkový prostor DISCARD v tabulce card_data.
ALTER TABLE carddb.card_data DISCARD TABLESPACE;
- Zkopírujte datové soubory do datového adresáře mysql
cp /backup/partial/carddb/card_data.* /var/lib/mysql/carddb
- Změňte vlastníka souborů na mysql
chown mysql:mysql /var/lib/mysql/carddb/card_data.*
- Poslední věc, import tabulkového prostoru:
ALTER TABLE carddb.card_data IMPORT TABLESPACE;
Částečné zálohování v ClusterControl je opravdu jednoduché, stačí povolit možnost Částečné zálohování. Dá vám možnost zahrnout nebo vyloučit databázi a tabulky, jak je uvedeno níže:
Další část je podobná plné záloze a přírůstkové záloze, můžete vyberte nastavení, jako je šifrování a komprese.
Obnovení částečné zálohy je úplně stejné, jako když obnovujeme plnou zálohu. Stačí si vybrat částečnou zálohu a o zbytek se postará ClusterControl.
Obnovení bodu v čase
Obnovením úplné zálohy nebo přírůstkové zálohy získáte zálohu od doby, kdy byla záloha pořízena, ale neposkytne vám žádná data, která přišla po vytvoření zálohy. Tyto změny by byly v binárním protokolu. Když provedete připravenou zálohu s povoleným binlogem, bude zde soubor s názvem xtrabackup_binlog_info. Soubor obsahuje binární log soubor a pozici posledního pořadového čísla.
Obnovu v určitém okamžiku můžete provést extrahováním změn do SQL, jako po dokončení obnovy. Můžete spustit mysqlbinlog a extrahovat konkrétní čas ve zdrojovém databázovém uzlu a použít SQL v cílovém/obnoveném databázovém uzlu.
Point in Time Recovery (PITR) v ClusterControl lze povolit, jak je uvedeno níže:
Musíte definovat, do kterého bodu obnovení, jsou podporovány dvě možnosti které jsou založeny na čase nebo poloze. U časového základu stačí vyplnit přesný čas, kdy budou data obnovena. Pro pozici založenou musíte vyplnit název binlog a pozici. Zbytek obnovy je podobný.
Závěr
To je pro tuto chvíli vše. Jak jsme viděli výše, MariaDB Backup je pěkný nástroj se spoustou možností. ClusterControl poskytuje snadno použitelné GUI pro provádění procedur zálohování. Přidává také řadu funkcí, jako je šifrování, komprese, plánování, správa uchovávání a automatické ověřování záloh.