Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
pgs_restore [2018/02/22 10:33] – [Prenos baze podataka na drugi server] milano | pgs_restore [2024/01/31 12:29] (current) – milano | ||
---|---|---|---|
Line 23: | Line 23: | ||
< | < | ||
- | pg_restore -U balans_admin -C -d postgres b1.backup | + | pg_restore -U balans_admin -C --disable-triggers |
</ | </ | ||
Line 30: | Line 30: | ||
**-U balans_admin** znači da operaciju izvodim, na novom serveru, pod korisničkim nalogom // | **-U balans_admin** znači da operaciju izvodim, na novom serveru, pod korisničkim nalogom // | ||
**-C** znači da se na će se pri raspakivanju napraviti nova baza podataka, sa istim imenom kao što ga je imala izvorna.\\ | **-C** znači da se na će se pri raspakivanju napraviti nova baza podataka, sa istim imenom kao što ga je imala izvorna.\\ | ||
+ | **--disable-triggers** se koristi kada postoje podaci unutar baze koja se restaurira kako bi se izbegle greške u referencijalnim vezama među podacima koji nisu u potpunosti vraćeni. \\ | ||
**-d postgres** je parametar koji pravi najviše zabune, jer izgleda kao da dajemo instrukciju da se baza raspakuje u bazu sa imenom // | **-d postgres** je parametar koji pravi najviše zabune, jer izgleda kao da dajemo instrukciju da se baza raspakuje u bazu sa imenom // | ||
**b1.backup** je ime fajla u kom se nalazi spakovana i kompresovana baza koju raspakujemo. | **b1.backup** je ime fajla u kom se nalazi spakovana i kompresovana baza koju raspakujemo. | ||
+ | === Vraćanje samo tekuće baze === | ||
+ | |||
+ | Kada je baze sadrže mnogo arhiva a potrebno je izvući samo tekuću godinu koristi se sledeći format komande: | ||
+ | |||
+ | < | ||
+ | pg_restore -U balans_admin -C --disable-triggers -O -x -d bxx -n bcus -n bpub -n btek -f b1.backup | ||
+ | </ | ||
+ | |||
+ | Objašnjenje parametara: | ||
+ | |||
+ | '' | ||
+ | '' | ||
+ | '' | ||
===== psql - vraćanje iz " | ===== psql - vraćanje iz " | ||
Line 49: | Line 63: | ||
" | " | ||
- | Psql alatu se može zadati i server, port, baza, korisničko ime i lozinka u ovom formatu, (ispred reči dbname treba da budu 2 crtice, ali ih docuwiki spaja u jednu) npr: \\ psql.exe –dbname=postgresql://korisnik: | + | Psql alatu se može zadati i server, port, baza, korisničko ime i lozinka u ovom formatu |
+ | ===== Aktivna opcija " | ||
+ | |||
+ | Usled razloga opisanih u [[pgs_dump|pg_dump]] proceduri, a ukoliko prilikom bekapovanja baze nisu preduzeti nikakvi koraci, rekonstrukcija baze treba da ide sledećim tokom. \\ | ||
+ | Opisan je najgori scenario: poslovni period u bekapovanij bazi je bio je zaključan na tekući dan u momentu bekapa. \\ | ||
+ | Primer je iz realnog sveta, bekap je napravljen na bazi MgMivela, a rekonstruišu se samo šeme **bcus**, **bpub** i **btek** (tekuća godina). \\ | ||
+ | |||
+ | Rekonstrukcija šema i podataka istovremeno ne može biti sprovedena. Prvo je neophodno rekonstruisati šeme. \\ | ||
+ | |||
+ | < | ||
+ | #> pg_restore -h 192.168.0.5 -p 5432 -U postgres -v -n bcus -n bpub -n btek -O -d b3 -x -s c: | ||
+ | </ | ||
+ | |||
+ | Objašnjavam ređe opcije: | ||
+ | |||
+ | '' | ||
+ | '' | ||
+ | '' | ||
+ | '' | ||
+ | '' | ||
+ | '' | ||
+ | |||
+ | Sada kada imamo definiciju svih objekata može se promeniti funkcija '' | ||
+ | < | ||
+ | CREATE OR REPLACE FUNCTION bpub.maxdatstocklock() RETURNS timestamp AS | ||
+ | $BODY$ | ||
+ | DECLARE result timestamp; | ||
+ | BEGIN | ||
+ | | ||
+ | THEN ' | ||
+ | ELSE MAX(datStockLock) | ||
+ | END | ||
+ | FROM btek.firme | ||
+ | INTO result; | ||
+ | | ||
+ | END; | ||
+ | $BODY$ | ||
+ | LANGUAGE plpgsql | ||
+ | STABLE; | ||
+ | </ | ||
+ | |||
+ | Kako je rečeno, u ovom primeru je pored svega još i zaključan period na tekući dan, te rekonstrukcija zapisa nije moguća pre njegovog otključavanja. Za ovaj korak potrebni su nam samo podaci tabele '' | ||
+ | < | ||
+ | #> pg_restore -h 192.168.0.5 -p 5432 -U postgres -v -n btek -t firme -O -d b3 -x -a c: | ||
+ | </ | ||
+ | |||
+ | Objašnjavam ređe opcije: | ||
+ | |||
+ | '' | ||
+ | '' | ||
+ | |||
+ | Otključavam period: | ||
+ | < | ||
+ | UPDATE btek.firme SET datStockLock=NULL | ||
+ | </ | ||
+ | Ukoliko je potrebno vratiti zaključavanje u prethodno stanje pre postavke u NULL treba očitati tekuću vrednost. | ||
+ | |||
+ | Sada smo spremni da preuzmemo i ostale podatke, ali ovaj put dodajemo i '' | ||
+ | < | ||
+ | #> pg_restore -h 192.168.0.5 -p 5432 -U postgres -v -n bcus -n bpub -n btek -O -d b3 -x -a --disable-triggers c: | ||
+ | </ | ||
+ | |||
+ | Po završetku procesa otvoriti fajl '' | ||
+ | Očekivana je samo jedna greška - tabela '' | ||
+ | |||
+ | Vreme je da se funkcija '' | ||
+ | < | ||
+ | CREATE OR REPLACE FUNCTION bpub.maxdatstocklock() RETURNS timestamp AS | ||
+ | $BODY$ | ||
+ | DECLARE result timestamp; | ||
+ | BEGIN | ||
+ | | ||
+ | THEN ' | ||
+ | ELSE MAX(datStockLock) | ||
+ | END | ||
+ | FROM firme -- <<< | ||
+ | INTO result; | ||
+ | | ||
+ | END; | ||
+ | $BODY$ | ||
+ | LANGUAGE plpgsql | ||
+ | STABLE; | ||
+ | </ | ||
+ | |||
+ | Ukoliko treba sada je trenutak da se vrati i prethodni datum zaključavanja u '' | ||
+ | Proveriti broj zapisa u tabelama '' | ||
+ | Trebalo bi da je sve savršeno ! |