sql >> Databasteknik >  >> RDS >> PostgreSQL

Skapa en kall standby för PostgreSQL med Amazon AWS

Behovet av att uppnå databas High Availability är en ganska vanlig uppgift, och ofta ett måste. Om ditt företag har en begränsad budget kan det vara dyrt att underhålla en replikeringsslav (eller mer än en) som körs på samma molnleverantör (bara att vänta om det behövs någon dag). Beroende på typen av applikation finns det vissa fall där en replikeringsslav är nödvändig för att förbättra RTO (Recovery Time Objective).

Det finns dock ett annat alternativ om ditt företag kan acceptera en kort fördröjning för att få dina system online igen.

Cold Standby, är en redundansmetod där du har en standby-nod (som backup) för den primära. Denna nod används endast under ett masterfel. Resten av tiden stängs den kalla standby-noden av och används endast för att ladda en säkerhetskopia när det behövs.

För att använda den här metoden är det nödvändigt att ha en fördefinierad säkerhetskopieringspolicy (med redundans) enligt ett acceptabelt RPO (Recovery Point Objective) för företaget. Det kan vara så att det är acceptabelt för företaget att förlora 12 timmars data eller att förlora bara en timme kan vara ett stort problem. Varje företag och applikation måste bestämma sin egen standard.

I den här bloggen får du lära dig hur du skapar en säkerhetskopieringspolicy och hur du återställer den till en Cold Standby Server med ClusterControl och dess integration med Amazon AWS.

För den här bloggen antar vi att du redan har ett AWS-konto och ClusterControl installerat. Medan vi kommer att använda AWS som molnleverantör i det här exemplet, kan du använda en annan. Vi kommer att använda följande PostgreSQL-topologi som distribueras med ClusterControl:

  • 1 PostgreSQL Primär Nod
  • 2 PostgreSQL Hot-Standby-noder
  • 2 lastbalanserare (HAProxy + Keepalived)

Skapa en acceptabel säkerhetskopieringspolicy

Den bästa metoden för att skapa den här typen av policy är att lagra säkerhetskopieringsfilerna på tre olika platser, en lagrad lokalt på databasservern (för snabbare återställning), en annan på en centraliserad backupserver och den sista i molnet.

Du kan förbättra detta genom att även använda fullständiga, inkrementella och differentiella säkerhetskopior. Med ClusterControl kan du utföra alla ovanstående bästa praxis, alla från samma system, med ett vänligt och lättanvänt användargränssnitt. Låt oss börja med att skapa AWS-integrationen i ClusterControl.

Konfigurera ClusterControl AWS-integreringen

Gå till ClusterControl -> Integrationer -> Molnleverantörer -> Lägg till Cloud Credentials.

Välj en molnleverantör. Vi stöder AWS, Google Cloud eller Azure. I det här fallet, välj AWS och fortsätt.

Här måste du lägga till ett namn, en standardregion och en AWS nyckel-ID och nyckelhemlighet. För att få eller skapa dessa sista bör du gå till avsnittet IAM (Identity and Access Management) på AWS-hanteringskonsolen. För mer information kan du hänvisa till vår dokumentation eller AWS-dokumentation.

Nu har du skapat integrationen, låt oss börja schemalägga den första säkerhetskopieringen med ClusterControl.

Schemalägga en säkerhetskopiering med ClusterControl

Gå till ClusterControl -> Välj PostgreSQL Cluster -> Backup -> Create Backup.

Du kan välja om du vill skapa en enda säkerhetskopia direkt eller schemalägga en ny backup. Så låt oss välja det andra alternativet och fortsätta.

När du schemalägger en säkerhetskopiering måste du först ange ett schema /frekvens. Sedan måste du välja en säkerhetskopieringsmetod (pg_dumpall, pg_basebackup, pgBackRest), servern som säkerhetskopieringen ska tas från och var du vill lagra säkerhetskopian. Du kan också ladda upp vår säkerhetskopia till molnet (AWS, Google eller Azure) genom att aktivera motsvarande knapp.

Ange sedan användningen av komprimering, komprimeringsnivån, kryptering och lagringsperiod för din backup. Det finns en annan funktion som heter "Verifiera säkerhetskopiering" som du kommer att se mer i detalj snart i det här blogginlägget.

Om alternativet "Ladda upp säkerhetskopia till molnet" var aktiverat, Jag ser det här steget där du måste välja molnuppgifterna och skapa eller välja en S3-hink där du ska lagra säkerhetskopian. Du måste också ange lagringsperioden.

Nu har du den schemalagda säkerhetskopieringen i avsnittet ClusterControl Schedule Backups. För att täcka de bästa praxis som nämnts tidigare kan du schemalägga en säkerhetskopia för att lagra den på en extern server (ClusterControl-server) och i molnet, och sedan schemalägga ytterligare en säkerhetskopia för att lagra den lokalt i databasnoden för en snabbare återställning.

Återställa en säkerhetskopia på Amazon EC2

När säkerhetskopieringen är klar kan du återställa den genom att använda ClusterControl i avsnittet Säkerhetskopiering.

Skapa Amazon EC2-instansen

Först av allt, för att återställa det, behöver du någonstans att göra det, så låt oss skapa en grundläggande Amazon EC2-instans. Gå till "Launch Instance" i AWS-hanteringskonsolen i EC2-avsnittet och konfigurera din instans.

När din instans har skapats måste du kopiera SSH public nyckel från ClusterControl-servern.

Återställa säkerhetskopian med ClusterControl

Nu har du den nya EC2-instansen, låt oss använda den för att återställa säkerhetskopian där. För detta, i din ClusterControl gå till säkerhetskopieringssektionen (ClusterControl -> Välj Cluster -> Säkerhetskopiering), och där kan du välja "Återställ säkerhetskopia", eller direkt "Återställ" på säkerhetskopian som du vill återställa.

Du har tre alternativ för att återställa säkerhetskopian. Du kan återställa säkerhetskopian i en befintlig databasnod, återställa och verifiera säkerhetskopian på en fristående värd eller skapa ett nytt kluster från säkerhetskopian. När du vill skapa en kall standby-nod, låt oss använda det andra alternativet "Återställ och verifiera på fristående värd".

Du behöver en dedikerad värd (eller VM) som inte ingår i av klustret för att återställa säkerhetskopian, så låt oss använda EC2-instansen som skapats för det här jobbet. ClusterControl kommer att installera programvaran och den kommer att återställa säkerhetskopian i denna värd.

Om alternativet "Stäng av servern efter att säkerhetskopian har återställts" är aktiverat, kommer ClusterControl att stoppa databasnoden efter att ha avslutat återställningsjobbet, och det är precis vad vi behöver för att skapa kall standby.

Du kan övervaka säkerhetskopieringen i avsnittet ClusterControl Activity.

Använda funktionen ClusterControl Verify Backup

En säkerhetskopia är inte en säkerhetskopia om den inte går att återställa. Så du bör se till att säkerhetskopieringen fungerar och återställa den i den kalla standby-noden ofta.

Denna ClusterControl Verify Backup backup-funktion är ett sätt att automatisera underhållet av en kall standby-nod genom att återställa en ny säkerhetskopia för att hålla denna så uppdaterad som möjligt och undvika det manuella återställningsbackupjobbet. Låt oss se hur det fungerar.

Som uppgiften "Återställ och verifiera på fristående värd" kommer det att krävas en dedikerad värd (eller virtuell dator) som inte är en del av klustret för att återställa säkerhetskopian, så låt oss använda samma EC2-instans här.

Den automatiska säkerhetskopieringsfunktionen är tillgänglig för schemalagda säkerhetskopieringar. Så, gå till ClusterControl -> Välj PostgreSQL Cluster -> Backup -> Create Backup och upprepa stegen som du såg tidigare för att schemalägga en ny säkerhetskopiering.

I det andra steget kommer du att ha funktionen "Verifiera säkerhetskopiering" tillgänglig för att aktivera det.

Med hjälp av ovanstående alternativ kommer ClusterControl att installera programvaran och återställa säkerhetskopian på värden. Efter att ha återställt den, om allt gick bra, kommer du att se verifieringsikonen i avsnittet ClusterControl Backup.

Slutsats

Om du har en begränsad budget, men kräver High Availability, kan du använda en kall standby PostgreSQL-nod som kan vara giltig eller inte beroende på företagets RTO och RPO. I den här bloggen visade vi dig hur du schemalägger en säkerhetskopia (enligt din affärspolicy) och hur du återställer den manuellt. Vi visade också hur man återställer säkerhetskopian automatiskt i en Cold Standby Server med ClusterControl, Amazon S3 och Amazon EC2.


  1. Skapa en tillfällig tabell baserad på en annan tabell i SQL Server

  2. Dela upp kolumnen i flera rader i Postgres

  3. skalär underfråga i if-satsen Condition i PL/SQL

  4. Välj slumpmässig rad från en PostgreSQL-tabell med viktade radsannolikheter