Kedves Hozzáértő kollégák!
Már az összes ötletemet ellőttem a postgres automatikus indításával kapcsolatban, de előrébb nem jutottam.
CentOS release 6.3 (Final) rajta postgresql-8.4.12-1.el6_2.x86_64, postgresql-libs-8.4.12-1.el6_2.x86_64, postgresql-server-8.4.12-1.el6_2.x86_64 csomagokkal.
A gyári stock startup script nem indítja el az adatbázis kezelőt boot folyamat során.
Annyi változás van, hogy megváltoztattuk a DATA dir-t /opt/pgsql/data-ra.
Ezért készítettem egy saját boot scrit-et amit kézzel futtatva simán lefut, de boot-kor az sem...
ötlet?
szerk:
mo.: selinux=0 a kernel boot paraméterek közé és működik a scriptem...
pedig SELINUX-ot nem telepítettem!
- 8311 megtekintés
Hozzászólások
chkconfig parancs mit mond?
Látszólag ott jól be van állítva?
Ha nem akkor chkconfig szervízneve on
---------------------------------------------------
Hell is empty and all the devils are here.
-- Wm. Shakespeare, "The Tempest"
- A hozzászóláshoz be kell jelentkezni
Persze.
Startup képernyőn írja, hogy Starting Postgres sikerelnül.
start script:
usage()
{
echo "usage: $0 <start|stop|status>"
}
case $1 in
start)
echo "Starting PostgreSQL server"
/usr/bin/pg_ctl start -w -D /opt/pgsql/data -o "-p 5432 -d 0" -l /opt/pgsql/log.log
;;
stop)
/usr/bin/pg_ctl stop -w -D /opt/pgsql/data -m immediate
;;
status)
/usr/bin/pg_ctl status -D /opt/pgsql/data
;;
*)
echo "Bruhhaha"
usage
esac
init script:
# chkconfig: 345 94 06
# description: postgres start/stop
#
# postgress db startup/shutdown script
#
usage()
{
echo "Usage: $0 <start|stop|status>"
}
if [ $# -ne 1 ]
then
usage
exit 1
fi
case $1 in
start)
runuser -l postgres -c "/maintenance/postgres_init.sh start"
touch /var/lock/subsys/Postgres
;;
stop)
su - postgres -c "/maintenance/postgres_init.sh stop"
;;
status)
su - postgres -c "/maintenance/postgres_init.sh status"
;;
*)
usage
;;
esac
logfileban semmi még akkor sem ha -d 5 adok neki ...
Ha átadod a tudásod neked attól még nem lesz kevesebb belőle..
- A hozzászóláshoz be kell jelentkezni
/usr/bin/pg_ctl start -w -D /opt/pgsql/data -o "-p 5432 -d 0" -l /opt/pgsql/log.log
ez mit mond ha kézzel futtatod?
---------------------------------------------------
Hell is empty and all the devils are here.
-- Wm. Shakespeare, "The Tempest"
- A hozzászóláshoz be kell jelentkezni
postgres-ként simán elindul
sőt root-ként az init.d-ből is
Ha átadod a tudásod neked attól még nem lesz kevesebb belőle..
- A hozzászóláshoz be kell jelentkezni
Tobb psql fut? Ha csak egy, akkor az miert nem irod at a "gyari" initscriptet:
PGDATA=/var/lib/pgsql/data
PGLOG=/var/lib/pgsql/pgstartup.log
# Override defaults from /etc/sysconfig/pgsql if file is present
[ -f /etc/sysconfig/pgsql/${NAME} ] && . /etc/sysconfig/pgsql/${NAME}
export PGDATA
export PGPORT
Ha tobb fut, akkor meg egy szimpla masolas :)
Selinux nem kavar be? Ha engedve van, akkor ugyanazok a file_context-ek?
- A hozzászóláshoz be kell jelentkezni
~postgres/pgstartup.log
- A hozzászóláshoz be kell jelentkezni
Ha kézzel lefut, de bootkor nem, akkor két hiba lehet:
- initkor meg sem kísérlődik lefutni (megfelelő rc?.d ben benne van execute jogokkal?)
- valami van az environmentben, ami a shelledben benne van, de a scriptben amikor init alatt fut, akkor nincs
1. problémára megoldás a scriptbe rakni pl. egy touch /tmp/lefutott parancsot, ha ott van a file, akkor odáig eljutott a script
--
Gábriel Ákos
- A hozzászóláshoz be kell jelentkezni
Tudom hogy nem kozvetlen megoldas a problemadra, DE
Miert kell azert az indito scriptet piszkalni hogy a storage konyvtarat athelyezted ? ahogy fentebb irtak egyreszt meg lehet adni config parameterkent a configban, masreszt akar egy symlinket is rakhatsz a konyvtarra.
( De arra oda kell figyelni nagyon hogy mikor a data konyvtarat mozgatgatod akkor postgre tuti ne menjen...)
- A hozzászóláshoz be kell jelentkezni
Hmmm pedig ez nagyon egyszerűen szokott működni, én jóval primitívebb scriptekkel is simán megoldottam ezt. Valami elemi lépés maradt ki, biztos hogy nem a gyári script indul? Megvolt a chkconfig --del és a chkconfig -add parancs a régi/új scriptre? Scriptbe rakj be egy logger parancsot, hogy lásd, hogy egyáltalán az hívódik-e meg.
- A hozzászóláshoz be kell jelentkezni
set -X az init script elejere es irasd ki vhova, ott latni fogod mi a stajsz.
- A hozzászóláshoz be kell jelentkezni
Az nem lehet, hogy nincs a postgresql szervernek az általad megadott könyvtárhoz joga? Szerintem daemonként illetve manuálisan indítva más lesz a SELinux kontextus. A jelenség alapján kifejezetten a SELinux környékén néznék körül. Mondjuk hülye vagyok hozzá, de ez nem gátol meg abban, hogy ötleteljek. ;)
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Fedorán ilyesmit látok:
ls -dZ /var/lib/pgsql/
drwx------. postgres postgres system_u:object_r:postgresql_db_t:s0 /var/lib/pgsql/
Az az erős gyanúm, a /opt/pgsql
alkönyvtár SELinux címkéit hasonlóképp jó volna rekurzívan átírni. És még az sem kizárt, hogy ez is kevés lesz.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Ha "kezzel" inditva elindul (es logban sem latsz semmi errort/warningot) akkor valami olyan lehet esetleg hogy a boot folyamat alatt a psql indulas olyankor kezdodik amikor meg nem kene, CenTOS init.d verziot nem ismerem, jol be van allitva az rc.d ben a sorrend ?
Nekem olyan volt pl. hogy postgresql confban ugy volt belove par mem/cache merete parameter amihez kellett nehagy kernel opcio, esetleg azt tudom elkepzelni hogy ezeket valami beallitja de csak miutan psql init.d script lefutna.
De szerintem valami sokkal egyszerubb gond lesz, pl. amit feljebb irtak -> postgresql usernek van full joga DATA konyvtarhoz ?
- A hozzászóláshoz be kell jelentkezni
A SELinuxot én annyira nem gyanúsítanám. Ha az akasztja meg a folyamatot, akkor az megakasztaná akkor is, ha kézből indítjuk a postgerst. Azt se feledjük: a SELinux naplóz - tehát ha bármit megakadályoz, akkor annak a logban nyoma van. Már pedig arról volt szó, hogy a logban nincs semmilyen nyom.
Ezen a ponton én is az indító script debugolását követném el, a fentebb is írt set -X beállítással.
- A hozzászóláshoz be kell jelentkezni
Nos, azért írtam meg a szriptet én, mert a gyári hiába írtam át a PGDATA stb változókat nem indul el.
Boot-kor látszik, hogy elindulna a saját indítóm is, mert kiírja, hogy megpróbálja elindítani.
Az environment ellenőrzés jó ötlet, kipróbálom, miként a SeLinux -ot is kikpcsolom boot-kor. (Bár a SeLinux elvileg nincs telepítve, de kitudhassa).
- A hozzászóláshoz be kell jelentkezni
Ha a SELinux ki van kapcsolva, akkor nem szóltam, ugyanakkor a "gyári" init scriptek ilyenek:
system_u:object_r:initrc_exec_t:s0
A sajátra gondolom nem adtál efféle labelt, s ez máris indokolhatja, a saját miért működik. Tegyük hozzá, az érvelésem nyilván csak bekapcsolt SELinux mellett értelmes.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Azert irtam fentebb szukszavuan hogy ~postgres/pgstartup.log mert ebben talalhatoak a postgres elinditasakor keletkezo uzenetek. Erdemes megnezni a tartalmat, no meg az idopontjat is, nehogy egy 'tavalyrol ottmaradt' file-t nezegess. A PGDATA valtozo valoszinuleg a ~postgres/.bash_profile -ban van beallitva, es a 'su-login-kor' jut ervenyre.
centos-t kozelrol meg nem lattam, de rhel-ben igy mukodik.
- A hozzászóláshoz be kell jelentkezni
köszönöm hétfőn utána járok.
- A hozzászóláshoz be kell jelentkezni
Már nem azért, de Te nem megoldottad, hanem megkerülted a problémát. Pedig írtam, merre kellene körülnézned.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Teljesen igazad van, de telepítéskor azért nem kértem a SELINUX-ból mert eddig csak problémám volt vele. Valóban nem megoldottam, hanem megkerültem, pontosabban működésre bírtam.
Kicsit bele ásom (majd) magam ebbe a SELINUX történetbe és meglabellelem a megfelelő könyvtárakat.
DE: semmilyen tool nincs fenn hozzá a masinán, így azt is telepíteni kell.
Egyébként meg mit sem ér a SELINUX, ha parancs sorból másként viselkedik mint boot-kor, hiszen így a támadások ellen mit sem ér.
Ha átadod a tudásod neked attól még nem lesz kevesebb belőle..
- A hozzászóláshoz be kell jelentkezni