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.