View Source

h1. 5.2.10. PostgreSQL adatbázis

A http://www.javaforum.hu portál első sorban PostgreSQL adatbázist használ, így egy PostgreSQL _jail_ elkészítése szükséges volt.

h2. 5.2.10.1. Előfeltételek

A PostgreSQL érdekes állat, a leadott teljesítményért cserében több kernel erőforrást igényel, mint ami alapból adott, ezért a _/boot/loader.conf_ állományba vegyük fel az alábbi három sort, majd indítsuk újra a gépet... igen, az egész gépet:
{code:title=/boot/loader.conf}
kern.ipc.semmni=512
kern.ipc.semmnu=1024
kern.ipc.semmns=2048
{code}

Hozzuk létre a szükséges _jail_ fájlrendszert, illetve egy külön fájlrendszert az adatbázisban tárolt adatoknak, amelyet lehetőleg ne állítsunk tömörítettre, mivel ez jelentősen ronthatja az adatbázis hatékonyságát. A PostgreSQL el akarja majd érni a _sysvipc_ felületet, amely alapból tiltva van a _jail_-ek számára, ezért adjuk meg a _/etc/rc.conf_ állományban ezt az engedélyt (célszerű a _jail_ konfigok közelébe tenni, például a _dev_ és a _proc_ elé):
{code:title=/etc/rc.conf}
jail_sysvipc_allow="YES"
{code}

h2. 5.2.10.2. A PostgreSQL telepítése és beállítása

Indítsuk el a _jail_-t, majd lépjünk be és telepítsük fel a _postgresql84-server_ csomagot, célszerű az (_ICU_ 8.3 verzióig) és az _INTDATE_ opciók kiválasztása, ezek után adjuk hozzá a _/etc/rc.conf_ állományhoz az alábbit:
{code:title=/etc/rc.conf}
postgresql_enable="YES"
{code}

A _jail_ újraindítása nélkül szerkesszük _vipw_ parancs segítségével a _passwd_ fájlt, adjunk meg új _home_ könyvtárat a _postgres_ felhasználónak, illetve írjuk át ízlés szerint a _shell_ parancsot is:
{code:title=wipw}
pgsql:*:70:70:PostgreSQL Daemon:/data/pgsql:/usr/local/bin/bash
{code}

Ezek után mozgassuk át a megfelelő helyre a _postgres_ felhasználó régi könyvtárát, majd futtassuk le az _initdb_ parancsot, amely létrehozza a szükséges adatstruktúrát:
{code:title=Parancssor}
[root@pgsql:~]$ mv /usr/local/pgsql/ /data/
[root@pgsql:~]$ /usr/local/etc/rc.d/postgresql initdb
The files belonging to this database system will be owned by user "pgsql".
This user must also own the server process.

The database cluster will be initialized with locale C.
The default text search configuration will be set to "english".

creating directory /data/pgsql/data ... ok
creating subdirectories ... ok
selecting default max_connections ... 50
selecting default shared_buffers/max_fsm_pages ... 4000kB/20000
creating configuration files ... ok
creating template1 database in /data/pgsql/data/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/bin/postgres -D /data/pgsql/data
or
/usr/local/bin/pg_ctl -D /data/pgsql/data -l logfile start
{code}

{info}
Ha verziót váltunk, akkor szükséges lehet a meglévő adatbázis mentése és visszatöltése az új adatbázis jail alá.

Ennek módja egyszerű, a régi adatbázist mentjük:
{code}
$ pg_dumpall -U pgsql >dump.sql
{code}

Majd ezt betöltjük az új - üres - adatbázisba:
{code}
$ psql -f backup.sql template1
{code}

Az adatbázis méretétől és a gép teljesítményétől függően ez jópár percig eltarthat...
{info}

Ezek után adjuk hozzá a saját _jail_-ekből való elérés lehetőségét:
{code:title=/data/pgsql/data/pg_hba.conf}
host all all 192.168.0.0/16 password
{code}

Majd módosítsuk a _postgresql.conf_ fájlt, hogy a program hallgatózzon is a neki szánt porton és interfészen:
{code:title=/data/pgsql/data/postgresql.conf}
listen_addresses = '*'
port = 5432
{code}

Ezek után a _postgresql_ indítható, próbáljuk ki:
{code:title=Parancssor}
[root@pgsql:~]$ /usr/local/etc/rc.d/postgresql start
[root@pgsql:~]$ su - pgsql
[pgsql@pgsql:~]$ createuser -P testuser
Enter password for new role:
Enter it again:
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) y
Shall the new role be allowed to create more new roles? (y/n) n
[pgsql@pgsql:~]$ createdb -E UTF-8 -O testuser testdb
[pgsql@pgsql:~]$ psql -h pgsql.jails.javaforum.hu -U testuser testdb
Password for user testuser:
Welcome to psql 8.3.5, the PostgreSQL interactive terminal.

Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit

testdb=> \q
{code}

A PostgreSQL kipipálva... :)
----
[Előző fejezet|FREEBSD:Mailman] [Tartalomjegyzék|FREEBSD:FreeBSD in my server] [Következő fejezet|FREEBSD:Munin]
----
Auth Gábor [auth.gabor@javaforum.hu|mailto:auth.gabor@javaforum.hu]
----