PostgreSQL - Adminisztráció
A RoolWikiBÓL
2007. december 17., 16:50 változat (szerkesztés) Rozsahegyil (Vita | szerkesztései) (→Tranzakciófigyelés Unix szerű rendszereken) ← Előző változtatások |
Aktuális változat (2012. november 13., 11:45) (szerkesztés) (undo) Rozsahegyil (Vita | szerkesztései) |
||
(14 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 | ANALYZE | ||
61. sor: | 75. sor: | ||
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 | Másképp | ||
- | ps auxww | grep postgres | + | 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 | ||
77. 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 == | ||
95. 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.)