sql >> Database >  >> RDS >> PostgreSQL

Hoe weet ik of mijn PostgreSQL-back-up goed is?

Back-ups zijn een must in elk Disaster Recovery Plan. Het is misschien niet altijd voldoende om een ​​acceptabele Recovery Point Objective te garanderen, maar het is een goede eerste benadering. Het probleem is wat er gebeurt als, in geval van een storing, u deze back-up moet gebruiken en deze om de een of andere reden niet bruikbaar is? Waarschijnlijk wil je niet in die situatie verkeren, dus in deze blog zullen we zien hoe we kunnen bevestigen of je back-up goed te gebruiken is.

Soorten PostgreSQL-back-ups

Laten we het hebben over de verschillende soorten back-ups. Er zijn verschillende soorten, maar over het algemeen kunnen we ze in twee eenvoudige categorieën verdelen:

  • Logisch :De back-up wordt opgeslagen in een voor mensen leesbare indeling zoals SQL.
  • Fysiek :De back-up bevat binaire gegevens.

Waarom vermelden we dit? Omdat we zullen zien dat er enkele controles zijn die we voor het ene type kunnen doen en niet voor het andere.

De back-uplogboeken controleren

De eerste manier om te controleren of alles goed gaat, is door de back-uplogboeken te controleren.

De eenvoudigste opdracht om een ​​PostgreSQL-back-up uit te voeren, kan bijvoorbeeld zijn:

$ pg_dumpall > /path/to/dump.sql

Maar hoe weet ik of er een fout is opgetreden tijdens het uitvoeren van de opdracht? Je kunt gewoon toevoegen om de uitvoer naar een specifiek logbestand te sturen:

$ pg_dumpall > /path/to/dump.sql > /var/log/postgres/pg_dump.log

Dus je kunt deze regel toevoegen aan de server-cron om deze elke dag uit te voeren:

30 0 * * * pg_dumpall > /path/to/dump.sql > /var/log/postgres/pg_dump.log

En je moet het logbestand controleren om op fouten te zoeken, bijvoorbeeld door het toe te voegen aan een monitoringtool zoals Nagios.

Logboeken controleren is niet voldoende om te bevestigen dat de back-up zal werken, want als het back-upbestand bijvoorbeeld om de een of andere reden beschadigd is, ziet u dat waarschijnlijk niet in het logbestand.

De back-upinhoud controleren

Als u logische back-ups gebruikt, kunt u de inhoud van het back-upbestand controleren om te bevestigen dat alle databases aanwezig zijn.

U kunt uw huidige PostgreSQL-databases weergeven met bijvoorbeeld deze opdracht:

$ psql -l | awk '{ print $1 }'| awk 'FNR > 3' |grep '^[a-zA-Z0-9]' |grep -v 'template0'

postgres

template1

world

En controleer welke databases je in het back-upbestand hebt:

$ grep '^[\]connect' /path/to/dump.sql |awk '{print $2}'

template1

postgres

world

Het probleem met deze controle is dat u de grootte of gegevens niet controleert, dus het kan mogelijk zijn dat u gegevens verliest als er een fout is opgetreden bij het uitvoeren van de back-up.

Herstellen om de back-up handmatig te controleren

De veiligste manier om te controleren of een back-up werkt, is deze te herstellen en toegang te krijgen tot de database.

Nadat de back-up is voltooid, kunt u deze handmatig op een andere host herstellen door het dumpbestand te kopiëren en bijvoorbeeld uit te voeren:

$ psql -f /path/to/dump.sql postgres

Dan kun je er toegang toe krijgen en de databases controleren:

$ 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)

Het probleem met deze methode is natuurlijk dat u deze handmatig moet uitvoeren, of een manier moet vinden om dit te automatiseren, wat een tijdrovende taak kan zijn.

Automatische ClusterControl-back-upverificatie

Laten we nu eens kijken hoe ClusterControl de verificatie van PostgreSQL-back-ups kan automatiseren en verrassingen of handmatige taken kan helpen voorkomen.

Selecteer in ClusterControl uw cluster en ga naar het gedeelte "Back-up" en selecteer vervolgens "Back-up maken".

De functie voor het automatisch verifiëren van back-ups is beschikbaar voor de geplande back-ups. Laten we dus de optie "Back-up plannen" kiezen.

Als je een back-up plant, moet je naast het selecteren van de algemene opties zoals methode of opslag ook de planning/frequentie specificeren.

In de volgende stap kunt u uw back-up comprimeren en coderen en de bewaartermijn. Hier heb je ook de functie "Back-up verifiëren".

Als u deze functie wilt gebruiken, hebt u een speciale host (of VM) nodig die maakt geen deel uit van het cluster.

ClusterControl zal de software installeren en de back-up op deze host herstellen . Na het herstellen ziet u het verificatiepictogram in het gedeelte ClusterControl Backup.

Conclusie

Zoals we al zeiden, back-ups zijn verplicht in elke omgeving, maar back-ups zijn geen back-up als je er geen gebruik van kunt maken. Zorg er dus voor dat uw back-up nuttig is voor het geval u deze op een dag nodig heeft. In deze blog hebben we verschillende manieren laten zien om uw back-up te controleren om problemen te voorkomen wanneer u deze wilt herstellen.


  1. Waarom hebben we berichtenmakelaars zoals RabbitMQ nodig boven een database zoals PostgreSQL?

  2. Hoe mysql-rij te verwijderen nadat de tijd is verstreken?

  3. SQL Bulkimport vanuit CSV

  4. Selecteer een groep rijen die overeenkomen met alle items in een lijst