Van egy saját programunk, amit csak és kizárólag a mysqld (jobban mondva percona) elindulása után szabadna elindítani. A saját programunkhoz szeretnénk upstart-ot használni, viszont a percona sysvinit-es. Emiatt a saját program conf-jában hiába írom, hogy „start on started mysql”, nem indul el soha a saját stuff.
Van erre valami áthidaló megoldási javaslatotok? (Azon túl persze, hogy használjunk saját programunkhoz is sysvinit-et.) Köszi!
- 2969 megtekintés
Hozzászólások
Egy workaround:
start on runlevel [2345]
exec /path/to/mytester.sh
mytester.sh releváns része:
if [ -f /var/run/mysql.pid ]
then
### INDULUNK MI IS!
else
### Még nincs Mysql
fi
- A hozzászóláshoz be kell jelentkezni
Bármennyire is nem tetszik, egyelőre talán még ez a leginkább elviselhető workaround, köszi.
- A hozzászóláshoz be kell jelentkezni
A masik megoldas, hogy a mysql init scriptjebe irod be, hogy "initctl emit mysql" miutan elinditottad vele a perconat. (Tehat a start agba valahova)
Akkor mukodni fog a megoldasod.
Ha tobbet szeretnel tudi, nezd meg az initctl man-jat.
Toni
- A hozzászóláshoz be kell jelentkezni
Ez szép megoldás, de nem biztos, hogy minden rendszeren engedi a policy a nem saját (értsd: a kolléga szoftvere) fájlokon kívüli módosítást.
--
Coding for fun. ;)
- A hozzászóláshoz be kell jelentkezni
Éppenséggel azt szeretném elkerülni, hogy a percona init scriptjébe kelljen kézzel beletúrkálni, mert egy frissítésnél csak a gond van vele.
Amúgy ezt az emit-et már néztem, konzolról ki is adtam ugyanezt a parancsot, de nem jártam sikerrel, nem indult el az ettől függő app. Ha jól értem a leírást az emit-tel eseményt tudok kiváltani, aminek át lehet adni akár tetszőleges környezeti változókat is. De azt nem igazán értem, hogy egy "emit mysql"-ből honnan tudná az upstart, hogy az azt jelenti: mysql started. Ha meg ezt jelenti akkor milyen emit kellene arra, ha leáll a mysqld?
- A hozzászóláshoz be kell jelentkezni
Nem workaround: tessék jól megírni az alkalmazást. Ha másik gépen kéne futnia, akkor hogyan oldanátok meg a feladatot? Vagy mit csinál, ha mondjuk menet közben áll le a mysql? Beszarik?
- A hozzászóláshoz be kell jelentkezni
Izolált, teljesen saját környezetben fut csak az alkalmazás, nem publikus és nem is lesz soha az. Így tehát nem kell felkészülni a "mi van ha eltér a környezet" esetre.
- A hozzászóláshoz be kell jelentkezni
mint a mellékelt ábra is mutatja
- A hozzászóláshoz be kell jelentkezni
Arra nem. Viszont ha az upstartban nincs full-featured mysql health check (baromira meglepne, ha lenne), akkor honnan lehet tudni, hogy az elindult processz valóban fogad is érdemben kapcsolatokat, nem csak úgy "futogat"?
Tehát az alkalmazásod nem lehet biztos benne, hogy valóban képes lesz kapcsolódni a mysqlhez, innentől pedig továbbra is inkorrekt, ha ezt feltételezi. Így a vége az a történetnek, hogy az alkalmazást mindenképpen fel kell készíteni arra, hogy mi van, ha nincs mysql. És akkor arról az esetről nem is beszéltünk, amikor menet közben hullik el a mysql...
- A hozzászóláshoz be kell jelentkezni
script
for i in `seq 1 30` ; do
/usr/bin/mysqladmin --defaults-file="${HOME}"/debian.cnf ping && {
exec /itt/a/programom
# should not reach this line
exit 2
}
sleep 1
done
exit 1
end script
--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
- A hozzászóláshoz be kell jelentkezni
Köszi, ez is jó workaround!
- A hozzászóláshoz be kell jelentkezni
Még az jutott eszembe, hogy esetleg csinálok én egy upstart-os configot a perconának, és nem a sysvinit-re bízom a mysqld elindítását.
- A hozzászóláshoz be kell jelentkezni
Ez az igazi megoldas! En is ezt csinalom, csak nem mertem javasolni, mert nem tudtam, hogy mennyire ismered az upstartot. Sok szerencset hozza!
Toni
- A hozzászóláshoz be kell jelentkezni
Igazából valószínűleg nem olyan nagy macera, mert az ubuntuval érkező oracle mysql-server csomag szállít upstart-os job leírót is, annak kb. nulla átalakítással mennie kellene perconával is.
- A hozzászóláshoz be kell jelentkezni
Ez lett a végleges megoldás, ubuntus mysql-server-5.6 csomagból átvettem az upstart job fájlt és 100%-ban elsőre működött.
- A hozzászóláshoz be kell jelentkezni