Tech Tips: Hoe maak ik een back-up van en herstel ik de Postgres-database?

Karan Singh

19 jun 2013

E-mail

1 min read

Tech Tips: Hoe maak ik een back-up van en herstel ik de Postgres-database?

Belangrijkste punten

    • PostgreSQL-back-ups kunnen zich richten op een enkele tabel, een enkele database of alle databases, afhankelijk van uw behoeften.

    • pg_dump creëert een SQL-tekstbestand dat de DDL en gegevens bevat die nodig zijn om de doel-tabel of database opnieuw te maken.

    • pg_dumpall maakt 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, en COPY-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_dump genereert 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 TABLENAME om een specifieke tabel te exporteren. Als er tabellen met dezelfde naam in verschillende schema's bestaan, gebruik --schema om 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_dumpall maakt 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 TABLE

    • ALTER TABLE

    • COPY (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.sql

    Dit recreëert elke database die in de dump wordt gevonden.

Ten eerste, een disclaimer. Dit bericht biedt een algemene handleiding over hoe een Postgres Database Tabel te back-uppen. De verstrekte voorbeelden verwijzen niet naar een specifieke tabel of database. Als je een specifieke tabel probeert te back-uppen, moet je ook tabellen back-uppen die naar de originele tabellen verwijzen. Aangezien Postgres een relationele database is, zullen er altijd verwijzingen zijn tussen een aantal tabellen.

Dit is een 'hoe te' document dat alleen voorbeeldopdrachten geeft, hoe het daadwerkelijk wordt uitgevoerd hangt volledig af van de persoon die het doet en specifieke use-cases. Zorg er altijd voor dat de integriteit van de gegevens die je probeert te back-uppen behouden blijft. Het back-uppen van de hele database is altijd een veilige optie, maar bij het back-uppen van specifieke tabellen moet men voorzichtig zijn.

Ten eerste, een disclaimer. Dit bericht biedt een algemene handleiding over hoe een Postgres Database Tabel te back-uppen. De verstrekte voorbeelden verwijzen niet naar een specifieke tabel of database. Als je een specifieke tabel probeert te back-uppen, moet je ook tabellen back-uppen die naar de originele tabellen verwijzen. Aangezien Postgres een relationele database is, zullen er altijd verwijzingen zijn tussen een aantal tabellen.

Dit is een 'hoe te' document dat alleen voorbeeldopdrachten geeft, hoe het daadwerkelijk wordt uitgevoerd hangt volledig af van de persoon die het doet en specifieke use-cases. Zorg er altijd voor dat de integriteit van de gegevens die je probeert te back-uppen behouden blijft. Het back-uppen van de hele database is altijd een veilige optie, maar bij het back-uppen van specifieke tabellen moet men voorzichtig zijn.

Ten eerste, een disclaimer. Dit bericht biedt een algemene handleiding over hoe een Postgres Database Tabel te back-uppen. De verstrekte voorbeelden verwijzen niet naar een specifieke tabel of database. Als je een specifieke tabel probeert te back-uppen, moet je ook tabellen back-uppen die naar de originele tabellen verwijzen. Aangezien Postgres een relationele database is, zullen er altijd verwijzingen zijn tussen een aantal tabellen.

Dit is een 'hoe te' document dat alleen voorbeeldopdrachten geeft, hoe het daadwerkelijk wordt uitgevoerd hangt volledig af van de persoon die het doet en specifieke use-cases. Zorg er altijd voor dat de integriteit van de gegevens die je probeert te back-uppen behouden blijft. Het back-uppen van de hele database is altijd een veilige optie, maar bij het back-uppen van specifieke tabellen moet men voorzichtig zijn.

SQL-dump/pg_dump:

Het idee achter de SQL-dump methode is om een tekstbestand te genereren met SQL-commando's die, wanneer teruggegeven aan de server, de database in dezelfde staat zullen recreëren als op het moment van de dump. PostgreSQL biedt het hulpprogramma pg_dump voor dit doel.

pg_dump is een effectief en uitgebreid hulpmiddel om Postgres database back-ups te maken en de back-ups te gebruiken om de postgres database te herstellen. Het is echter niet beperkt tot alleen de database. We kunnen pg_dump gebruiken om tabellen te back-uppen en die vervolgens te gebruiken om individuele tabellen te herstellen. Met pg_dump kunt u de lokale database back-uppen en deze herstellen op een externe database.

Het idee achter de SQL-dump methode is om een tekstbestand te genereren met SQL-commando's die, wanneer teruggegeven aan de server, de database in dezelfde staat zullen recreëren als op het moment van de dump. PostgreSQL biedt het hulpprogramma pg_dump voor dit doel.

pg_dump is een effectief en uitgebreid hulpmiddel om Postgres database back-ups te maken en de back-ups te gebruiken om de postgres database te herstellen. Het is echter niet beperkt tot alleen de database. We kunnen pg_dump gebruiken om tabellen te back-uppen en die vervolgens te gebruiken om individuele tabellen te herstellen. Met pg_dump kunt u de lokale database back-uppen en deze herstellen op een externe database.

Het idee achter de SQL-dump methode is om een tekstbestand te genereren met SQL-commando's die, wanneer teruggegeven aan de server, de database in dezelfde staat zullen recreëren als op het moment van de dump. PostgreSQL biedt het hulpprogramma pg_dump voor dit doel.

pg_dump is een effectief en uitgebreid hulpmiddel om Postgres database back-ups te maken en de back-ups te gebruiken om de postgres database te herstellen. Het is echter niet beperkt tot alleen de database. We kunnen pg_dump gebruiken om tabellen te back-uppen en die vervolgens te gebruiken om individuele tabellen te herstellen. Met pg_dump kunt u de lokale database back-uppen en deze herstellen op een externe database.

Hoe een Postgres Database te Backup:

Postgres Backup Opties Overzicht

Backup omvang

Gebruikte tool

Uitvoerbestand

Wat het omvat

Wanneer te gebruiken

Enkele tabel

pg_dump

.sql

Tabel DDL + data

Geïsoleerde tabelherstel of migratie

Enkele database

pg_dump

.sql

Alle tabellen, schema, data

Volledige database backup

Alle databases

pg_dumpall

.sql

Elke database op de instantie

Serverbrede backup of migratie


Backup van een Postgres Tabel:

$ /opt/msys/3rdParty/bin/pg_dump–table maincontrol.orgs -U ecuser pe -f ms_table.sql

Bovenstaande opdracht is een voorbeeld van hoe je een specifieke tabel van een Postgres database kunt back-uppen. Met bovenstaande opdracht back-uppen we tabel ‘orgs’ in schema ‘maincontrol’  van database ‘pe’ naar ms_table.sql bestand. Om een specifieke tabel te back-uppen, gebruik de –table TABLENAME optie in het pg_dump commando. Als er dezelfde tabelnamen in verschillende schema's zijn, gebruik dan de –schema SCHEMANAME optie.

  1. Backup van een Specifieke Postgres database :

    $ /opt/msys/3rdParty/bin/pg_dump -U ecuser pe -f pe_dump.sql

    Dit is een voorbeeld van het back-uppen van een specifieke Postgres database. Met bovenstaande opdracht back-uppen we de database voor Message Central ‘pe’ naar bestand pe_dump.sql. Het backup bestand bevat create table, alter table en copy opdrachten voor alle tabellen in de ‘pe’ database.

  2. Backup van alle Postgres Databases :

    $ /opt/msys/3rdParty/bin/pg_dumpall -U ecuser> all_dump.sql

    Je kunt alle databases back-uppen met het pg_dumpall commando. Bovenstaande opdracht maakt een dump van alle databases die zich op de Postgres instantie bevinden die op een specifieke server draait. Om alle databases te vermelden die zijn geback-upt, gebruik de opdracht grep “^[\]connect” all.sql.

Postgres Backup Opties Overzicht

Backup omvang

Gebruikte tool

Uitvoerbestand

Wat het omvat

Wanneer te gebruiken

Enkele tabel

pg_dump

.sql

Tabel DDL + data

Geïsoleerde tabelherstel of migratie

Enkele database

pg_dump

.sql

Alle tabellen, schema, data

Volledige database backup

Alle databases

pg_dumpall

.sql

Elke database op de instantie

Serverbrede backup of migratie


Backup van een Postgres Tabel:

$ /opt/msys/3rdParty/bin/pg_dump–table maincontrol.orgs -U ecuser pe -f ms_table.sql

Bovenstaande opdracht is een voorbeeld van hoe je een specifieke tabel van een Postgres database kunt back-uppen. Met bovenstaande opdracht back-uppen we tabel ‘orgs’ in schema ‘maincontrol’  van database ‘pe’ naar ms_table.sql bestand. Om een specifieke tabel te back-uppen, gebruik de –table TABLENAME optie in het pg_dump commando. Als er dezelfde tabelnamen in verschillende schema's zijn, gebruik dan de –schema SCHEMANAME optie.

  1. Backup van een Specifieke Postgres database :

    $ /opt/msys/3rdParty/bin/pg_dump -U ecuser pe -f pe_dump.sql

    Dit is een voorbeeld van het back-uppen van een specifieke Postgres database. Met bovenstaande opdracht back-uppen we de database voor Message Central ‘pe’ naar bestand pe_dump.sql. Het backup bestand bevat create table, alter table en copy opdrachten voor alle tabellen in de ‘pe’ database.

  2. Backup van alle Postgres Databases :

    $ /opt/msys/3rdParty/bin/pg_dumpall -U ecuser> all_dump.sql

    Je kunt alle databases back-uppen met het pg_dumpall commando. Bovenstaande opdracht maakt een dump van alle databases die zich op de Postgres instantie bevinden die op een specifieke server draait. Om alle databases te vermelden die zijn geback-upt, gebruik de opdracht grep “^[\]connect” all.sql.

Postgres Backup Opties Overzicht

Backup omvang

Gebruikte tool

Uitvoerbestand

Wat het omvat

Wanneer te gebruiken

Enkele tabel

pg_dump

.sql

Tabel DDL + data

Geïsoleerde tabelherstel of migratie

Enkele database

pg_dump

.sql

Alle tabellen, schema, data

Volledige database backup

Alle databases

pg_dumpall

.sql

Elke database op de instantie

Serverbrede backup of migratie


Backup van een Postgres Tabel:

$ /opt/msys/3rdParty/bin/pg_dump–table maincontrol.orgs -U ecuser pe -f ms_table.sql

Bovenstaande opdracht is een voorbeeld van hoe je een specifieke tabel van een Postgres database kunt back-uppen. Met bovenstaande opdracht back-uppen we tabel ‘orgs’ in schema ‘maincontrol’  van database ‘pe’ naar ms_table.sql bestand. Om een specifieke tabel te back-uppen, gebruik de –table TABLENAME optie in het pg_dump commando. Als er dezelfde tabelnamen in verschillende schema's zijn, gebruik dan de –schema SCHEMANAME optie.

  1. Backup van een Specifieke Postgres database :

    $ /opt/msys/3rdParty/bin/pg_dump -U ecuser pe -f pe_dump.sql

    Dit is een voorbeeld van het back-uppen van een specifieke Postgres database. Met bovenstaande opdracht back-uppen we de database voor Message Central ‘pe’ naar bestand pe_dump.sql. Het backup bestand bevat create table, alter table en copy opdrachten voor alle tabellen in de ‘pe’ database.

  2. Backup van alle Postgres Databases :

    $ /opt/msys/3rdParty/bin/pg_dumpall -U ecuser> all_dump.sql

    Je kunt alle databases back-uppen met het pg_dumpall commando. Bovenstaande opdracht maakt een dump van alle databases die zich op de Postgres instantie bevinden die op een specifieke server draait. Om alle databases te vermelden die zijn geback-upt, gebruik de opdracht grep “^[\]connect” all.sql.

Hoe een Postgres Database te herstellen

Overzicht van Postgres Herstelopties

Herstelbereik

Gebruikte tool

Invoerbestand

Belangrijkste vereiste

Veelvoorkomende valkuil

Enkele tabel

psql

Tabel dump .sql

Tabel mag nog niet bestaan

“bestaat al” fouten

Enkele database

psql

Database dump .sql

Doeldatabase moet bestaan

Onbedoelde gegevens overschrijven

Alle databases

psql

Volledige dump .sql

Superuser toegang aanbevolen

Meer herstellen dan bedoeld


  1. Herstel een Postgres-tabel:

    $ /opt/msys/3rdParty/bin/psql -U ecuser -f ms_table.sql pe

    Het bovenstaande commando zal de tabel installeren die werd geback-upt in het ms_table.sql-bestand naar de 'pe'-database. Zorg ervoor dat deze tabel nog niet bestaat, anders krijgt u een reeks 'bestaat al' fouten. Deze opdracht maakt de tabel aan en exporteert alle gegevens naar de nieuw aangemaakte tabel.

  2. Herstel een Postgres-database:

    $ /opt/msys/3rdParty/bin/psql -U ecuser -d pe -f pe_dump.sql

    Net als bij het herstellen van de tabel, kunnen we de bovenstaande opdracht gebruiken om de complete database te herstellen. Hier herstellen we de 'pe'-database met behulp van het bestand pe_dump.sql dat we hadden gemaakt tijdens het back-uppen van de database in de bovenstaande Back-up sectie.

  3. Herstel alle databases:

    $ /opt/msys/3rdParty/bin/psql -u ecuser -f all_dump.sql

    Herstel alle databases met behulp van de bovenstaande opdracht. 'all_dump.sql' was het bestand dat werd gecreëerd met behulp van pg_dumpall. De bovenstaande opdracht zal ons alle Postgres-databases geven in de exacte staat waarin ze verkeerden toen er een dump werd gemaakt van de originele databaseserver.

Overzicht van Postgres Herstelopties

Herstelbereik

Gebruikte tool

Invoerbestand

Belangrijkste vereiste

Veelvoorkomende valkuil

Enkele tabel

psql

Tabel dump .sql

Tabel mag nog niet bestaan

“bestaat al” fouten

Enkele database

psql

Database dump .sql

Doeldatabase moet bestaan

Onbedoelde gegevens overschrijven

Alle databases

psql

Volledige dump .sql

Superuser toegang aanbevolen

Meer herstellen dan bedoeld


  1. Herstel een Postgres-tabel:

    $ /opt/msys/3rdParty/bin/psql -U ecuser -f ms_table.sql pe

    Het bovenstaande commando zal de tabel installeren die werd geback-upt in het ms_table.sql-bestand naar de 'pe'-database. Zorg ervoor dat deze tabel nog niet bestaat, anders krijgt u een reeks 'bestaat al' fouten. Deze opdracht maakt de tabel aan en exporteert alle gegevens naar de nieuw aangemaakte tabel.

  2. Herstel een Postgres-database:

    $ /opt/msys/3rdParty/bin/psql -U ecuser -d pe -f pe_dump.sql

    Net als bij het herstellen van de tabel, kunnen we de bovenstaande opdracht gebruiken om de complete database te herstellen. Hier herstellen we de 'pe'-database met behulp van het bestand pe_dump.sql dat we hadden gemaakt tijdens het back-uppen van de database in de bovenstaande Back-up sectie.

  3. Herstel alle databases:

    $ /opt/msys/3rdParty/bin/psql -u ecuser -f all_dump.sql

    Herstel alle databases met behulp van de bovenstaande opdracht. 'all_dump.sql' was het bestand dat werd gecreëerd met behulp van pg_dumpall. De bovenstaande opdracht zal ons alle Postgres-databases geven in de exacte staat waarin ze verkeerden toen er een dump werd gemaakt van de originele databaseserver.

Overzicht van Postgres Herstelopties

Herstelbereik

Gebruikte tool

Invoerbestand

Belangrijkste vereiste

Veelvoorkomende valkuil

Enkele tabel

psql

Tabel dump .sql

Tabel mag nog niet bestaan

“bestaat al” fouten

Enkele database

psql

Database dump .sql

Doeldatabase moet bestaan

Onbedoelde gegevens overschrijven

Alle databases

psql

Volledige dump .sql

Superuser toegang aanbevolen

Meer herstellen dan bedoeld


  1. Herstel een Postgres-tabel:

    $ /opt/msys/3rdParty/bin/psql -U ecuser -f ms_table.sql pe

    Het bovenstaande commando zal de tabel installeren die werd geback-upt in het ms_table.sql-bestand naar de 'pe'-database. Zorg ervoor dat deze tabel nog niet bestaat, anders krijgt u een reeks 'bestaat al' fouten. Deze opdracht maakt de tabel aan en exporteert alle gegevens naar de nieuw aangemaakte tabel.

  2. Herstel een Postgres-database:

    $ /opt/msys/3rdParty/bin/psql -U ecuser -d pe -f pe_dump.sql

    Net als bij het herstellen van de tabel, kunnen we de bovenstaande opdracht gebruiken om de complete database te herstellen. Hier herstellen we de 'pe'-database met behulp van het bestand pe_dump.sql dat we hadden gemaakt tijdens het back-uppen van de database in de bovenstaande Back-up sectie.

  3. Herstel alle databases:

    $ /opt/msys/3rdParty/bin/psql -u ecuser -f all_dump.sql

    Herstel alle databases met behulp van de bovenstaande opdracht. 'all_dump.sql' was het bestand dat werd gecreëerd met behulp van pg_dumpall. De bovenstaande opdracht zal ons alle Postgres-databases geven in de exacte staat waarin ze verkeerden toen er een dump werd gemaakt van de originele databaseserver.

Andere nieuws

Lees meer uit deze categorie

A person is standing at a desk while typing on a laptop.

Het complete AI-native platform dat met uw bedrijf meegroeit.

A person is standing at a desk while typing on a laptop.

Het complete AI-native platform dat met uw bedrijf meegroeit.