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

Adatbázis nélkül nem élet az élet... telepítsük fel a PostgreSQL szervert... (smile)

# yum install postgresql.x86_64 postgresql-contrib.x86_64 postgresql-server.x86_64
[...]
# chkconfig --list | grep postgres
postgresql      0:off   1:off   2:off   3:off   4:off   5:off   6:off
# chkconfig postgresql on
# chkconfig --list | grep postgres
postgresql      0:off   1:off   2:on    3:on    4:on    5:on    6:off
# service postgresql initdb
Initializing database:                                     [  OK  ]
# service postgresql start
Starting postgresql service:                               [  OK  ]
# su - postgres
$ psql -l
                                  List of databases
   Name    |  Owner   | Encoding |  Collation  |    Ctype    |   Access privileges   
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres
                                                             : postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres
                                                             : postgres=CTc/postgres
(3 rows)
$

A telepítéssel készen is vagyunk, de néhány beállítást meg kell még ejtenünk, kezdjük a pg_hba.conf állomány tartalmával:

data/pg_hba.conf
# IPv4 local connections:
host    all         all         127.0.0.1/32          password
# IPv6 local connections:
host    all         all         ::1/128               password

A fenti sort a meglévő IPv4/IPv6 kezdetű megjegyzés után. Ha a PostgreSQL szervert el szeretnénk érni TCP/IP alapon, akkor módosítanunk kell a postgresql.conf állományon is:

data/postgresql.conf
listen_addresses = 'localhost'

Tulajdonképpen nem kell mást tennünk, mint a fenti sorok elől kivenni a # jelet. Ezek után indítsuk újra a szolgáltatást és ellenőrizzük, hogy figyel-e az adott porton:

$ exit
logout
# service postgresql restart
Stopping postgresql service:                               [  OK  ]
Starting postgresql service:                               [  OK  ]
# nmap -p 5432 localhost

Starting Nmap 5.21 ( http://nmap.org ) at 2012-06-16 11:37 CEST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000059s latency).
Hostname localhost resolves to 2 IPs. Only scanned 127.0.0.1
PORT     STATE SERVICE
5432/tcp open  postgresql

Nmap done: 1 IP address (1 host up) scanned in 0.07 seconds

S kész is vagyunk... (smile)

Mentés

Adatbázisok esetén nem célszerű a bináris állományokat lementeni, mivel a fájlok tömörítése közben a tartalom bárhol megváltozhat, és visszatöltve nem feltétlen lesz konzisztens állapotban az adatbázisunk, így egy adatbázis dump tömörítését kell ütemezve megoldanunk. Ez nem olyan nehéz feladat, mint amilyennek hangzik... (smile)

Első körben határozzuk meg azokat az adatbázisokat, amelyeket menteni akarunk, a script lehetőleg automatikusan derítse fel, ha új adatbázist adunk hozzá a rendszerünkhöz:

# su - postgres
$ psql -l | grep "^ [a-z]" | sed s/"^ "//g | awk {'print $1'} | grep -v "^template"
confluence425
crowd242
fisheye2714
jira506
postgres
sonar
svnadmin

Ha az adatbázisok megvannak, akkor már csak végig kell lépkedni rajtuk és kiírni a tartalmukat tömörítve, írjuk meg a pg_backup.sh script-et:

/home/backup/postgresql/pg_backup.sh
#!/bin/bash

for i in `psql -l | grep "^ [a-z]" | sed s/"^ "//g | awk {'print $1'} | grep -v "^template"`
do
  echo "$i started"
  pg_dump $i | bzip2 -c >/home/backup/postgresql/$i.bz2
  echo "$i done"
done

Futtassuk le "kézzel", hogy lássuk a működését:

$ chmod +x /home/backup/postgresql/pg_backup.sh
$ /home/backup/postgresql/pg_backup.sh
confluence425 started
confluence425 done
crowd242 started
crowd242 done
fisheye2714 started
fisheye2714 done
jira506 started
jira506 done
postgres started
postgres done
sonar started
sonar done
svnadmin started
svnadmin done
$ ls -l /home/backup/postgresql/
összesen 51948
-rw-r--r--. 1 postgres postgres 50640073 jún   29 14.53 confluence425.bz2
-rw-r--r--. 1 postgres postgres   234513 jún   29 14.53 crowd242.bz2
-rw-r--r--. 1 postgres postgres     6975 jún   29 14.53 fisheye2714.bz2
-rw-r--r--. 1 postgres postgres  1138428 jún   29 14.53 jira506.bz2
-rwxr-xr-x. 1 postgres postgres      207 jún   29 14.52 pg_backup.sh
-rw-r--r--. 1 postgres postgres      325 jún   29 14.53 postgres.bz2
-rw-r--r--. 1 postgres postgres  1142004 jún   29 14.53 sonar.bz2
-rw-r--r--. 1 postgres postgres     4187 jún   29 14.53 svnadmin.bz2

Már csak a cron script hiányzik, hozzuk létre a `crontab -e` parancs használatával egy olyan időpontban, amikor viszonlag kicsi a szerverünk terhelése, illetve kerüljük a kerek számokat, mivel sok rendszerfelügyeleti script 5-10-15 percenként fut, ezért a 4 óra 13 perc megfelelő lehet erre a célra:

MAILTO=root

13 4 * * *      /home/backup/postgresql/pg_backup.sh

Másnap ellenőrizzük vissza, hogy valóban lefutott a mentés, illetve nézzük meg, hogy a mentésből adott esetben vissza tudjuk-e állítani az adatbázist! Kevés haszna van egy rendszeres mentésnek, amely alkalmatlan a visszaállításra.

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