Information är en av de mest värdefulla tillgångarna i ett företag, och det säger sig självt att man bör ha en Disaster Recovery Plan (DRP) för att förhindra dataförlust i händelse av en olycka eller hårdvarufel. En backup är den enklaste formen av DR. Det kanske inte alltid räcker för att garantera ett acceptabelt Recovery Point Objective (RPO), men är ett bra första tillvägagångssätt.
Oavsett om det är en 24x7 högbelastad server eller en miljö med låga transaktionsvolymer, måste du göra säkerhetskopior till en sömlös procedur utan att störa serverns prestanda i en produktionsmiljö.
Om vi pratar om TimescaleDB så finns det olika typer av backup för denna nya motor för tidsseriedata. Vilken typ av säkerhetskopiering vi bör använda beror på många faktorer, som miljö, infrastruktur, belastning, etc.
I den här bloggen kommer vi att se dessa olika typer av säkerhetskopior som är tillgängliga och hur ClusterControl kan hjälpa oss att centralisera vår säkerhetskopieringshantering för TimescaleDB.
Säkerhetskopieringstyper
Det finns olika typer av säkerhetskopior för databaser. Låt oss titta på var och en av dem i detalj.
- Logiskt:Säkerhetskopieringen lagras i ett läsbart format som SQL.
- Fysisk:Säkerhetskopieringen innehåller binära data.
- Fullständig/Inkrementell/Differentiell:Definitionen av dessa tre typer av säkerhetskopior är implicit i namnet. Den fullständiga säkerhetskopian är en fullständig kopia av alla dina data. Inkrementell säkerhetskopiering säkerhetskopierar endast de data som har ändrats sedan föregående säkerhetskopiering och den differentiella säkerhetskopieringen innehåller endast de data som har ändrats sedan den senaste fullständiga säkerhetskopieringen utfördes. De inkrementella och differentiella säkerhetskopieringarna introducerades som ett sätt att minska mängden tid och diskutrymmesanvändning som det tar att utföra en fullständig säkerhetskopiering.
- Point In Time Recovery-kompatibel:PITR innebär att databasen återställs när som helst i det förflutna. För att kunna göra detta måste vi återställa en fullständig säkerhetskopia och sedan tillämpa alla ändringar som hände efter säkerhetskopieringen tills precis innan felet.
ClusterControl Backup Management-funktion
Låt oss se hur ClusterControl kan hjälpa oss att hantera olika typer av säkerhetskopior.
Skapa en säkerhetskopia
För den här uppgiften, gå till ClusterControl -> Välj TimescaleDB Cluster -> Backup -> Create Backup .
Vi kan skapa en ny säkerhetskopia eller konfigurera en schemalagd. För vårt exempel kommer vi att skapa en enda säkerhetskopia direkt.
Här har vi en metod för varje typ av säkerhetskopiering som vi nämnde tidigare.
Säkerhetskopieringstyp | Verktyg | Definition |
---|---|---|
Logiskt | pg_dumpall | Det är ett verktyg för att skriva ut alla TimescaleDB-databaser i ett kluster till en skriptfil. Skriptfilen innehåller SQL-kommandon som kan användas för att återställa databaserna. |
Fysisk | pg_basebackup | Den används för att göra en binär kopia av databasklusterfilerna, samtidigt som man ser till att systemet automatiskt sätts i och ur säkerhetskopieringsläge. Säkerhetskopiering tas alltid av hela databasklustret i ett körande TimescaleDB-databaskluster. Dessa tas utan att andra klienter till databasen påverkas. |
Full/Incr/Diff | pgbackrest | Det är en enkel, pålitlig lösning för säkerhetskopiering och återställning som sömlöst kan skalas upp till de största databaserna och arbetsbelastningarna genom att använda algoritmer som är optimerade för databasspecifika krav. En av de viktigaste funktionerna är stödet för fullständiga, inkrementella och differentiella säkerhetskopior. |
PITR | pg_basebackup+WALs | För att skapa en PITR-kompatibel säkerhetskopia kommer ClusterControl att använda pg_basebackup och WAL-filerna för att kunna återställa databasen när som helst i det förflutna. |
Vi måste välja en metod, servern som backupen ska tas från och var vi vill lagra backupen. Vi kan också ladda upp vår säkerhetskopia till molnet (AWS, Google eller Azure) genom att aktivera motsvarande knapp.
Tänk på att om du vill skapa en säkerhetskopia som är kompatibel med PITR måste vi använda pg_basebackup i det här steget och vi måste ta säkerhetskopian från huvudnoden.
Sedan specificerar vi användningen av komprimering, kryptering och bevarandet av vår säkerhetskopia.
I avsnittet för säkerhetskopiering kan vi se hur säkerhetskopieringen fortskrider och information som metod, storlek, plats och mer.
Aktivera Point In Time Recovery
Om vi vill använda PITR-funktionen måste vi ha WAL-arkivering aktiverad. För detta kan vi gå till ClusterControl -> Välj TimescaleDB Cluster -> Nodåtgärder -> Aktivera WAL-arkivering , eller gå bara till ClusterControl -> Välj TimescaleDB Cluster -> Säkerhetskopiering -> Inställningar och aktivera alternativet "Enable Point-In-Time Recovery (WAL Archiving) ” som vi kommer att se i följande bild.
Vi måste komma ihåg att för att aktivera WAL-arkivering måste vi starta om vår databas. ClusterControl kan göra detta åt oss också.
Förutom de alternativ som är gemensamma för alla säkerhetskopior som "Backup Directory " och "Retentionsperiod för säkerhetskopiering ”, här kan vi också ange WAL-lagringsperioden. Som standard är 0, vilket betyder för alltid.
För att bekräfta att vi har aktiverat WAL-arkivering kan vi välja vår huvudnod i ClusterControl -> Välj TimescaleDB Cluster -> Noder , och vi bör se meddelandet WAL Archiving Enabled, som vi kan se i följande bild.
Återställa en säkerhetskopia
När säkerhetskopieringen är klar kan vi återställa den genom att använda ClusterControl. För detta, i vår säkerhetskopieringssektion (ClusterControl -> Välj TimescaleDB Cluster -> Säkerhetskopiering ), kan vi välja "Återställ säkerhetskopia" eller direkt "Återställ" på säkerhetskopian som vi vill återställa.
Vi har tre alternativ för att återställa säkerhetskopian. Vi 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.
Om vi försöker återställa en PITR-kompatibel säkerhetskopia måste vi också ange tiden.
Datan kommer att återställas som den var vid den angivna tidpunkten. Tänk på att UTC-tidszonen används och att vår TimescaleDB-tjänst i mastern kommer att startas om.
Vi kan övervaka utvecklingen av vår återställning från aktivitetssektionen i vår ClusterControl.
Automatisk säkerhetskopiering
En säkerhetskopia är inte en säkerhetskopia om den inte går att återställa. Att verifiera säkerhetskopior är något som vanligtvis försummas av många. Låt oss se hur ClusterControl kan automatisera verifieringen av TimescaleDB-säkerhetskopior och hjälpa till att undvika överraskningar.
I ClusterControl, välj ditt kluster och gå till "Säkerhetskopiering " och välj sedan "Skapa säkerhetskopia ”.
Funktionen för automatisk verifiering av säkerhetskopiering är tillgänglig för de schemalagda säkerhetskopieringarna. Så låt oss välja "Schemalägg säkerhetskopiering alternativet.
När vi schemalägger en säkerhetskopiering måste vi, förutom att välja de vanliga alternativen som metod eller lagring, även ange schema/frekvens.
I nästa steg kan vi komprimera och kryptera vår säkerhetskopia och ange lagringsperioden. Här har vi också "Verifiera säkerhetskopia ”-funktion.
För att använda den här funktionen behöver vi en dedikerad värd (eller virtuell dator) som inte är en del av klustret.
ClusterControl kommer att installera programvaran och den kommer att återställa säkerhetskopian i denna värd. Efter återställning kan vi se verifieringsikonen i avsnittet ClusterControl Backup.
Slutsats
Nuförtiden är säkerhetskopiering obligatoriskt i alla miljöer. De hjälper dig att skydda din data. Inkrementella säkerhetskopieringar kan hjälpa till att minska mängden tid och lagringsutrymme som används för säkerhetskopieringsprocessen. Transaktionsloggar är viktiga för Point-in-Time-Recovery. ClusterControl kan hjälpa till att automatisera säkerhetskopieringsprocessen för dina TimescaleDB-databaser och, i händelse av fel, återställa den med några få klick. Du kan också minimera RPO genom att använda den PITR-kompatibla säkerhetskopian och förbättra din katastrofåterställningsplan.