sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvordan ved jeg, om min PostgreSQL-sikkerhedskopi er god?

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.


  1. Postgres - Funktion til at returnere skæringspunktet mellem 2 ARRAY'er?

  2. Rådgivende låse eller NOWAIT for at undgå at vente på låste rækker?

  3. Concat-funktionen virker ikke - ugyldigt antal argumenter

  4. Udlejning af biler er lige så enkelt som at køre:En datamodel for et biludlejningsfirma