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:

Backup een Postgres-tabel:

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

Het bovenstaande commando is een voorbeeld van hoe je een specifieke tabel uit een Postgres-database kunt back-uppen. Met het bovenstaande commando maken we een back-up van tabel ‘orgs’ in schema ‘maincontrol’  van database ‘pe’ naar het bestand ms_table.sql. Om een specifieke tabel te back-uppen, gebruik je 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 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 het bovenstaande commando maken we een back-up van de database voor Message Central ‘pe’ naar het bestand pe_dump.sql. Het back-up bestand bevat create table, alter table en copy commando's voor alle tabellen in de ‘pe’ database.

  2. Backup 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. Het bovenstaande commando zal een dump maken van alle databases die zich op de Postgres-instantie bevinden die op een specifieke server draait. Om een lijst te maken van alle databases die zijn geback-upt, gebruik je het commando grep “^[\]connect” all.sql.

Backup een Postgres-tabel:

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

Het bovenstaande commando is een voorbeeld van hoe je een specifieke tabel uit een Postgres-database kunt back-uppen. Met het bovenstaande commando maken we een back-up van tabel ‘orgs’ in schema ‘maincontrol’  van database ‘pe’ naar het bestand ms_table.sql. Om een specifieke tabel te back-uppen, gebruik je 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 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 het bovenstaande commando maken we een back-up van de database voor Message Central ‘pe’ naar het bestand pe_dump.sql. Het back-up bestand bevat create table, alter table en copy commando's voor alle tabellen in de ‘pe’ database.

  2. Backup 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. Het bovenstaande commando zal een dump maken van alle databases die zich op de Postgres-instantie bevinden die op een specifieke server draait. Om een lijst te maken van alle databases die zijn geback-upt, gebruik je het commando grep “^[\]connect” all.sql.

Backup een Postgres-tabel:

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

Het bovenstaande commando is een voorbeeld van hoe je een specifieke tabel uit een Postgres-database kunt back-uppen. Met het bovenstaande commando maken we een back-up van tabel ‘orgs’ in schema ‘maincontrol’  van database ‘pe’ naar het bestand ms_table.sql. Om een specifieke tabel te back-uppen, gebruik je 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 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 het bovenstaande commando maken we een back-up van de database voor Message Central ‘pe’ naar het bestand pe_dump.sql. Het back-up bestand bevat create table, alter table en copy commando's voor alle tabellen in de ‘pe’ database.

  2. Backup 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. Het bovenstaande commando zal een dump maken van alle databases die zich op de Postgres-instantie bevinden die op een specifieke server draait. Om een lijst te maken van alle databases die zijn geback-upt, gebruik je het commando grep “^[\]connect” all.sql.

Hoe een Postgres Database te herstellen

  1. Herstel een Postgres-tabel:

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

    Het bovenstaande commando zal de tabel die is geback-upt in het ms_table.sql-bestand installeren naar de 'pe' database. Zorg ervoor dat deze tabel niet al bestaat, anders zie je een reeks 'bestaat al' fouten. Dit commando 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

    Vergelijkbaar met het herstellen van de tabel, kunnen we het bovenstaande commando gebruiken om de volledige database te herstellen. Hier herstellen we de 'pe' database met behulp van het bestand pe_dump.sql dat we hadden gemaakt bij het maken van een back-up van de database in de Back-up sectie hierboven.

  3. Herstel alle databases:

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

    Herstel alle databases met behulp van het bovenstaande commando. 'all_dump.sql' was het bestand dat werd gemaakt met pg_dumpall. Het bovenstaande commando zal ons alle Postgres-databases geven in de exacte staat waarin ze zich bevonden toen er een dump werd genomen van de originele databaseserver.

  1. Herstel een Postgres-tabel:

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

    Het bovenstaande commando zal de tabel die is geback-upt in het ms_table.sql-bestand installeren naar de 'pe' database. Zorg ervoor dat deze tabel niet al bestaat, anders zie je een reeks 'bestaat al' fouten. Dit commando 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

    Vergelijkbaar met het herstellen van de tabel, kunnen we het bovenstaande commando gebruiken om de volledige database te herstellen. Hier herstellen we de 'pe' database met behulp van het bestand pe_dump.sql dat we hadden gemaakt bij het maken van een back-up van de database in de Back-up sectie hierboven.

  3. Herstel alle databases:

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

    Herstel alle databases met behulp van het bovenstaande commando. 'all_dump.sql' was het bestand dat werd gemaakt met pg_dumpall. Het bovenstaande commando zal ons alle Postgres-databases geven in de exacte staat waarin ze zich bevonden toen er een dump werd genomen van de originele databaseserver.

  1. Herstel een Postgres-tabel:

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

    Het bovenstaande commando zal de tabel die is geback-upt in het ms_table.sql-bestand installeren naar de 'pe' database. Zorg ervoor dat deze tabel niet al bestaat, anders zie je een reeks 'bestaat al' fouten. Dit commando 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

    Vergelijkbaar met het herstellen van de tabel, kunnen we het bovenstaande commando gebruiken om de volledige database te herstellen. Hier herstellen we de 'pe' database met behulp van het bestand pe_dump.sql dat we hadden gemaakt bij het maken van een back-up van de database in de Back-up sectie hierboven.

  3. Herstel alle databases:

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

    Herstel alle databases met behulp van het bovenstaande commando. 'all_dump.sql' was het bestand dat werd gemaakt met pg_dumpall. Het bovenstaande commando zal ons alle Postgres-databases geven in de exacte staat waarin ze zich bevonden toen er een dump werd genomen 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.