PostgreSQL
From RCUB
(→Upgrade sa 8.1 na 8.3 / 8.4) |
(→Upgrade major verzije) |
||
Line 41: | Line 41: | ||
\du - listanje svih korisnika | \du - listanje svih korisnika | ||
− | Kreiranje baze: | + | Kreiranje baze u Postgresu. Prilikom kreiranja treba obratiti pažnju na lokalizaciju. Ukoliko je potrebno da se latinična sortiranja rade po srpskoj latinici, potrebno je navesti odgovarajuće parametre, npr: |
+ | |||
+ | CREATE DATABASE test_baza ENCODING = 'UTF8' LC_COLLATE = 'sr_RS' LC_CTYPE = 'sr_RS' TEMPLATE template0; | ||
+ | |||
+ | Ukoliko je potrebno da se latinična sortiranja rade po engleskim pravilima: | ||
+ | |||
+ | CREATE DATABASE test_baza WITH ENCODING='UTF8'; | ||
+ | |||
+ | Srpska ćirilična sortiranja bi trebalo da rade u oba slučaja ispravno. | ||
− | |||
Kreiranje korisnika: | Kreiranje korisnika: | ||
Line 51: | Line 58: | ||
Izbor baze: | Izbor baze: | ||
− | \c | + | \c test_baza |
Dodeljivanje privilegija nad default "public" šemom. | Dodeljivanje privilegija nad default "public" šemom. | ||
Line 107: | Line 114: | ||
sudo -u postgres pg_ctl reload -D /var/lib/pgsql/data/ | sudo -u postgres pg_ctl reload -D /var/lib/pgsql/data/ | ||
− | ==Koriscenje | + | Za postgres 9.0: |
+ | |||
+ | sudo -u postgres /usr/pgsql-9.0/bin/pg_ctl reload -D /var/lib/pgsql/9.0/data/ | ||
+ | |||
+ | ===Optimizovanje servera=== | ||
+ | Za izvlačenje maksimuma mogućnosti iz PostgreSQL-a poželjno je pročitati detljno ceo [http://wiki.postgresql.org/wiki/Performance_Optimization Optimization Guide]. Poglavlje [http://wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server Tuning] se najviše tiče optimizovanja svakodnevnog rada servera i objašnjava sve tajne postgres.conf. Jedan od interesatnih članaka je [http://www.linux.com/learn/tutorials/394523-configuring-postgresql-for-pretty-good-performance ovde] a postoji i cela [http://www.packtpub.com/postgresql-90-high-performance/book knjiga]. | ||
+ | |||
+ | Moguće je dati neke osnovne preporuke za optimizovanje PostgreSQL servera. Poželjno je dodeliti serveru više memorije nego što je konfigurisano u podrazumevanim postavkama. U sledećim postavkama u tabeli, koje treba uzeti s zrncem soli, se nalazi jedan predlog postavki koji bi trebalo da omogući performantniji rad PostgreSQL servera za konfiguraciju koja bi PostgreSQL serveru ostavila 1GB radne memorije, 16GB radne memorije i poređenje sa podrazumenvanim postavkama u PostgreSQL-u 8.3: | ||
+ | |||
+ | {| class="wikitable" style="text-align:center; width:750px; height:200px;" | ||
+ | |+ postgres.conf | ||
+ | |- | ||
+ | ! | ||
+ | ! 8.3 def | ||
+ | ! 1GB | ||
+ | ! 16GB | ||
+ | ! komentar | ||
+ | |- | ||
+ | ! <code>max_connections</code> | ||
+ | | 100 || 30 || 30 || align="right" width="50%"| proceniti koliko je konekcija zaista potrebno i dodati neku rezervu | ||
+ | |- | ||
+ | ! <code>shared_buffers</code> | ||
+ | | 32MB || 256MB || 4096MB || align="right"| treba RAM/4 | ||
+ | |- | ||
+ | ! <code>effective_cache_size</code> | ||
+ | | 1000 || 128MB || 10240MB || align="right"| treba RAM/2, mada može i do RAM*3/4 | ||
+ | |- | ||
+ | ! <code>chekpoint_segments</code> | ||
+ | | 3 || 15 || 15 || align="right"| minimum 10 ako je ''write intensive'' aplikacija može i 32 | ||
+ | |- | ||
+ | ! <code>checkpoint_completion_target</code> | ||
+ | | 0.5 || 0.9 || 0.9 || align="right"| uvek se povećava na 0.9 kada se povećeva <code>chekpoint_segments</code> | ||
+ | |- | ||
+ | ! <code>default_statistics_target</code> | ||
+ | | 10 || 100 || 100 || align="right"| uvek na 100 | ||
+ | |- | ||
+ | ! <code>work_mem</code> | ||
+ | | 1MB || 4MB || 40MB || align="right"| obratiti pažnju da <code>max_connections</code>*<code>work_mem</code> bude manji od npr. RAM/8 | ||
+ | |} | ||
+ | Slične rezultate moguće je dobiti i ovim odličnim online kalkulatorom za podešavanja PostgreSQL-a [http://pgtune.leopard.in.ua/ online kalkulatorom za podešavanja PostgreSQL-a]. | ||
+ | |||
+ | ==Koriscenje proceduralnih jezika== | ||
PostgreSQL podrzava vise proceduralnih jezika: PL/pgSQL, PL/Tcl, PL/Perl, PL/Python. | PostgreSQL podrzava vise proceduralnih jezika: PL/pgSQL, PL/Tcl, PL/Perl, PL/Python. | ||
Line 113: | Line 161: | ||
CREATE LANGUAGE plpgsql; | CREATE LANGUAGE plpgsql; | ||
− | |||
==Backup i restore== | ==Backup i restore== | ||
Line 139: | Line 186: | ||
Kod Postgresa su prve dve cifre oznaka major verzije, što znači da je | Kod Postgresa su prve dve cifre oznaka major verzije, što znači da je | ||
− | npr. | + | npr. 9.2 major upgrade u odnosu na 9.1 i slično. |
Major upgrade podrazumeva da je došlo do promene na strukturi podataka | Major upgrade podrazumeva da je došlo do promene na strukturi podataka | ||
u fajl sistemu i da je potreban export/import prilikom upgrade-a. | u fajl sistemu i da je potreban export/import prilikom upgrade-a. | ||
− | Za razliku od toga kod minor upgrade-a (npr. | + | Za razliku od toga kod minor upgrade-a (npr. 9.1.2 u 9.1.4) struktura |
podataka je sigurno ostala ista i nije potreban eksport i import. | podataka je sigurno ostala ista i nije potreban eksport i import. | ||
Pre upgrade-a uraditi backup, i premestiti DB klaster direktorijum: | Pre upgrade-a uraditi backup, i premestiti DB klaster direktorijum: | ||
+ | su - postgres | ||
pg_dumpall > pg_all.sql | pg_dumpall > pg_all.sql | ||
− | + | ||
− | + | exit | |
− | mv /var/lib/pgsql /var/lib/pgsql.old | + | |
+ | service postgresql-9.3 stop | ||
+ | mv /var/lib/pgsql/9.3 /var/lib/pgsql/9.3-old | ||
Opisano u | Opisano u | ||
− | + | ||
− | http://www.postgresql.org/docs/9. | + | http://www.postgresql.org/docs/9.5/static/upgrading.html |
Za upgrade servera treba koristiti Postgresov yum repozitorijum: | Za upgrade servera treba koristiti Postgresov yum repozitorijum: | ||
Line 164: | Line 214: | ||
Prateci linkove, nađite repository RPM, na primer: | Prateci linkove, nađite repository RPM, na primer: | ||
− | + | https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-6-x86_64/pgdg-centos95-9.5-2.noarch.rpm | |
− | + | https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-6-i386/pgdg-centos95-9.5-2.noarch.rpm | |
− | + | ||
+ | https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-5-x86_64/pgdg-centos95-9.5-2.noarch.rpm | ||
+ | https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-5-i386/pgdg-centos95-9.5-2.noarch.rpm | ||
Instalirajte RPM sa: | Instalirajte RPM sa: | ||
− | wget | + | wget https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-5-x86_64/pgdg-centos95-9.5-2.noarch.rpm |
− | + | yum install pgdg-centos95-9.5-2.noarch.rpm | |
+ | yum remove pgdg-centos93 | ||
+ | yum remove pgdg-centos91 | ||
− | Proverite da li se u /etc/yum.repos.d/ nalazi pgdg- | + | Proverite da li se u /etc/yum.repos.d/ nalazi pgdg-XX-centos.repo. |
− | + | Proveriti da nema viškova (9.1 i 9.3). Ako ima konflikta deinstalirati stari Postgres. | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
Isključite traženje Postgresa iz standardnog repozitorijuma tako što ćete | Isključite traženje Postgresa iz standardnog repozitorijuma tako što ćete | ||
u fajlu /etc/yum.repos.d/CentOS-Base.repo na kraj sekcija [base] i | u fajlu /etc/yum.repos.d/CentOS-Base.repo na kraj sekcija [base] i | ||
Line 188: | Line 236: | ||
exclude=postgresql* | exclude=postgresql* | ||
− | |||
− | |||
− | |||
− | '''Za 9. | + | '''Za 9.5''', instalirajte postgres: |
− | yum install | + | yum install postgresql95-server |
− | Terebalo bi da je kreiran novi, prazan direktorijum /var/lib/pgsql/data. | + | Terebalo bi da je kreiran novi, prazan direktorijum /var/lib/pgsql/9.3/data. |
Proveriti. Kao korisnik root izvršiti inicijalizaciju DB klastera: | Proveriti. Kao korisnik root izvršiti inicijalizaciju DB klastera: | ||
− | + | service postgresql-9.5 initdb | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
Startovati Postgres service kao korisnik root: | Startovati Postgres service kao korisnik root: | ||
− | + | service postgresql-9.5 start | |
− | + | ||
− | + | ||
Uraditi restore baze: | Uraditi restore baze: | ||
su - postgres | su - postgres | ||
− | psql -d postgres -f | + | psql -d postgres -f pg_all.sql |
Uraditi vacuum: | Uraditi vacuum: | ||
vacuumdb -az | vacuumdb -az | ||
+ | |||
+ | exit | ||
+ | Ukljičiti novu verziju postgresa: | ||
+ | |||
+ | chkconfig postgresql-9.3 off | ||
+ | chkconfig postgresql-9.5 on --levels 2345 | ||
+ | |||
Podesiti postgresql.conf i pg_hba.conf. Podesiti iptables. | Podesiti postgresql.conf i pg_hba.conf. Podesiti iptables. | ||
− | + | su - postgres | |
− | + | mv 9.5/data/pg_hba.conf 9.5/data/pg_hba.conf.orig | |
+ | cp 9.3/data/pg_hba.conf 9.5/data/pg_hba.conf | ||
+ | cp 9.5/data/postgresql.conf 9.5/data/postgresql.conf.orig | ||
==Spoljašne veze== | ==Spoljašne veze== | ||
* [http://trac.biostr.washington.edu/trac/wiki/PostgreSql lista psql komandi] | * [http://trac.biostr.washington.edu/trac/wiki/PostgreSql lista psql komandi] |