Tech Tips: Hoe maak ik een back-up van en herstel ik de Postgres-database?
Karan Singh
19 jun 2013
1 min read

Belangrijkste punten
PostgreSQL-back-ups kunnen zich richten op een enkele tabel, een enkele database of alle databases, afhankelijk van uw behoeften.
pg_dumpcreëert een SQL-tekstbestand dat de DDL en gegevens bevat die nodig zijn om de doel-tabel of database opnieuw te maken.pg_dumpallmaakt een back-up van elke database op het Postgres-instance.Herstel wordt uitgevoerd met
psql, die de SQL-dump terug in de doel-database uitvoert.Herstel op tabelniveau vereist de zekerheid dat de tabel niet al bestaat om conflicten te vermijden.
Bij het maken van back-ups van individuele tabellen, let op relationele afhankelijkheden.
Dumps kunnen worden genomen van lokaal en worden hersteld naar remote Postgres-instances.
Back-ups omvatten
CREATE,ALTER, enCOPY-opdrachten, afhankelijk van wat wordt geëxporteerd.De juiste back-upstrategie hangt af van het begrijpen van tabelrelaties, het gebruik van schema's en implementatieomgevingen.
Zorg altijd voor gegevensintegriteit door back-ups te maken die verwijzingen naar tabellen bevatten wanneer dat nodig is.
Q&A Hoogtepunten
Wat doet pg_dump eigenlijk?
pg_dumpgenereert een tekstgebaseerd SQL-bestand dat de volledige reeks opdrachten bevat die nodig zijn om een tabel of database precies te recreëren zoals deze bestond op het moment van de back-up.Kan ik slechts één tabel back-uppen in plaats van een volledige database?
Ja. Gebruik
pg_dump --table TABLENAMEom een specifieke tabel te exporteren. Als er tabellen met dezelfde naam in verschillende schema's bestaan, gebruik--schemaom het juiste schema te specificeren.Moet ik me zorgen maken over gerelateerde tabellen bij het back-uppen van een enkele tabel?
Absoluut. PostgreSQL is relationeel, dus andere tabellen kunnen verwijzen naar degene die je aan het back-uppen bent. Als je slechts één tabel zonder gerelateerde herstelt, kun je de referentiële integriteit verbreken.
Hoe maak ik een back-up van een volledige database?
Voer een commando uit zoals:
pg_dump -U <user> <database> -f <output.sql>Dit exporteert alle tabellen, schema-definities, indexen en gegevens voor die database.
Wat doet pg_dumpall?
pg_dumpallmaakt een back-up van elke database op de server in één enkel SQL-bestand. Het is nuttig bij het migreren of het maken van een momentopname van een volledige Postgres-instantie.Kan ik een tabel herstellen in een bestaande database?
Ja. Gebruik
psql -U <gebruiker> -f <bestand.sql> <database>.Maar zorg ervoor dat de tabel niet al bestaat — anders krijgt u foutmeldingen 'bestaat al' tijdens het herstellen.
Wat gebeurt er tijdens een volledige database restore?
Het herstelbestand draait:
CREATE TABLEALTER TABLECOPY(voor tabelgegevens)
waardoor de database wordt teruggebracht naar de exacte staat op het moment van de dump.
Kan ik herstellen naar een andere server dan de server waarvan ik een back-up heb gemaakt?
Ja. Dumps zijn draagbaar. U kunt lokaal een back-up maken en deze herstellen naar een externe Postgres-instantie, mits de versies compatibel zijn.
Heeft pg_dump invloed op de draaiende database?
Nee. Het werkt via SQL-query's en vergrendelt de hele database niet. Het legt veilig een consistente momentopname vast.
Hoe herstel ik alle databases van een pg_dumpall-bestand?
Gebruik:
psql -U <user> -f all_dump.sqlDit recreëert elke database die in de dump wordt gevonden.



