Wéi Backup a restauréiert eng PostgreSQL Datebank


An engem Produktiounsëmfeld, egal wéi grouss oder kleng Är PostgreSQL-Datebank kann sinn, regelméisseg Réck ass e wesentlechen Aspekt vum Datebankmanagement. An dësem Artikel léiert Dir wéi Dir eng PostgreSQL Datebank Backup a restauréiert.

Mir huelen un datt Dir schonn eng funktionéierend Installatioun vum PostgreSQL Datebanksystem hutt. Wann net, liest eis folgend Artikelen fir PostgreSQL op Ärer Linux Verdeelung z'installéieren.

  • Wéi installéiere ech PostgreSQL a pgAdmin4 an Ubuntu 20.04
  • Wéi installéiere ech PostgreSQL a pgAdmin am CentOS 8
  • Wéi installéiere ech PostgreSQL a pgAdmin am RHEL 8

Loosst eis ufänken ...

Backup vun enger eenzeger PostgreSQL Datebank

PostgreSQL bitt de pg_dump Utility fir Iech ze hëllefen Datenbanken ze backen. Et generéiert eng Datebankdatei mat SQL Kommandoen an engem Format dat einfach an Zukunft restauréiert ka ginn.

Fir e Backup ze maachen, eng PostgreSQL Datebank, fänkt un mat Ärem Datebankserver unzemellen, wiesselt dann op de Postgres Benotzerkont, a laaft pg_dump wéi follegt (ersetzt tecmintdb mam Numm vun der Datebank déi Dir wëllt backupen) . Par défaut ass d'Ausgabformat eng Einfach-Text SQL Skriptdatei.

$ pg_dump tecmintdb > tecmintdb.sql

De pg_dump ënnerstëtzt och aner Ausgangsformater. Dir kënnt d'Ausgabformat spezifizéieren mat der -F Optioun, wou c Benotzerdefinéiert Format Archivdatei bedeit, d heescht Verzeechnesformat Archiv, an t heescht Tar-Format-Archivdatei: all Formater si gëeegent fir Input an pg_restore.

Zum Beispill:

$ pg_dump -F c tecmintdb > tecmintdb.dump
OR
$ pg_dump -F t tecmintdb > tecmintdb.tar

Fir d'Ausgab am Verzeechnes-Ausgangsformat ze dumpen, benotzt de -f Fändel (dee benotzt gëtt fir d'Ausgabdatei ze spezifizéieren) fir den Zilverzeichnis anstatt eng Datei ze spezifizéieren. Den Verzeichnis dee vum pg_dump erstallt gëtt däerf net existéieren.

$ pg_dump -F d tecmintdb -f tecmintdumpdir	

Fir all PostgreSQL Datenbanken ze backen, benotzt de pg_dumpall Tool wéi gewisen.

$ pg_dumpall > all_pg_dbs.sql

Dir kënnt den Dump mat psql restauréieren wéi gewisen.

$ pgsql -f all_pg_dbs.sql postgres

Restauratioun vun enger PostgreSQL Datebank

Fir eng PostgreSQL Datebank ze restauréieren, kënnt Dir d'psql oder pg_restore Utilities benotzen. psql gëtt benotzt fir Textdateien ze restauréieren erstallt vu pg_dump wärend pg_restore benotzt gëtt fir eng PostgreSQL Datebank ze restauréieren aus engem Archiv erstallt vum pg_dump an engem vun den net-plain-text Formater (custom, tar oder directory).

Hei ass e Beispill wéi Dir e Plain Textdatei Dump restauréiert:

$ psql tecmintdb < tecmintdb.sql

Wéi uewen ernimmt, ass e Custom-Format Dump kee Skript fir pgsql, also muss et mat pg_restore restauréiert ginn wéi gewisen.

$ pg_restore -d tecmintdb tecmintdb.dump
OR
$ pg_restore -d tecmintdb tecmintdb.tar
OR
$ pg_restore -d tecmintdb tecmintdumpdir	

Backupsatellit Grouss PostgreSQL Datenbanken

Wann d'Datebank, déi Dir maacht, grouss ass an Dir wëllt eng zimlech méi kleng Ausgabdatei generéieren, da kënnt Dir e kompriméierten Dump ausféieren, wou Dir d'Output vu pg_dump iwwer e Kompressiounsinstrument wéi gzip oder iergendeng vun Äre Liiblings filtere musst:

$ pg_dump tecmintdb | gzip > tecmintdb.gz

Wann d'Datebank extrem grouss ass, kënnt Dir parallel dumpen andeems Dir Number_of_jobs Dëscher gläichzäiteg mam -j Fändel benotzt, wéi gewisen.

$ pg_dump -F d -j 5 -f tecmintdumpdir

Et ass wichteg ze notéieren datt d'Parallel Dump Optioun d'Zäit vum Dump reduzéiert, awer op der anerer Säit erhéicht et och d'Laascht op den Datebankserver.

Backup Remote PostgreSQL Datenbanken

pg_dump ass e reguläre PostgreSQL Client-Tool, et ënnerstëtzt Operatiounen op Remote-Datebankserver. Fir de Remote-Datebankserver ze spezifizéieren pg_dump soll kontaktéieren, benotzt d'Kommando-Linnoptiounen -h fir den Fernhost ze spezifizéieren an -p spezifizéiert de Fernport op deem den Datebankserver lauschtert . Zousätzlech benotzt de -U Fändel fir den Numm vun der Datebank Roll ze spezifizéieren fir ze verbannen als.

Denkt drun 10.10.20.10 an 5432 an tecmintdb mat Ärer Remote Host IP Adress oder Hostnumm, Datebanksport an Datebanknumm respektiv ze ersetzen.

$ pg_dump -U tecmint -h 10.10.20.10 -p 5432 tecmintdb > tecmintdb.sql

Vergewëssert Iech datt de Benotzer, deen op afstand verbënnt, déi erfuerderlech Privilegien huet fir Zougang zu der Datebank ze kréien, an datt déi entspriechend Datebankauthentifikatiounsmethod um Datebankserver konfiguréiert ass, soss kritt Dir e Feeler wéi deen am folgenden Screenshot gewisen.

Et ass och méiglech eng Datebank direkt vun engem Server op en aneren ze dumpen, benotzt d'pg_dump a psql Utilities wéi gewisen.

$ pg_dump -U tecmint -h 10.10.20.10 tecmintdb | pqsl -U tecmint -h 10.10.20.30 tecmintdb

Auto Backup PostgreSQL Datebank Mat engem Cron Job

Dir kënnt Backups a reegelméissegen Intervalle mat Cron Jobs maachen. Cron Jobs sinn eng allgemeng benotzt Mëttel fir verschidden Aarte vun Aufgaben ze plangen fir op engem Server ze lafen.

Dir kënnt e Cron Job konfiguréieren fir PostgreSQL Datebank Backup ze automatiséieren wéi follegt. Notéiert datt Dir déi folgend Kommandoen als PostgreSQL Superuser ausféiere musst:

$ mkdir -p /srv/backups/databases

Als nächst fuert de folgende Kommando aus fir de Crontab z'änneren fir eng nei Cron Job ze addéieren.

$ crontab -e

Kopéiert a paste déi folgend Zeil um Enn vun der Crontab. Dir kënnt iergendeng vun den Dumpformater benotzen, déi hei uewen erkläert ginn.

0 0 * * *  pg_dump  -U postgres tecmintdb > /srv/backups/postgres/tecmintdb.sql

Späichert d'Datei a gitt eraus.

De Cron Service fänkt automatesch un dës nei Aarbecht ouni Neistart ze lafen. An dës Cron Job wäert all Dag um Mëtternuecht lafen, et ass eng Minimum Léisung fir d'Backuptask.

Fir méi Informatiounen iwwer Cron Jobs ze plangen, kuckt: Wéi erstellen a verwalten Cron Jobs op Linux

Dat ass et fir elo! Et ass eng gutt Iddi fir de Backup vun Daten en Deel vun Ärer Datebankmanagement Routine ze maachen. Fir eis fir all Froen oder Kommentaren z'erreechen, benotzt de Feedbackformular hei ënnen. Fir méi Informatioun, kuckt d'pg_restore Referenz Säiten.