U proizvodnom okruženju, bez obzira koliko veliki ili mali bili PostgreSQL baza podataka može biti, redovito vraćanje je bitan aspekt upravljanja bazom podataka. U ovom ćete članku naučiti kako sigurnosno kopirati i vratiti PostgreSQL bazu podataka.
Pretpostavljamo da već imate radnu instalaciju sustava baze podataka PostgreSQL. Ako ne, pročitajte naše sljedeće članke za instalaciju PostgreSQL na vašoj distribuciji Linuxa.
Započnimo…
PostgreSQL pruža pg_dump uslužni program koji će vam pomoći da napravite sigurnosnu kopiju baza podataka. Ona generira datoteku baze podataka sa SQL naredbama u formatu koji se može lako vratiti u budućnosti.
Za sigurnosno kopiranje, a PostgreSQL baze podataka, počnite prijavljivanjem na poslužitelj baze podataka, a zatim prijeđite na Postgres korisnički račun i pokrenite
pg_dump kako slijedi (zamijenitetecmintdb
s imenom baze podataka koju želite sigurnosno kopirati). Prema zadanim postavkama, izlazni format je datoteka skripte SQL običnog teksta.
$ pg_dump tecmintdb > tecmintdb.sql
The pg_dump podržava i druge izlazne formate. Izlazni format možete odrediti pomoću -F
opciju, gdje c
znači arhivska datoteka prilagođenog formata, d
znači arhiva formata imenika i t
znači arhivska datoteka formata tar: svi su formati prikladni za unos u pg_restore.
Na primjer:
$ pg_dump -F c tecmintdb> tecmintdb.dump. ILI. $ pg_dump -F t tecmintdb> tecmintdb.tar.
Da biste ispisali izlaz u izlaznom formatu direktorija, upotrijebite -f
flag (koji se koristi za navođenje izlazne datoteke) za navođenje ciljnog direktorija umjesto datoteke. Direktorij koji će stvoriti pg_dump ne smije postojati.
$ pg_dump -F d tecmintdb -f tecmintdumpdir
Da sigurnosno kopirate sve PostgreSQL baze podataka, koristite pg_dumpall alat kako je prikazano.
$ pg_dumpall> all_pg_dbs.sql.
Dump možete vratiti pomoću psql kao što je prikazano.
$ pgsql -f all_pg_dbs.sql postgres.
Za vraćanje a PostgreSQL baze podataka, možete koristiti psql ili pg_restore komunalne usluge. psql koristi se za vraćanje tekstualnih datoteka koje je stvorio pg_dump dok pg_restore koristi se za vraćanje baze podataka PostgreSQL iz arhive koju je stvorio pg_dump u jednom od formata koji nisu obični tekst (prilagođeni, tar ili imenik).
Evo primjera kako vratiti dump datoteke običnog teksta:
$ psql tecmintdb < tecmintdb.sql
Kao što je gore spomenuto, ispis prilagođenog formata nije skripta za pgsql, pa se mora vratiti s pg_restore kao što je prikazano.
$ pg_restore -d tecmintdb tecmintdb.dump. ILI. $ pg_restore -d tecmintdb tecmintdb.tar. ILI. $ pg_restore -d tecmintdb tecmintdumpdir
Ako je baza podataka koju sigurnosno kopirate velika i želite generirati prilično manju izlaznu datoteku, tada možete pokrenuti komprimirani ispis gdje morate filtrirati izlaz pg_dump putem alata za kompresiju kao što je gzip ili bilo koji od vaših omiljenih:
$ pg_dump tecmintdb | gzip> tecmintdb.gz
Ako je baza podataka iznimno velika, možete ispuštati paralelno dumpiranjem broj radnih mjesta tablice istovremeno koristeći -j
zastavu, kako je prikazano.
$ pg_dump -F d -j 5 -f tecmintdumpdir.
Važno je napomenuti da opcija paralelnog dumpa skraćuje vrijeme dumpa, ali s druge strane također povećava opterećenje poslužitelja baze podataka.
pg_dump je redovni PostgreSQL klijentski alat, podržava operacije na udaljenim poslužiteljima baze podataka. Za navođenje udaljenog poslužitelja baze podataka pg_dump trebali kontaktirati, upotrijebite opcije naredbenog retka -h
za navođenje udaljenog hosta i -str
navodi udaljeni port na kojem poslužitelj baze podataka sluša. Osim toga, koristite -U
zastavu za navođenje imena uloge baze podataka za povezivanje.
Ne zaboravite zamijeniti 10.10.20.10 i 5432 i tecmintdb s IP adresom vašeg udaljenog hosta ili imenom hosta, portom baze podataka i imenom baze podataka.
$ pg_dump -U tecmint -h 10.10.20.10 -p 5432 tecmintdb> tecmintdb.sql.
Uvjerite se da korisnik koji se daljinski povezuje ima potrebna ovlaštenja za pristup bazi podataka i odgovarajuću bazu podataka metoda autentifikacije konfigurirana je na poslužitelju baze podataka, u protivnom ćete dobiti pogrešku poput one prikazane u nastavku snimka zaslona.
Također je moguće izbaciti bazu podataka izravno s jednog poslužitelja na drugi, koristiti pg_dump i psql komunalne usluge kako je prikazano.
$ pg_dump -U tecmint -h 10.10.20.10 tecmintdb | pqsl -U tecmint -h 10.10.20.30 tecmintdb.
Sigurnosne kopije možete izvoditi u redovitim intervalima pomoću cron poslovi. Cron poslovi su uobičajeno sredstvo za zakazivanje različitih vrsta zadataka za izvođenje na poslužitelju.
Cron posao možete konfigurirati za automatizaciju PostgreSQL sigurnosne kopije baze podataka kako slijedi. Imajte na umu da morate pokrenuti sljedeće naredbe kao superkorisnik PostgreSQL:
$ mkdir -p/srv/sigurnosne kopije/baze podataka.
Zatim pokrenite sljedeću naredbu za uređivanje crontaba kako biste dodali novi cron posao.
$ crontab -e.
Kopirajte i zalijepite sljedeći redak na kraj crontaba. Možete koristiti bilo koji od gore objašnjenih formata.
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. I ovaj cron posao će se izvoditi svaki dan u ponoć, to je minimalno rješenje za sigurnosnu kopiju zadatka.
Za više informacija o tome kako rasporediti cron poslove, pogledajte: Kako stvoriti i upravljati Cron poslovima na Linuxu
To je to za sada! Bilo bi dobro da sigurnosno kopiranje podataka postane dio vaše rutine upravljanja bazom podataka. Da biste nam se obratili za bilo kakva pitanja ili komentare, koristite donji obrazac za povratne informacije. Za više informacija pogledajte pg_dump i pg_restore referentne stranice.