Sikkerhedskopiering er et must i alle disaster recovery-planer. Det er måske ikke altid nok til at garantere et acceptabelt Recovery Point-mål, men det er en god første tilgang. Problemet er, hvad der sker, hvis du i tilfælde af fejl skal bruge denne backup, og den af en eller anden grund ikke er brugbar? Du ønsker sandsynligvis ikke at være i den situation, så i denne blog vil vi se, hvordan du bekræfter, om din backup er god at bruge.
Typer af PostgreSQL-sikkerhedskopier
Lad os begynde at tale om de forskellige typer sikkerhedskopier. Der er forskellige typer, men generelt kan vi adskille det i to simple kategorier:
- Logisk :Sikkerhedskopien er gemt i et menneskeligt læsbart format som SQL.
- Fysisk :Sikkerhedskopien indeholder binære data.
Hvorfor nævner vi dette? Fordi vi vil se, at der er nogle kontroller, vi kan foretage for den ene type og ikke for den anden.
Kontrol af sikkerhedskopieringsloggene
Den første måde at bekræfte, om alt går fint, er ved at tjekke backup-logfilerne.
Den enkleste kommando til at køre en PostgreSQL-sikkerhedskopi kunne f.eks. være:
$ pg_dumpall > /path/to/dump.sql
Men hvordan kan jeg vide, om der var en fejl, da kommandoen kørte? Du kan bare tilføje for at sende output til en bestemt logfil:
$ pg_dumpall > /path/to/dump.sql > /var/log/postgres/pg_dump.log
Så du kan tilføje denne linje i serverens cron for at køre den hver dag:
30 0 * * * pg_dumpall > /path/to/dump.sql > /var/log/postgres/pg_dump.log
Og du bør overvåge logfilen for at se efter fejl, for eksempel ved at tilføje den til et overvågningsværktøj som Nagios.
Tjek af logfiler er ikke nok til at bekræfte, at sikkerhedskopieringen vil fungere, for hvis sikkerhedskopifilen f.eks. er beskadiget af en eller anden grund, vil du sandsynligvis ikke se det i logfilen.
Kontrol af sikkerhedskopieringsindholdet
Hvis du bruger logiske sikkerhedskopier, kan du bekræfte indholdet af backupfilen for at bekræfte, at du har alle databaser der.
Du kan liste dine nuværende PostgreSQL-databaser ved hjælp af f.eks. denne kommando:
$ psql -l | awk '{ print $1 }'| awk 'FNR > 3' |grep '^[a-zA-Z0-9]' |grep -v 'template0'
postgres
template1
world
Og tjek hvilke databaser du har i backupfilen:
$ grep '^[\]connect' /path/to/dump.sql |awk '{print $2}'
template1
postgres
world
Problemet med dette tjek er, at du ikke tjekker størrelsen eller dataene, så det kan være muligt, at du har noget datatab, hvis der var en fejl, da sikkerhedskopieringen blev udført.
Gendannelse for at kontrollere sikkerhedskopien manuelt
Den sikreste måde at bekræfte, om en sikkerhedskopi virker, er at gendanne den og få adgang til databasen.
Når sikkerhedskopieringen er fuldført, kan du gendanne den manuelt i en anden vært ved at kopiere dumpfilen og køre for eksempel:
$ psql -f /path/to/dump.sql postgres
Derefter kan du få adgang til den og tjekke databaserne:
$ 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)
Problemet med denne metode er selvfølgelig, at du skal køre den manuelt eller finde en måde at automatisere dette på, hvilket kan være en tidskrævende opgave.
Automatisk ClusterControl-sikkerhedskopibekræftelse
Lad os nu se, hvordan ClusterControl kan automatisere verificeringen af PostgreSQL-sikkerhedskopier og hjælpe med at undgå overraskelser eller manuelle opgaver.
I ClusterControl skal du vælge din klynge og gå til sektionen "Backup", og derefter vælge "Opret sikkerhedskopi".
Den automatiske bekræftelse af sikkerhedskopiering er tilgængelig for de planlagte sikkerhedskopier. Så lad os vælge muligheden "Schedule Backup".
Når du planlægger en sikkerhedskopiering, skal du ud over at vælge de almindelige muligheder som metode eller lagring også angive tidsplan/hyppighed.
I næste trin kan du komprimere og kryptere din sikkerhedskopi og angive Tilbageholdelsesperiode. Her har du også funktionen "Bekræft sikkerhedskopiering".
For at bruge denne funktion skal du have en dedikeret vært (eller VM), der er ikke en del af klyngen.
ClusterControl vil installere softwaren, og det vil gendanne sikkerhedskopien i denne vært . Efter gendannelse kan du se bekræftelsesikonet i afsnittet ClusterControl Backup.
Konklusion
Som vi nævnte, er sikkerhedskopiering obligatorisk i alle miljøer, men backup er ikke en sikkerhedskopi, hvis du ikke kan bruge den. Så du bør sørge for, at din backup er nyttig, hvis du får brug for den en dag. I denne blog viste vi forskellige måder at tjekke din sikkerhedskopi på for at undgå problemer, når du vil gendanne den.