Child pages
  • PostgreSQL
Skip to end of metadata
Go to start of metadata

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.

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:

/boot/loader.conf
kern.ipc.semmni=512
kern.ipc.semmnu=1024
kern.ipc.semmns=2048

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é):

/etc/rc.conf
jail_sysvipc_allow="YES"

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:

/etc/rc.conf
postgresql_enable="YES"

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:

wipw
pgsql:*:70:70:PostgreSQL Daemon:/data/pgsql:/usr/local/bin/bash

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:

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

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:

$ pg_dumpall -U pgsql >dump.sql

Majd ezt betöltjük az új - üres - adatbázisba:

$ psql -f backup.sql template1

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...

Ezek után adjuk hozzá a saját jail-ekből való elérés lehetőségét:

/data/pgsql/data/pg_hba.conf
host    all         all         192.168.0.0/16        password

Majd módosítsuk a postgresql.conf fájlt, hogy a program hallgatózzon is a neki szánt porton és interfészen:

/data/pgsql/data/postgresql.conf
listen_addresses = '*'
port = 5432

Ezek után a postgresql indítható, próbáljuk ki:

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

A PostgreSQL kipipálva... (smile)

      
      
Page viewed times
#trackbackRdf ($trackbackUtils.getContentIdentifier($page) $page.title $trackbackUtils.getPingUrl($page))
  • No labels