sql >> Databáze >  >> RDS >> PostgreSQL

Jak zjistím, zda je moje záloha PostgreSQL dobrá?

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.


  1. Jak používat datový typ Postgres JSONB s JPA?

  2. Jak vypočítat týdenní aktivní uživatele (WAU) v MySQL

  3. Jak vrátit opravu po neúspěšné fázi přerušení v R12.2

  4. Jak určit invariantní kulturu při použití FORMAT() na serveru SQL Server