Zálohy jsou nutností ve všech plánech obnovy po havárii. Nemusí to vždy stačit k zaručení přijatelného cíle bodu obnovy, ale je to dobrý první přístup. Problém je, co se stane, když v případě selhání potřebujete použít tuto zálohu a z nějakého důvodu není použitelná? Pravděpodobně nechcete být v takové situaci, takže v tomto blogu uvidíme, jak ověřit, zda je vaše záloha vhodná k použití.
Typy záloh PostgreSQL
Začněme mluvit o různých typech záloh. Existují různé typy, ale obecně je můžeme rozdělit do dvou jednoduchých kategorií:
- Logické :Záloha je uložena ve formátu čitelném pro člověka, jako je SQL.
- Fyzické :Záloha obsahuje binární data.
Proč to zmiňujeme? Protože uvidíme, že existují určité kontroly, které můžeme provést pro jeden typ a ne pro druhý.
Kontrola protokolů zálohování
Prvním způsobem, jak ověřit, zda vše probíhá v pořádku, je zkontrolovat protokoly zálohování.
Nejjednodušší příkaz pro spuštění zálohy PostgreSQL může být například:
$ pg_dumpall > /path/to/dump.sql
Jak ale zjistím, že při spuštění příkazu došlo k chybě? Můžete jen přidat k odeslání výstupu do nějakého konkrétního souboru protokolu:
$ pg_dumpall > /path/to/dump.sql > /var/log/postgres/pg_dump.log
Můžete tedy přidat tento řádek do cronu serveru a spouštět jej každý den:
30 0 * * * pg_dumpall > /path/to/dump.sql > /var/log/postgres/pg_dump.log
Měli byste sledovat soubor protokolu, abyste hledali chyby, například jeho přidáním do nějakého monitorovacího nástroje, jako je Nagios.
Kontrola protokolů nestačí k potvrzení, že záloha bude fungovat, protože pokud je například záložní soubor z nějakého důvodu poškozen, pravděpodobně to v souboru protokolu neuvidíte.
Kontrola obsahu zálohy
Pokud používáte logické zálohy, můžete ověřit obsah souboru zálohy a potvrdit, že tam máte všechny databáze.
Své aktuální databáze PostgreSQL můžete vypsat například pomocí tohoto příkazu:
$ psql -l | awk '{ print $1 }'| awk 'FNR > 3' |grep '^[a-zA-Z0-9]' |grep -v 'template0'
postgres
template1
world
A zkontrolujte, které databáze máte v záložním souboru:
$ grep '^[\]connect' /path/to/dump.sql |awk '{print $2}'
template1
postgres
world
Problém s touto kontrolou je, že nekontrolujete velikost nebo data, takže je možné, že dojde ke ztrátě dat, pokud při provádění zálohy dojde k nějaké chybě.
Ruční obnovení pro kontrolu zálohy
Nejbezpečnějším způsobem, jak ověřit, zda záloha funguje, je její obnovení a přístup k databázi.
Po dokončení zálohy ji můžete ručně obnovit v jiném hostiteli zkopírováním souboru výpisu a spuštěním například:
$ psql -f /path/to/dump.sql postgres
Pak k němu můžete přistupovat a kontrolovat databáze:
$ psql
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
postgres | postgres | UTF8 | en_US.utf-8 | en_US.utf-8 |
template0 | postgres | UTF8 | en_US.utf-8 | en_US.utf-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.utf-8 | en_US.utf-8 | =c/postgres +
| | | | | postgres=CTc/postgres
world | postgres | UTF8 | en_US.utf-8 | en_US.utf-8 |
(4 rows)
Problém s touto metodou je samozřejmě v tom, že byste ji měli spustit ručně nebo najít způsob, jak to automatizovat, což může být časově náročný úkol.
Automatické ověření zálohy ClusterControl
Nyní se podívejme, jak může ClusterControl automatizovat ověřování záloh PostgreSQL a pomoci vyhnout se jakýmkoli překvapením nebo manuálním úkolům.
V ClusterControl vyberte svůj cluster a přejděte do sekce „Záloha“ a poté vyberte „Vytvořit zálohu“.
Pro plánované zálohy je k dispozici funkce automatického ověření zálohy. Vyberme tedy možnost „Naplánovat zálohování“.
Při plánování zálohování musíte kromě výběru běžných možností, jako je metoda nebo úložiště, určit také plán/frekvenci.
V dalším kroku můžete zálohu zkomprimovat a zašifrovat a zadat retenční období. Zde máte také funkci „Ověřit zálohu“.
K použití této funkce potřebujete vyhrazeného hostitele (nebo virtuálního počítače), který není součástí clusteru.
ClusterControl nainstaluje software a obnoví zálohu v tomto hostiteli . Po obnovení můžete v sekci ClusterControl Backup vidět ikonu ověření.
Závěr
Jak jsme zmínili, zálohování je povinné v jakémkoli prostředí, ale záloha není záloha, pokud ji nemůžete použít. Měli byste se tedy ujistit, že vaše záloha je užitečná pro případ, že ji jednoho dne budete potřebovat. V tomto blogu jsme ukázali různé způsoby, jak zkontrolovat zálohu, abyste předešli problémům, když ji chcete obnovit.