pgs_dump

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revisionBoth sides next revision
pgs_dump [2019/11/15 14:39] – [Izvoz u tekstualnu datoteku (plain text)] nessapgs_dump [2022/08/31 15:56] – [Izvoz u kompresovanu datoteku] milano
Line 1: Line 1:
-====== 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 ======
  
Line 28: Line 15:
 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
Line 46: Line 33:
 </code> </code>
  
 +Preporuka za izradu kopije za potrebe prenosa na drugi server (npr. kada stavljamo bazu na kanal) jeste da se prilikom //dump-a// izostave podaci o vlasniku, odnosno privilegijama pristupa objektima.
 +Tako izbegavamo neophodnost postojanja identičnog korisničkog naloga na serveru na kom će se baza raspakivati.
  
 +''-x'' isključiće prenos privilegija
 +''-O'' isključiće prenos vlasnika
 +''-n'' omogućava navođenje šema koje treba ubaciti u bekap, i ponavlja se onoliko puta koliko šema treba preneti.
 +
 +Primer tipične komande za izradu bekapa namnjenog prenosu "na kanal" bi bio:
 +
 +<code>
 +pg_dump -U postgres -Fc -d b1 -n bcus -n bpub -n btek -O -x -f b1.backup
 +</code>
 ===== Izvoz u tekstualnu datoteku (plain text) ===== ===== Izvoz u tekstualnu datoteku (plain text) =====
  
Line 56: Line 54:
   - 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>
  
-<code> +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.
-* 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 struktura baze se može izvesti komandom ''-s (–schema-only)'' npr.  
-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) +<code>pg_dump -U postgres -s -d b1 -f b1_SCHEMA.sql</code> 
-</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.
  • pgs_dump.txt
  • Last modified: 2022/08/31 15:57
  • by milano