Both sides previous revision Previous revision Next revision | Previous revision Next revisionBoth sides next revision |
pgs_dump [2019/11/15 14:38] – [Izvoz u tekstualnu datoteku (plain text)] nessa | pgs_dump [2022/08/31 15:49] – [Izvoz u tekstualnu datoteku (plain text)] milano |
---|
====== PG Dump ====== | |
| |
===== pg_dump ===== | |
| |
Za kopiranje PostgreSQL baze podataka najsvrsishodnije je koristiti postojeci pg_dump koji je lociran u folderu kome je instaliran Postgres, i to u folderu Bin. Restauracija podataka na drugoj lokaciji vrši se programom [[:pgs_restore|pg_restore]]. | |
| |
Primer lokacije na Windows platformi | |
| |
<file> | |
c:\Program Files\PostgreSQL\9.6\bin\pg_dump.exe | |
</file> | |
| |
| |
====== PG Dump ====== | ====== PG Dump ====== |
| |
Preporučeni način izvoza baze podataka sa najviše opcija pri uvozu na drugi server jeste upotreba //custom// formata zapisa (-Fc). | Preporučeni način izvoza baze podataka sa najviše opcija pri uvozu na drugi server jeste upotreba //custom// formata zapisa (-Fc). |
| |
Pri prenosu celih baza podataka, veoma je važno da izlazni fajl bude kompresovan jer se može desiti da zbog veličine bude nepodesan za prenos/manipulaciju. Kompresijom upravlja ** pg _dump**, a niže je primer prenosa baze pod nazivom **b1**, sa **extenzijama**, šemama i svim ostalim Pg objektima. Operaciju izvodim pod sistemskim //postgres// nalogom, iako to može biti bilo koji drugi korisnik sa odgovarajućim pravima : | Pri prenosu celih baza podataka, veoma je važno da izlazni fajl bude kompresovan jer se može desiti da zbog veličine bude nepodesan za prenos/manipulaciju. Kompresijom upravlja **pg _dump**, a niže je primer prenosa baze pod nazivom **b1**, sa **extenzijama**, šemama i svim ostalim Pg objektima. Operaciju izvodim pod sistemskim //postgres// nalogom, iako to može biti bilo koji drugi korisnik sa odgovarajućim pravima : |
<code> | <code> |
pg_dump -U postgres -Fc -d b1 -f b1.backup | pg_dump -U postgres -Fc -d b1 -f b1.backup |
- navigacija u folder gde se nalazi pg_dump.exe npr: cd Program Files\PostgreSQL\9.6\bin | - navigacija u folder gde se nalazi pg_dump.exe npr: cd Program Files\PostgreSQL\9.6\bin |
- pokretanje komande za dump sa opcijama dupm-a: | - pokretanje komande za dump sa opcijama dupm-a: |
- **pg_dump -U <postgres> -d <b1> -n <public> -f <mydbPA.sql>** | - ''pg_dump -U <postgres> -d <b1> -n <public> -f <mydbPA.sql>'' |
- znacenje opcija: -U <user>, -d <ime baze>, -n <ime scheme> -f <format i ime fajla za izvoz> | - znacenje opcija: -U <user>, -d <ime baze>, -n <ime scheme> -f <format i ime fajla za izvoz> |
| |
* ime baze se može navesti i kao <postgresql:////nessa:deus@MOC:5432/b100>, sto je posebno značajno kada se radi sa mašine koja nije PG server. \\ \\ //Samo struktura baze se može izvesti komandom -s (–schema-only) npr. **pg_dump -U postgres -s -d b1 -f b1_SCHEMA.sql** \\ Samo podaci baze se mogu izvesti komandom -a (–data-only) npr. **pg_dump -S postgres -a ****–disable-triggers ****-d b1 -f b1_DATA.sql** (opcija –disable-triggers zahteva da se prosledi superuser ime, u ovom slučaju je to postgres) // | Ime baze se može navesti i kao ''<nowiki>postgresql://nessa:deus@MOC:5432/b100</nowiki>'', što je posebno značajno kada se radi sa mašine koja nije PG server. |
| |
| Samo struktura baze se može izvesti komandom ''-s (–schema-only)'' npr. |
| <code>pg_dump -U postgres -s -d b1 -f b1_SCHEMA.sql</code> |
| Samo podaci baze se mogu izvesti komandom ''-a (–data-only)'' npr. <code>pg_dump -S postgres -a –disable-triggers -d b1 -f b1_DATA.sql</code> |
| Opcija ''–disable-triggers'' zahteva da se prosledi superuser ime, u ovom slučaju je to postgres. |
| |
| |
| ===== Aktivna opcija "zaključavanja perioda" ===== |
| |
| Kada je aktivirana opcija //Uključiti mogućnost apsolutnog zaključavanja poslovnog perioda// potrebno je preduzeti **dodatne korake** kako bi se bekapovana baza mogla rekonstruisati. |
| |
| Zaključavanje se izvodi dodavanjem ''CONSTRAINT'' na tabele ''racuni'',''otpremnice'',''ulaz'' i ''nalozi''. Ograničenje se oslanja na funkciju ''bpub.maxdatstocklock()'' koja se kreira dinamički prilikom aktiviranja opcije kroz parametre programa (znači, nema je u ''b0'' ili //Dbupdate//). |
| |
| Funkcija se oslanja na tabelu ''firme'' (polje ''datStockLock''), koja se nalazi u tekućoj bazi i arhivama. Da bi zaključavanje tekućeg perioda i arhiva bilo razdvojeno u funkciji nije eksplicitno određena šema tabele ''firme'' već se koristi ''search_path'' za to. |
| |
| Pošto ''pg_restore'' resetuje ''search_path'' povrat podataka u ''CONSTRAINT-om'' zaštićene tabele neće biti moguć zbog greške ''relation 'firme' not found''. |
| Da bi se ovo prevazišlo potrebno je: |
| |
| - Pre bekapovanja promeniti funkciju ''bpub.maxdatstocklock()'' tako da se doda eksplictno šema tabele - ''btek.firme'' |
| - U tabeli ''btek.firme'' postaviti vrednost polja ''datStockLock'' u ''NULL'' |
| - Nakon bekapovanja vratiti funkciju na staro kao i vrednost polja ''datStockLock'' |
| - Nakon ''pg_restore'' komande (otvaranja bekapa) opet korigovati funkciju (ukloniti ekslplicitno navedenu šemu). |
| |
| Ukoliko se sve ovo ne uradi i dalje će biti moguća rekonstrukcija baze iz bekapa ali dodatnim koracima u **[[pgs_restore|pg_restore]]** procesu. |