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

Vytvoření studeného pohotovostního režimu pro PostgreSQL pomocí Amazon AWS

Potřeba dosáhnout vysoké dostupnosti databáze je poměrně častým úkolem a často nutností. Pokud má vaše společnost omezený rozpočet, může být údržba replikačního slave (nebo více než jednoho), který běží na stejném cloudovém poskytovateli (jen čeká, jestli to někdy bude potřeba), nákladná. V závislosti na typu aplikace existují některé případy, kdy je ke zlepšení RTO (Recovery Time Objective) nezbytný replikační slave.

Existuje však ještě jedna možnost, pokud vaše společnost může přijmout krátké zpoždění, aby vaše systémy byly znovu online.

Studený pohotovostní režim, je metoda redundance, kde máte záložní uzel (jako zálohu) pro primární uzel. Tento uzel se používá pouze během hlavního selhání. Po zbytek času je uzel studeného pohotovostního režimu vypnutý a používá se pouze k načtení zálohy, když je to potřeba.

Chcete-li použít tuto metodu, je nutné mít předem definované zásady zálohování (s redundancí) podle přijatelného RPO (Recovery Point Objective) pro společnost. Může se stát, že ztráta 12 hodin dat je pro firmu přijatelná nebo ztráta pouhé jedné hodiny může být velkým problémem. Každá společnost a aplikace si musí určit svůj vlastní standard.

V tomto blogu se dozvíte, jak vytvořit zásady zálohování a jak je obnovit na server ve studeném pohotovostním režimu pomocí ClusterControl a jeho integrace s Amazon AWS.

U tohoto blogu budeme předpokládat, že již máte účet AWS a nainstalovaný ClusterControl. I když v tomto příkladu použijeme AWS jako poskytovatele cloudu, můžete použít jiného. Použijeme následující topologii PostgreSQL nasazenou pomocí ClusterControl:

  • 1 primární uzel PostgreSQL
  • 2 PostgreSQL Hot-Standby Nodes
  • 2 Load Balancery (HAProxy + Keepalived)

Vytvoření přijatelné zásady zálohování

Osvědčeným postupem pro vytváření tohoto typu zásad je ukládat záložní soubory na tři různá místa, jedno uložené lokálně na databázovém serveru (pro rychlejší obnovu), druhé na centralizovaném záložním serveru a poslední v cloudu.

To můžete zlepšit také používáním plných, přírůstkových a rozdílových záloh. S ClusterControl můžete provádět všechny výše uvedené osvědčené postupy, všechny ze stejného systému, s přátelským a snadno použitelným uživatelským rozhraním. Začněme vytvořením integrace AWS v ClusterControl.

Konfigurace integrace ClusterControl AWS

Přejděte na ClusterControl -> Integrace -> Poskytovatelé cloudu -> Přidat přihlašovací údaje pro cloud.

Vyberte poskytovatele cloudu. Podporujeme AWS, Google Cloud nebo Azure. V tomto případě zvolte AWS a pokračujte.

Zde musíte přidat název, výchozí oblast a AWS ID klíče a tajný klíč. Chcete-li získat nebo vytvořit tyto poslední, měli byste přejít do sekce IAM (Identity and Access Management) na konzole pro správu AWS. Další informace naleznete v naší dokumentaci nebo dokumentaci AWS.

Nyní máte vytvořenou integraci, pojďme naplánovat první zálohu pomocí ClusterControl.

Naplánování zálohování pomocí ClusterControl

Přejděte na ClusterControl -> Vyberte klastr PostgreSQL -> Záloha -> Vytvořit zálohu.

Můžete si vybrat, zda chcete vytvořit jednu zálohu okamžitě, nebo naplánovat nová záloha. Zvolme tedy druhou možnost a pokračujte.

Když plánujete zálohování, musíte nejprve určit plán /frekvence. Poté musíte zvolit metodu zálohování (pg_dumpall, pg_basebackup, pgBackRest), server, ze kterého bude záloha převzata, a kam chcete zálohu uložit. Naši zálohu můžete také nahrát do cloudu (AWS, Google nebo Azure) povolením odpovídajícího tlačítka.

Poté zadejte použití komprese, úroveň komprese, šifrování a dobu uchování pro vaši zálohu. Existuje další funkce nazvaná „Ověřit zálohu“, kterou brzy uvidíte podrobněji v tomto příspěvku na blogu.

Pokud byla povolena možnost „Nahrát zálohu do cloudu“, Uvidíte tento krok, kde musíte vybrat přihlašovací údaje cloudu a vytvořit nebo vybrat segment S3, kam uložit zálohu. Musíte také zadat dobu uchování.

Nyní budete mít naplánované zálohování v sekci ClusterControl Schedule Backups. Chcete-li pokrýt výše uvedené osvědčené postupy, můžete naplánovat zálohu, která ji uloží na externí server (server ClusterControl) a do cloudu, a poté naplánovat další zálohu, která ji uloží lokálně v uzlu databáze pro rychlejší obnovu.

Obnovení zálohy na Amazon EC2

Jakmile je záloha dokončena, můžete ji obnovit pomocí ClusterControl v sekci Záloha.

Vytvoření instance Amazon EC2

Za prvé, k jeho obnovení budete potřebovat místo, kde to uděláte, takže vytvořte základní instanci Amazon EC2. Přejděte na „Spustit instanci“ v konzole pro správu AWS v části EC2 a nakonfigurujte svou instanci.

Po vytvoření instance budete muset zkopírovat veřejné SSH klíč ze serveru ClusterControl.

Obnovení zálohy pomocí ClusterControl

Nyní máte novou instanci EC2, pojďme ji použít k obnovení zálohy. Za tímto účelem přejděte ve vašem ClusterControl do sekce zálohování (ClusterControl -> Select Cluster -> Backup) a tam můžete vybrat "Restore Backup" nebo přímo "Restore" na záloze, kterou chcete obnovit.

Máte tři možnosti obnovení zálohy. Zálohu můžete obnovit ve stávajícím databázovém uzlu, obnovit a ověřit zálohu na samostatném hostiteli nebo ze zálohy vytvořit nový cluster. Protože chcete vytvořit uzel studeného pohotovostního režimu, použijte druhou možnost „Obnovit a ověřit na samostatném hostiteli“.

Budete potřebovat vyhrazeného hostitele (nebo virtuálního počítače), který není součástí clusteru k obnovení zálohy, takže použijme instanci EC2 vytvořenou pro tuto úlohu. ClusterControl nainstaluje software a obnoví zálohu v tomto hostiteli.

Pokud je povolena možnost „Vypnout server po obnovení zálohy“, ClusterControl po dokončení úlohy obnovy zastaví uzel databáze, a to je přesně to, co potřebujeme pro vytvoření tohoto studeného pohotovostního režimu.

Průběh zálohování můžete sledovat v sekci ClusterControl Activity.

Použití funkce ClusterControl Verify Backup

Záloha není záloha, pokud ji nelze obnovit. Měli byste se tedy ujistit, že záloha funguje, a často ji obnovovat v uzlu studeného pohotovostního režimu.

Tato funkce zálohování ClusterControl Verify Backup je způsob, jak automatizovat údržbu uzlu ve studeném pohotovostním režimu, který obnovuje poslední zálohu, aby byla co nejaktuálnější a nemusela se provádět ruční záloha. Podívejme se, jak to funguje.

Jako úloha „Obnovení a ověření na samostatném hostiteli“ bude k obnovení zálohy vyžadovat vyhrazeného hostitele (nebo virtuálního počítače), který není součástí clusteru, takže použijme stejnou instanci EC2 zde.

Pro plánované zálohy je k dispozici funkce automatického ověření zálohy. Přejděte do ClusterControl -> Vyberte klastr PostgreSQL -> Záloha -> Vytvořit zálohu a opakujte kroky, které jste viděli dříve, abyste naplánovali novou zálohu.

Ve druhém kroku budete mít k dispozici funkci „Ověřit zálohu“ pro jeho aktivaci.

Pomocí výše uvedených možností ClusterControl nainstaluje software a obnoví zálohu na hostitel. Po obnovení, pokud vše proběhlo v pořádku, uvidíte v sekci ClusterControl Backup ikonu ověření.

Závěr

Pokud máte omezený rozpočet, ale požadujete vysokou dostupnost, můžete použít studený pohotovostní uzel PostgreSQL, který může být platný nebo ne v závislosti na RTO a RPO společnosti. V tomto blogu jsme si ukázali, jak naplánovat zálohu (podle vašich obchodních zásad) a jak ji ručně obnovit. Také jsme ukázali, jak automaticky obnovit zálohu na serveru ve studeném pohotovostním režimu pomocí ClusterControl, Amazon S3 a Amazon EC2.


  1. Použijte COL_LENGTH() k získání délky sloupce na serveru SQL

  2. Nástroj GUI pro PostgreSQL

  3. Odstranění výchozího trasování – část 2

  4. Dotaz SQL pro sbalení duplicitních hodnot podle časového období