PostgreSQL - Adminisztráció

A RoolWikiBÓL

(Változatok közti eltérés)
2007. december 17., 16:32 változat (szerkesztés)
Rozsahegyil (Vita | szerkesztései)
(Teszt adatbázis készítése (ugyanarra a szerverre))
← Előző változtatások
Aktuális változat (2012. november 13., 11:45) (szerkesztés) (undo)
Rozsahegyil (Vita | szerkesztései)

 
(17 intermediate revisions not shown.)
5. sor: 5. sor:
Az adatbázisok mentését a pg_dump programmal tudjuk elvégezni. Javasolt a Az adatbázisok mentését a pg_dump programmal tudjuk elvégezni. Javasolt a
rendszeres, gyakori teljes adatbázis mentés. rendszeres, gyakori teljes adatbázis mentés.
- pg_dump -Upostgres app -f app.dump+ linux prompt#> pg_dump -Upostgres -f app.dump app
* A -U paraméterrel a felhasználó nevét adtuk meg, akinek a nevében a mentést készítjük. * A -U paraméterrel a felhasználó nevét adtuk meg, akinek a nevében a mentést készítjük.
-* app a mentendő adatbázis neve. 
* A -f paraméter után a fájl nevét adjuk meg, melybe a dump kerül. * A -f paraméter után a fájl nevét adjuk meg, melybe a dump kerül.
 +* app a mentendő adatbázis neve.
Az így elkészített app.dump állományt betöltve egy üres(!) adatbázisba, a mentés Az így elkészített app.dump állományt betöltve egy üres(!) adatbázisba, a mentés
14. sor: 14. sor:
Távolról is készíthetünk mentést: Távolról is készíthetünk mentést:
- pg_dump -Upostgres -h192.168.10.20 app > app.dump+ linux prompt#> pg_dump -Upostgres -h192.168.10.20 app > app.dump
* a -h után kerül a szerver IP címe (a h után írhatunk szóközt, ahogy a többi paraméter is megadható egybe és különírva is) * a -h után kerül a szerver IP címe (a h után írhatunk szóközt, ahogy a többi paraméter is megadható egybe és különírva is)
24. sor: 24. sor:
== Karbantartás == == Karbantartás ==
-Az adatbázis szerver minnél gyorsabb működéséhez szükséges a következő parancs+Az adatbázis szerver minél gyorsabb működéséhez szükséges a következő parancs heti - havi
rendszeres futtatása az applikációs adatbázison (app): rendszeres futtatása az applikációs adatbázison (app):
 + linux prompt#> psql -Upostgres app
app =# analyze; app =# analyze;
Célszerű rendszeresen futtatni olyan időpontban, amikor a lehető legkevesebben haználják az adatbázist. Célszerű rendszeresen futtatni olyan időpontban, amikor a lehető legkevesebben haználják az adatbázist.
-== Teszt adatbázis készítése (ugyanarra a szerverre) ==+== Teszt adatbázis készítése (az éles adatbázistól független adatbázis szerverre) ==
 +* felhasználók kimentése
 + linux prompt#> pg_dumpall -Upostgres -g -f globals.dump
 +* felhasználók betöltése (még a dumpok betöltése előtt)
 + linux prompt#> psql -Upostgres -f globals.dump
 +* a további teendők megegyeznek az éles adatbázis mellé készítendő teszt rendszer létrehozásával.
 + 
 +== Teszt adatbázis készítése (az éles adatbázis mellé) ==
Mentést készítünk az app, és a rool adatbázisról. Mentést készítünk az app, és a rool adatbázisról.
* Létrehozzuk az app_teszt és a rool_teszt adatbázist: * Létrehozzuk az app_teszt és a rool_teszt adatbázist:
- createdb -Upostgres app_teszt+ linux prompt#> createdb -Upostgres app_teszt
- createdb -Upostgres rool_teszt+ linux prompt#> createdb -Upostgres rool_teszt
* Betöltjük a dumpokat a teszt adatbázisokba: * Betöltjük a dumpokat a teszt adatbázisokba:
- psql -Upostgres app_teszt -f app.dump+ linux prompt#> psql -Upostgres app_teszt -f app.dump
- psql -Upostgres rool_teszt -f rool.dump+ linux prompt#> psql -Upostgres rool_teszt -f rool.dump
-* Az app_tesztben kiadunk egy update parancsot:+* Az app_tesztben kiadunk egy néhány parancsot (a dátumot a dump készítésének dátumára érdemes beállítani):
- psql -Upostgres app_teszt+ linux prompt#> psql -Upostgres app_teszt
app_teszt=# update rjo_rendszer_parameter set ertek='rool_teszt' where kod='REPOS_DATABASE_NAME'; app_teszt=# update rjo_rendszer_parameter set ertek='rool_teszt' where kod='REPOS_DATABASE_NAME';
update 1 update 1
 + app_teszt=# update vallalat set nev = 'Teszt '|| nev;
 + update x
 + app_teszt=# update rjo_rendszer_parameter set ertek = 'TESZT rendszer 2012-11-11 09:35' where kod = 'START_MESSAGE';
 + update 1
 + app_teszt=# update FTP_TRANSZFER_ADAT set DOWN_DIR=DOWN_DIR||'-teszt', UP_DIR=UP_DIR||'-teszt', LOCAL_DIR=LOCAL_DIR||'-teszt';
 + update x
app_teszt=# app_teszt=#
* Gyorsítjuk a lekérdezéseket (mindkét adatbázisban!): * Gyorsítjuk a lekérdezéseket (mindkét adatbázisban!):
- psql -Upostgres app_teszt+ linux prompt#> psql -Upostgres app_teszt
app_teszt=# analyze; app_teszt=# analyze;
 + ANALYZE
app_teszt=# \c rool_teszt app_teszt=# \c rool_teszt
 + You are now connected to database "rool_teszt".
rool_teszt=# analyze; rool_teszt=# analyze;
 + ANALYZE
Kész. Most az app_teszt -be bejelentkezhet minden felhasználó aki az app-ba be Kész. Most az app_teszt -be bejelentkezhet minden felhasználó aki az app-ba be
-tudott jelenkezni. A parancsikonról másolatot készítve, és a host= paramétert+tudott jelenkezni. A parancsikonról másolatot készítve, és a host= paramétert módosítva
-host=app_teszt-re módosítva könnyen elérhetővé tehetjük a teszt adatbázist.+(host=app_teszt) elérhetővé tehetjük a teszt adatbázist.
Ezen a módon a felhasználókat nem hozzuk létre. Ezért működik ez az eljárás csupán Ezen a módon a felhasználókat nem hozzuk létre. Ezért működik ez az eljárás csupán
-ugyanazon a szerveren.+ugyanazon az adatbázis szerveren.
== Tranzakciófigyelés Unix szerű rendszereken == == Tranzakciófigyelés Unix szerű rendszereken ==
Az adatbázis kéréseket kiszolgáló folyamatokat a postgres felhasználó futtatja. Az adatbázis kéréseket kiszolgáló folyamatokat a postgres felhasználó futtatja.
Milyen folyamatokat futtat a postgres felhasználó? Milyen folyamatokat futtat a postgres felhasználó?
- ps -upostgres+ linux prompt#> ps -upostgres
Részletesebb infó: Részletesebb infó:
- ps -upostgres uxww+ linux prompt#> ps -upostgres uxww
 +Másképp
 + linux prompt#> ps auxww | grep postgres
 + 
Ha csak az app adatbázis felé irányuló folyamatokra vagyunk kíváncsiak, fűzzük a Ha csak az app adatbázis felé irányuló folyamatokra vagyunk kíváncsiak, fűzzük a
következőket az előző parancs végére. következőket az előző parancs végére.
71. sor: 91. sor:
| grep „: pooly” | grep „: pooly”
-Ha a tranzakcióban lévő kapcsolatok érdekelnek, akkor hozzáfűzendő (még):+Ha a tranzakcióban lévő kapcsolatok érdekelnek, akkor hozzáfűzendő:
| grep „transaction$” | grep „transaction$”
-Ha a zárolás (lock) miatt várakozók érdekelnek, akkor hozzáfűzendő (még):+Ha a zárolás (lock) miatt várakozók érdekelnek, akkor hozzáfűzendő:
| grep „waiting” | grep „waiting”
Egy folyamatot a megszüntethetünk a szerveren a kill parancsot használva, melyet Egy folyamatot a megszüntethetünk a szerveren a kill parancsot használva, melyet
-postgres felhasználó nevében adjunk ki. paramétere a ps kimenetének 2. oszlopában+postgres felhasználó nevében adjunk ki. Paramétere a ps kimenetének 2. oszlopában
szereplő folyamatazonosító (pid). Ne használjuk a kill -9 paraméterét! szereplő folyamatazonosító (pid). Ne használjuk a kill -9 paraméterét!
Példa a kill parancs használatára: Példa a kill parancs használatára:
- prompt$ kill 1234+ linux prompt#> kill 1234
== Felhasználó jelszavának módosítása == == Felhasználó jelszavának módosítása ==
89. sor: 109. sor:
jelszavának módosítására. Amennyiben sikeresen bejelentkezett a felhasználó, a saját jelszavának módosítására. Amennyiben sikeresen bejelentkezett a felhasználó, a saját
jelszavát módosíthatja a 'felhasználó' beállításai ablakból nyíló, - erre szolgáló - jelszavát módosíthatja a 'felhasználó' beállításai ablakból nyíló, - erre szolgáló -
-dialógus ablakban. Ha valaki elfelejtené a jelszavát, az az SQL ablakban módosítható+dialógus ablakban. Ha valaki elfelejtené a jelszavát, azt az adminisztrátor az SQL ablakban módosíthatja
a következő parancs futtatásával: a következő parancs futtatásával:
alter user felhasználó_azonosító password 'új_jelszó'; alter user felhasználó_azonosító password 'új_jelszó';
(Mindegy melyik adatbázist választjuk.) (Mindegy melyik adatbázist választjuk.)

Aktuális változat

A PostgreSQL szerver adminisztrációjáról a hivatalos dokumentáció itt érhető el

Ez a dokumentáció az alapvető adatbázis szerver karbantartási funkciókról tartalmaz egy rövid ismertetőt.

Tartalomjegyzék

Mentés

Az adatbázisok mentését a pg_dump programmal tudjuk elvégezni. Javasolt a rendszeres, gyakori teljes adatbázis mentés.

linux prompt#> pg_dump -Upostgres -f app.dump app
  • A -U paraméterrel a felhasználó nevét adtuk meg, akinek a nevében a mentést készítjük.
  • A -f paraméter után a fájl nevét adjuk meg, melybe a dump kerül.
  • app a mentendő adatbázis neve.

Az így elkészített app.dump állományt betöltve egy üres(!) adatbázisba, a mentés indításának pillanatában lévő adatbázist kapjuk vissza.

Távolról is készíthetünk mentést:

linux prompt#> pg_dump -Upostgres -h192.168.10.20 app > app.dump
  • a -h után kerül a szerver IP címe (a h után írhatunk szóközt, ahogy a többi paraméter is megadható egybe és különírva is)

Minden PostgreSQL parancs futtatható távolról ilyen módon. Ekkor figyelni kell arra, hogy a pg_dump verziója egyezzen meg a szerver verziójával, illetve annak a szervernek a verziójával, mellyel később a dump-ot használni akarjuk! (Ez utóbbi a fontosabb.) A többi paraméterről a pg_dump --help vagy a man pg_dump paranccsal kaphatunk információt.

Karbantartás

Az adatbázis szerver minél gyorsabb működéséhez szükséges a következő parancs heti - havi rendszeres futtatása az applikációs adatbázison (app):

linux prompt#> psql -Upostgres app
app =# analyze;

Célszerű rendszeresen futtatni olyan időpontban, amikor a lehető legkevesebben haználják az adatbázist.

Teszt adatbázis készítése (az éles adatbázistól független adatbázis szerverre)

  • felhasználók kimentése
linux prompt#> pg_dumpall -Upostgres -g -f globals.dump
  • felhasználók betöltése (még a dumpok betöltése előtt)
linux prompt#> psql -Upostgres -f globals.dump
  • a további teendők megegyeznek az éles adatbázis mellé készítendő teszt rendszer létrehozásával.

Teszt adatbázis készítése (az éles adatbázis mellé)

Mentést készítünk az app, és a rool adatbázisról.

  • Létrehozzuk az app_teszt és a rool_teszt adatbázist:
linux prompt#> createdb -Upostgres app_teszt
linux prompt#> createdb -Upostgres rool_teszt
  • Betöltjük a dumpokat a teszt adatbázisokba:
linux prompt#> psql -Upostgres app_teszt -f app.dump
linux prompt#> psql -Upostgres rool_teszt -f rool.dump
  • Az app_tesztben kiadunk egy néhány parancsot (a dátumot a dump készítésének dátumára érdemes beállítani):
linux prompt#> psql -Upostgres app_teszt
app_teszt=# update rjo_rendszer_parameter set ertek='rool_teszt' where kod='REPOS_DATABASE_NAME';
update 1
app_teszt=# update vallalat set nev = 'Teszt '|| nev;
update x
app_teszt=# update rjo_rendszer_parameter set ertek = 'TESZT rendszer 2012-11-11 09:35' where kod = 'START_MESSAGE';
update 1
app_teszt=# update FTP_TRANSZFER_ADAT set DOWN_DIR=DOWN_DIR||'-teszt', UP_DIR=UP_DIR||'-teszt', LOCAL_DIR=LOCAL_DIR||'-teszt';
update x
app_teszt=#
  • Gyorsítjuk a lekérdezéseket (mindkét adatbázisban!):
linux prompt#> psql -Upostgres app_teszt
app_teszt=# analyze;
ANALYZE
app_teszt=# \c rool_teszt
You are now connected to database "rool_teszt".
rool_teszt=# analyze;
ANALYZE

Kész. Most az app_teszt -be bejelentkezhet minden felhasználó aki az app-ba be tudott jelenkezni. A parancsikonról másolatot készítve, és a host= paramétert módosítva (host=app_teszt) elérhetővé tehetjük a teszt adatbázist. Ezen a módon a felhasználókat nem hozzuk létre. Ezért működik ez az eljárás csupán ugyanazon az adatbázis szerveren.

Tranzakciófigyelés Unix szerű rendszereken

Az adatbázis kéréseket kiszolgáló folyamatokat a postgres felhasználó futtatja. Milyen folyamatokat futtat a postgres felhasználó?

linux prompt#> ps -upostgres

Részletesebb infó:

linux prompt#> ps -upostgres uxww

Másképp

linux prompt#> ps auxww | grep postgres

Ha csak az app adatbázis felé irányuló folyamatokra vagyunk kíváncsiak, fűzzük a következőket az előző parancs végére.

| grep „: .* app”

Ha egy adott felhasználó (pl. pooly) adatbázis kapcsolatai érdekelnek, akkor hozzáfűzendő (még):

| grep „: pooly”

Ha a tranzakcióban lévő kapcsolatok érdekelnek, akkor hozzáfűzendő:

| grep „transaction$”

Ha a zárolás (lock) miatt várakozók érdekelnek, akkor hozzáfűzendő:

| grep „waiting”

Egy folyamatot a megszüntethetünk a szerveren a kill parancsot használva, melyet postgres felhasználó nevében adjunk ki. Paramétere a ps kimenetének 2. oszlopában szereplő folyamatazonosító (pid). Ne használjuk a kill -9 paraméterét! Példa a kill parancs használatára:

linux prompt#> kill 1234

Felhasználó jelszavának módosítása

A ROOL Bázis program nem nyújt felületet az adminisztrátoroknak a felhasználók jelszavának módosítására. Amennyiben sikeresen bejelentkezett a felhasználó, a saját jelszavát módosíthatja a 'felhasználó' beállításai ablakból nyíló, - erre szolgáló - dialógus ablakban. Ha valaki elfelejtené a jelszavát, azt az adminisztrátor az SQL ablakban módosíthatja a következő parancs futtatásával:

alter user felhasználó_azonosító password 'új_jelszó';

(Mindegy melyik adatbázist választjuk.)

Személyes eszközök