PostgreSQL tarkvara kasutamine Solarisega

Allikas: Kuutõrvaja

Sissejuhatus

Ettevalmistuste tegemine

Tekitada operatsioonisüsteemi kasutaja:grupp postgres:postges kodukataloogiga /opt/postgres.

Valmistame ette ZFS failisüsteemid binari installi ning data cluster kataloogide jaoks

  • /usr/local - kuigi PostgreSQL ise hakkab asuma kataloogis /usr/local/postgresql, nagu allpool näeme paigutame lisamooduli Postgis kataloogi /usr/local/postgis ja mõnus on neid korraga käsitleda
  • /data/postgresql

Tarkvara paigaldamine

Kuigi PostgreSQL on olemas Solarise jaoks ka pakendatud kujul tegeleb käesolev tekst sellise juhtumiga kus andmebaas ning olulised lisamoodulid on paigaldatud lähtetekstist. Kasutame sellegs CSW paketihaldusega tulevat GNU C kompilaatorit (gcc).

Paigaldamiseks tuleb logida süsteemi sisse kasutajana postgres ning pakkida lahti PostgreSQLi lähtetekst

 bash$ mkdir 20081005 && cd 20081005
 bash$ wget ftp://ftp.eenet.ee/pub/postgresql/v8.3.5/postgresql-8.3.5.tar.bz2
 bash$ star jxf postgresql-8.3.5.tar.bz2

Seame keskkonnamuutujad

 bash$ export PATH=/usr/local/postgresql/bin:/opt/csw/bin:/opt/csw/gcc3/bin:/usr/sbin:\
 /usr/bin:/usr/dt/bin:/usr/sfw/bin:/usr/openwin/bin:/usr/ccs/bin
 bash$ export GCC=gcc
 bash$ unset CC
 bash$ unset CXX

Liigutame vanad asjad eest ära

 bash# mv /usr/local/postgresql /usr/local/postgresql-20081005-ennem-835-paigaldust
 bash# mv /data/postgresql /data/postgresql-20081005-ennem-835-paigaldust

Konfigureerimine, kompileerime ning paigaldame

 bash$ ./configure --with-perl --with-libxml --with-libxslt --with-openssl --with-pam --prefix=/usr/local/postgresql 1> ../configure.1.log 2>../configure.2.log
 bash$ gmake 1> ../gmake.1.log 2> ../gmake.2.log
 bash$ gmake install 1> ../gmake-install.1.log 2> ../gmake-install.2.log

Initsialiseerime andmebaasi

 bash$ /usr/local/postgresql/bin/initdb -E UNICODE --locale et_EE.UTF-8 -D /data/postgresql
 The files belonging to this database system will be owned by user "postgres".
 This user must also own the server process.
 
 The database cluster will be initialized with locale et_EE.UTF-8.
 initdb: could not find suitable text search configuration for locale et_EE.UTF-8
 The default text search configuration will be set to "simple".
 
 fixing permissions on existing directory /data/postgresql ... ok
 creating subdirectories ... ok
 selecting default max_connections ... 100
 selecting default shared_buffers/max_fsm_pages ... 32MB/204800
 creating configuration files ... ok
 creating template1 database in /data/postgresql/base/1 ... ok
 initializing pg_authid ... ok
 initializing dependencies ... ok
 creating system views ... ok
 loading system objects' descriptions ... ok
 creating conversions ... ok
 creating dictionaries ... ok
 setting privileges on built-in objects ... ok
 creating information schema ... ok
 vacuuming database template1 ... ok
 copying template1 to template0 ... ok
 copying template1 to postgres ... ok
 
 WARNING: enabling "trust" authentication for local connections
 You can change this by editing pg_hba.conf or using the -A option the
 next time you run initdb.
 
 Success. You can now start the database server using:
 
     /usr/local/postgresql/bin/postgres -D /data/postgresql
 or
     /usr/local/postgresql/bin/pg_ctl -D /data/postgresql -l logfile start

contrib moodulid

 bash$ cd contrib/fuzzystrmatch
 bash$ gmake
 bash$ gmake install

Kompileerimise õnnestumiseks tuleb PostgreSQL kompileerida võtmega --with-libxslt

 bash$ cd contrib/xml2
 bash$ gmake
 bash$ gmake install

Kui andmebaas juba töötab, tuleb laadida skript

 postgresql-8.3.4/contrib/xml2/pgxml.sql

pgcrypto mooduli paigaldamiseks tuleb öelda

 bash$ cd contrib/pgcrypto
 bash$ gmake
 bash$ gmake install

pljava paigaldamine

pljava võimaldab kasutada java't andmebaasist, tarkvara kodulehekülge asub aadressil http://wiki.tada.se/display/pljava/Home

 bash$ star zxf pljava-src-1.4.0.tar.gz 
 bash$ export JAVA_HOME=/usr/java
 bash$ gmake 1>../pljava-gmake.1.log 2>../pljava-gmake.2.log
 bash$ gmake install 1>../pljava-gmake-install.1.log 2>../pljava-gmake-install.2.log

Kui andmebaas juba töötab, tuleb laadida skript

 pljava/pljava-1.4.0/src/sql/install.sql

Postgis

http://geos.refractions.net/

Tarkvara uuendamine

  • Kui muutub PostgreSQLi nn minoorne versiooninumber, st tagant poolt kolmas, nt 8.3.3 -> 8.3.4, siis võib sama data klastrit kasutada.
  • Kui muutub PostgreSQLi nn mažoorsem versioonumber, nt tagant poolt teine, nt 8.2.x -> 8.3.y, siis tuleb andmed esmalt kopeerida pg_dumpall käsu abil töötavast vanast baasist ära, samal ajal peaks pg_hba.conf failist kasutajate ja programmide ligipääs baasile olema keelatud
 $ /usr/local/postgresql/bin/pg_dumpall -h 127.0.0.1 -U postgres > pg_dumpall-20081003-8.2.sql

ning seejärel uude initsialiseeritud baasi sisse lugeda, öeldes nt

 $ /usr/local/postgresql/bin/psql -h 127.0.0.1 -U postgres template1 < pg_dumpall-20081003-8.2.sql \
 1>pg_dumpall-20081003-8.3-in-1.log 2>pg_dumpall-20081003-8.3-in-2.log

Andmebaasi varundamine WAL logide abil

PostgreSQL v. 8.3.5 wal logide salvestamiseks tuleb näidata seadistusfailis ära kahe parameetri väärtused nt selliselt

 archive_mode = on               # allows archiving to be done
 archive_command = 'test ! -f /data/backup/postgresql/archive-logs/%f && cp %p /data/backup/postgresql/archive-logs/%f'
  • arhive_mode - lülitab sisse andmebaasi tavalise töö taustal wal logide kirjutamise
  • archive_command - näitab kuhu wal logid kopeerida

Taastamiseks sobiv andmete komplekt tekib sellise järgnevuse tulemusel

  • Öelda töötava baasi tingimustes
 $ psql -U postgres postgres -c "select pg_start_backup('backup');"
  • Seejärel kopeerida baasile vastav failisüsteem
  • Öelda
 $ psql -U postgres postgres -c "select pg_stop_backup();"
  • Kopeerida tekkivad wal logid

Andmebaasi taaste WAL logide abil

Lähtepunktiks on tarvis kolme asja

  • Samal arhitektuuril ja versiooniga andmebaasi kui see, millest tehti eelmises punktis toodud järgnevuse abil andmetest koopia
  • data kluster kataloogi sisu nii nagu see eelmises punktis kopeeriti
  • wal logid nii nagu nad eelmises punktis kopeeriti

Andmebaasi saab taastada sellise tegevuste järgnevuse abil

  • Andmebaasi mootor ei käi.
  • Kopeerida andmebaasi andmeklustri failisüsteemi, nt /srv/postgresql, pg_start_backup('string') käigus varundatud andmed.
  • Tekitada nt sellise sisuga fail /srv/postgresql/recovery.conf andmeklusteri kataloogi, fail peab olema postgres kasutaja oma, sest peale protseduuri lõppu nimetatakse see fail ringi recovery.done nimega
 restore_command = 'cp /srv/backup/postgresql/archive-logs/%f %p'
 recovery_target_time = '2004-07-14 22:39:00 EST'

Esimene parameeter näitab, kus wal logid asuvad ja teine, kui palju logisid sisse lugeda.

  • Paigutada wal logid kataloogi /srv/backup/postgresql/archive-logs
  • Käivitada andmebaas tavapäraselt viisil, kusjuures soovitavalt on archive_logs välja lülitatud.

Käivitamisel tekivad sellised sissekanded andmebaasi logisse


Lisaks taastamisele sobib see tehnika nt töötava andmebaasi kõrvale teise arvutisse andmebaasi mingi seisu moodustamiseks.

Märkused

  • Selleks, et psql, pg_dump jm käsud ei küsiks parooli sobib seadistada keskkonnamuutuja, kuid kasutaja peab ise otsustama, kas selline lahendus on talle sobiv
 $ export PGPASSWORD=parool

Kasulikud lisamaterjalid