PostgreSQL tarkvara kasutamine Solarisega
Sisukord
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
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