Kako izraditi sigurnosnu kopiju i vratiti PostgreSQL bazu podataka


U proizvodnom okruženju, bez obzira koliko velika ili mala bila vaša baza podataka PostgreSQL, redovito vraćanje je bitan aspekt upravljanja bazom podataka. U ovom ćete članku naučiti kako napraviti sigurnosnu kopiju i vratiti PostgreSQL bazu podataka.

Pretpostavljamo da već imate ispravnu instalaciju sustava baza podataka PostgreSQL. Ako nije, pročitajte sljedeće članke kako biste instalirali PostgreSQL na vašu Linux distribuciju.

  • Kako instalirati PostgreSQL i pgAdmin4 u Ubuntu 20.04
  • Kako instalirati PostgreSQL i pgAdmin u CentOS 8
  • Kako instalirati PostgreSQL i pgAdmin u RHEL 8

Započnimo…

Napravite sigurnosnu kopiju jedne PostgreSQL baze podataka

PostgreSQL pruža uslužni program pg_dump koji vam pomaže u izradi sigurnosnih kopija baza podataka. Generira datoteku baze podataka s SQL naredbama u formatu koji se može lako obnoviti u budućnosti.

Da biste napravili sigurnosnu kopiju, PostgreSQL bazu podataka, počnite tako što ćete se prijaviti na poslužitelj baze podataka, a zatim se prebacite na Postgres korisnički račun i pokrenite pg_dump kako slijedi (zamijenite tecmintdb imenom baze podataka koju želite sigurnosno kopirati) . Prema zadanim postavkama, izlazni format je datoteka skripte u obliku SQL teksta.

$ pg_dump tecmintdb > tecmintdb.sql

Pg_dump podržava i druge izlazne formate. Izlazni format možete odrediti pomoću opcije -F , pri čemu c znači arhivsku datoteku prilagođenog formata, d znači arhivu formata direktorija i t znači arhivsku datoteku formata tar: svi su formati pogodni za unos u pg_restore.

Na primjer:

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

Da biste izbacili izlaz u izlazni format direktorija, upotrijebite zastavicu -f (koja se koristi za specificiranje izlazne datoteke) da biste odredili ciljni direktorij umjesto datoteke. Direktorij koji će stvoriti pg_dump ne smije postojati.

$ pg_dump -F d tecmintdb -f tecmintdumpdir	

Da biste napravili sigurnosnu kopiju svih baza podataka PostgreSQL, upotrijebite alat pg_dumpall kao što je prikazano.

$ pg_dumpall > all_pg_dbs.sql

Možete izvesti odlagalište pomoću psqla kao što je prikazano.

$ pgsql -f all_pg_dbs.sql postgres

Vraćanje baze podataka PostgreSQL

Da biste vratili bazu podataka PostgreSQL, možete koristiti uslužne programe psql ili pg_restore. psql se koristi za vraćanje tekstualnih datoteka koje je stvorio pg_dump, dok se pg_restore koristi za vraćanje PostgreSQL baze podataka iz arhive koju je stvorio pg_dump u jednom od ne-običnih tekstualnih formata (custom, tar ili direktorij).

Evo primjera kako vratiti deponiju obične tekstualne datoteke:

$ psql tecmintdb < tecmintdb.sql

Kao što je gore spomenuto, deponija prilagođenog formata nije skripta za pgsql, pa se mora vratiti pomoću pg_restore kao što je prikazano.

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

Izrada sigurnosnih kopija velikih baza podataka PostgreSQL

Ako je baza podataka koju sigurnosno kopirate velika i želite generirati prilično manju izlaznu datoteku, tada možete pokrenuti komprimirani odlagalište gdje morate filtrirati izlaz pg_dump pomoću alata za kompresiju kao što je gzip ili bilo koji od vaših omiljenih:

$ pg_dump tecmintdb | gzip > tecmintdb.gz

Ako je baza podataka izuzetno velika, možete paralelno izvoditi deponije istodobno izbacivanjem tablica number_of_jobs pomoću oznake -j , kao što je prikazano.

$ pg_dump -F d -j 5 -f tecmintdumpdir

Važno je napomenuti da paralelna opcija dump-a smanjuje vrijeme dump-a, ali s druge strane povećava i opterećenje na poslužitelju baze podataka.

Izrada sigurnosnih kopija udaljenih baza podataka PostgreSQL

pg_dump redoviti je klijentski alat PostgreSQL, koji podržava rad na udaljenim poslužiteljima baza podataka. Da biste odredili udaljeni poslužitelj baze podataka pg_dump treba kontaktirati, upotrijebite opcije naredbenog retka -h da odredite udaljeni host, a -p specificira udaljeni port na kojem poslužitelj baze podataka sluša . Osim toga, upotrijebite zastavicu -U da odredite ime uloge baze podataka za povezivanje kao.

Ne zaboravite zamijeniti 10.10.20.10 i 5432 i tecmintdb vašom IP adresom ili imenom hosta, portom baze podataka i imenom baze podataka vašeg udaljenog hosta.

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

Osigurajte da korisnik koji se daljinski povezuje ima potrebne privilegije za pristup bazi podataka, a odgovarajući način provjere autentičnosti baze podataka konfiguriran je na poslužitelju baze podataka, inače ćete dobiti pogrešku poput one prikazane na sljedećem snimku zaslona.

Također je moguće izbaciti bazu podataka izravno s jednog poslužitelja na drugi, upotrijebite uslužne programe pg_dump i psql kao što je prikazano.

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

Automatska izrada sigurnosne kopije PostgreSQL baze podataka korištenjem Cron zadatka

Sigurnosne kopije možete izvoditi u redovitim intervalima pomoću cron poslova. Cron poslovi su često korišteno sredstvo za raspoređivanje različitih vrsta zadataka za izvođenje na poslužitelju.

Možete konfigurirati cron posao za automatizaciju sigurnosne kopije baze podataka PostgreSQL na sljedeći način. Imajte na umu da trebate pokrenuti sljedeće naredbe kao superkorisnik PostgreSQL:

$ mkdir -p /srv/backups/databases

Zatim pokrenite sljedeću naredbu za uređivanje crontaba da biste dodali novi cron posao.

$ crontab -e

Kopirajte i zalijepite sljedeći redak na kraj crontaba. Možete koristiti bilo koji od prethodno opisanih formata odlagališta.

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

Spremite datoteku i izađite.

Usluga cron automatski će pokrenuti ovaj novi posao bez ponovnog pokretanja. A ovaj će se cron posao izvoditi svaki dan u ponoć, minimalno je rješenje zadatka sigurnosne kopije.

Za više informacija o rasporedu cron poslova pogledajte: Kako stvoriti i upravljati Cron poslovima na Linuxu

To je za sada to! Dobro je napraviti sigurnosne kopije podataka dijelom vaše rutine upravljanja bazom podataka. Da biste nas kontaktirali za bilo kakva pitanja ili komentare, upotrijebite obrazac za povratne informacije u nastavku. Za više informacija pogledajte referentne stranice pg_restore.