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
pgs_dump [2019/11/15 14:39] – [Izvoz u tekstualnu datoteku (plain text)] nessapgs_dump [2022/08/31 15:57] (current) – [Izvoz u tekstualnu datoteku (plain text)] 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 -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 -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.1573828774.txt.gz
  • Last modified: 2019/11/15 14:39
  • by nessa