PostgreSQL

From RCUB
Jump to: navigation, search
(Konfigurisanje servera: 9.0)
(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.
  
CREATE DATABASE "TestBaza" WITH ENCODING='UTF8';
 
  
 
Kreiranje korisnika:
 
Kreiranje korisnika:
Line 51: Line 58:
 
Izbor baze:
 
Izbor baze:
  
  \c TestBaza
+
  \c test_baza
  
 
Dodeljivanje privilegija nad default "public" šemom.
 
Dodeljivanje privilegija nad default "public" šemom.
Line 111: Line 118:
 
   sudo -u postgres /usr/pgsql-9.0/bin/pg_ctl reload -D /var/lib/pgsql/9.0/data/
 
   sudo -u postgres /usr/pgsql-9.0/bin/pg_ctl reload -D /var/lib/pgsql/9.0/data/
  
==Koriscenje proceduralinih jezika==
+
===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 117: Line 161:
  
 
   CREATE LANGUAGE plpgsql;
 
   CREATE LANGUAGE plpgsql;
 
  
 
==Backup i restore==
 
==Backup i restore==
Line 143: 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. 8.4 major upgrade u odnosu na 8.3 i slično.
+
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. 8.4.0 u 8.4.1) struktura
+
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
   /etc/rc.d/init.d/postgresql stop
+
    
   /etc/rc.d/init.d/postgresql-9.0 stop
+
   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.0/interactive/install-upgrading.html
+
   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 168: Line 214:
 
Prateci linkove, nađite repository RPM, na primer:
 
Prateci linkove, nađite repository RPM, na primer:
  
   http://yum.pgrpms.org/reporpms/8.3/pgdg-centos-8.3-7.noarch.rpm
+
   https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-6-x86_64/pgdg-centos95-9.5-2.noarch.rpm
   http://yum.pgrpms.org/reporpms/8.4/pgdg-centos-8.4-2.noarch.rpm
+
   https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-6-i386/pgdg-centos95-9.5-2.noarch.rpm
   http://yum.pgrpms.org/reporpms/9.0/pgdg-centos-9.0-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 http://yum.pgrpms.org/reporpms/9.0/pgdg-centos-9.0-2.noarch.rpm
+
   wget https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-5-x86_64/pgdg-centos95-9.5-2.noarch.rpm
   rpm -i pgdg-centos-9.0-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-8*-centos.repo.  
+
Proverite da li se u /etc/yum.repos.d/ nalazi pgdg-XX-centos.repo.  
Obrisati viškove. Na primer, ako se radi migracija sa 8.3 na 8.4 moguće je da već postoji
+
Proveriti da nema viškova (9.1 i 9.3). Ako ima konflikta deinstalirati stari Postgres.
stari pgdg-83-centos.repo koga treba obrisati. Ako ima konflikta deinstalirati stari Postgres.
+
 
+
'''Samo za upgrade na 8.x''', instalirajte javni ključ za Postgres:
+
 
+
  wget http://yum.pgsqlrpms.org/RPM-GPG-KEY-PGDG
+
  rpm --import RPM-GPG-KEY-PGDG
+
 
+
 
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 192: Line 236:
 
   exclude=postgresql*
 
   exclude=postgresql*
  
'''Za 8.x''', update-ujte postgres sa:
 
 
 
  yum update postgresql
 
  
'''Za 9.0''', instalirajte postgres:
+
'''Za 9.5''', instalirajte postgres:
  
   yum install postgresql90-server
+
   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:
  
Za 9.0:
+
  service postgresql-9.5 initdb
  
  service postgresql-9.0 initdb
 
 
Za 8.x:
 
 
  su - postgres
 
  initdb -D /var/lib/pgsql/data
 
  
 
Startovati Postgres service kao korisnik root:
 
Startovati Postgres service kao korisnik root:
  
   exit
+
   service postgresql-9.5 start
  /etc/init.d/postgresql-9.0 start
+
 
  /etc/init.d/postgresql start
+
  
 
Uraditi restore baze:
 
Uraditi restore baze:
  
 
   su - postgres
 
   su - postgres
   psql -d postgres -f ../pgsql.old/pg_all.sql
+
   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.
  
Pri prelasku sa 8.3 na 8.4 često se može koristiti isti postgres.conf, samo treba izaciti parametar
+
  su - postgres
max_fsm_pages.
+
  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]

Latest revision as of 10:38, 26 July 2016

Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox