In PostgreSQL zijn Backup &Recovery zeer gebruiksvriendelijk in vergelijking met andere databases. Velen van hen zullen het hier niet mee eens zijn, ok laten we niet in discussie gaan. Wat betreft back-ups, PostgreSQL ondersteunt geen INCREMENTELE BACK-UP, maar er zijn zeer consistente back-uptools en work-arounds op OS-niveau om dit doel te bereiken.
Mijn picturale presentatie over PostgreSQL Backup and Recovery geeft een compleet conceptueel idee. Als u in Diagram kijkt, kunt u zien welke back-ups kunnen worden gebruikt om te herstellen of te herstellen.
Logische back-up
pg_dump, pg_restore en pg_dumpall hulpprogramma's die worden gebruikt voor logische back-ups. pg_dump en pg_restore helpen bij het maken van back-ups op databaseniveau, schemaniveau en tabelniveau. Pg_dumpall gebruikt voor dump op clusterniveau.
Er worden drie formaten ondersteund:pg_dump, gewoon SQL-formaat, aangepast formaat en Tar-formaat. Dumps in aangepaste en Tar-indeling zijn compatibel met het hulpprogramma pg_restore, terwijl dumps in gewone SQL-indeling compatibel zijn met het hulpprogramma psql voor herstel.
Hieronder staan de voorbeelden voor elk back-upniveau en met bijbehorende herstelopdrachten.
Opmerking:stel de standaardwaarden in voor PGDATABASE, PGUSER, PGPASSWORD en PGPORT in .bash_profile (omgevingsvariabelen in Windows)
Dumpen en herstellen in gewone SQL-indeling
$ pg_dump -U username -Fp dbname > filename
or
$ pg_dump -U username dbname -f filename
or
$ pg_dump -Fp -U username dbname -f filename
For restoring use psql command
$ psql -U username -f filename dbname
or
postgres=# i SQL-file-name //in psql terminal with i option
Aangepast formaat
$ pg_dump -Fc dbname -f filename
$ pg_restore -Fc -U username -d dbname filename.dmp
Ter-indeling
$ pg_dump -Ft dbname -f filename
$ pg_restore -U username -d dbname filename
or
$ cat tar-file.tar | psql -U username dbname
Opmerking:Schemaniveau en tabellen Niveaudumps kunnen op dezelfde manier worden uitgevoerd door gerelateerde opties toe te voegen.
Dump op clusterniveau:
$pg_dumpall -p portnumber > filename
For restoring use psql command
$ psql -f filename
Er zijn de beste manieren om stortplaatsen te verwijderen en methodieken te herstellen. Vooral Simon Riggs en Hannu Krosing – “PostgreSQL 9 Administration Cookbook – 2010” boek is een goede manier om te beginnen met PostgreSQL Backup and Recovery, gepubliceerd door www.2ndQuadrant.com.
Fysieke back-up (back-up van bestandssysteem)
Koude back-up:
Bij koude back-up is het een eenvoudige back-up van het bestandssysteem van de /data-directory wanneer Postgres Instance niet beschikbaar is. Om een zelfconsistente back-up van de datadirectory te bereiken, moet de databaseserver worden afgesloten voordat deze wordt gekopieerd. PostgreSQL biedt flexibiliteit om pg_xlog en pg_tblspce in verschillende koppelpunten te houden via softlink. Gebruik de onderstaande opdracht tijdens het kopiëren van de /data-map inclusief de gegevens van de softlink.
tar czf backup.tar.gz $PGDATA
or
cp -r $PGDATA /backup/
or
rsync -a $PGDATA /wherever/data
Hot back-up (online back-up):
In Hot Backup is het cluster actief en moet de database in de archieflogboekmodus staan. Twee systeemfuncties zullen de instantie informeren over het starten en stoppen van het Hot Backup-proces (pg_start_backup(),pg_stop_backup()). Voordat we verder gaan met Online back-up, laten we het hebben over de databasearchieflogboekmodus die verplicht is voor online back-ups.
WAL-archivering inschakelen:
Komende berichten van mij zullen kort zijn over PITR / Tunning WAL enz., momenteel kijken we naar WAL-archivering. In het PostgreSQL-databasesysteem 'schrijft' de eigenlijke database naar een toevoegingsbestand met de naam write-ahead log (WAL) naar schijf. Het bevat een record van schrijfbewerkingen die in het databasesysteem zijn gemaakt. In het geval van Crash kan de database worden gerepareerd/hersteld uit deze records.
Normaal gesproken wordt het write-ahead-logboek met regelmatige tussenpozen (Checkpoints genoemd) vergeleken met de database en vervolgens verwijderd omdat het niet langer nodig is. U kunt de WAL ook als back-up gebruiken, omdat er een record is van alle schrijfbewerkingen naar de database.
Concept van WAL-archivering:
Het vooruitschrijflogboek bestaat uit elk 16 MB groot, die segmenten worden genoemd. De WAL's bevinden zich onder de map pg_xlog en het is de submap van 'datadirectory'. De bestandsnamen worden numeriek genoemd in oplopende volgorde door PostgreSQL-instantie. Om een back-up op basis van WAL te maken, heeft men een basisback-up nodig, dat wil zeggen een volledige back-up van de datadirectory en de WAL-segmenten tussen de basisback-up en de huidige datum.
Het configureren van de archivering van WAL-segmenten kan worden gekozen door de twee configuratieparameters archive_command en archive_mode in te stellen in postgresql.conf. Om het cluster in Archief-log-modus te zetten, is HERSTART nodig.
archive_mode= on/off (boolean parameter)
archive_command = 'cp –i %p / Archive/Location/ f% '
Opmerking: % p om het bestand te kopiëren met pad dat als bestandsnaam wordt gebruikt en % f zonder een directoryvermelding voor het doelbestand.
Raadpleeg voor meer informatie over het Archiver-proces de post PostgreSQL 9.0 Memory &Processess.
Online back-up:
Om online back-up te maken:
Step 1 : Issue pg_start_backup('lable') in the psql terminal
postgres=# select pg_start_backup('fb');
Step 2 : OS level copy the $PGDATA directory to any Backup Location
$ cp -r $PGDATA /anylocation
Step 3 : Issue pg_stop_backup() in psql terminal.
postgres=# select pg_stop_backup();
Opmerking: Het is niet nodig dat deze twee functies in dezelfde databaseverbinding worden uitgevoerd. De back-upmodus is globaal en permanent.
In PostgreSQL is er geen catalogus om de start- en stoptijd van de online back-up op te slaan. Wanneer er echter een online back-up aan de gang is, worden enkele van de bestanden gemaakt en verwijderd.
pg_start_backup(‘label’) en pg_stop_backup zijn de twee systeemfuncties om de online back-up uit te voeren. Met pg_start_backup(‘label’) wordt een bestand backup_label aangemaakt onder $PGDATA directory en met pg_stop_backup() een bestand ‘wal-segement-number.backup’ bestand aangemaakt onder $PGDATA/pg_xlog. Backup_label geeft de starttijd en de locatie van het controlepunt van het WAL-segment, het zal ook de PostgreSQL-instantie laten weten dat het cluster zich in de BACKUP-MODE bevindt. 'wal-segment-number.backup' bestand onder $PGDATA/pg_xlog directory beschrijft de start- en stoptijd, Checkpoint-locatie met WAL-segmentnummer.
Opmerking:na pg_stop_backup() wordt het bestand backup_label verwijderd door de PostgreSQL-instantie.
Plaats uw opmerkingen, suggesties.