U CentOS 6 se po upgradu může stát, že mysql ani po korektním restartu nenastartuje, a objeví se chyba:
Another MySQL daemon already running with the same unix socket.
a to i přestože databáze neběží a není vidět v processlistu. Problém je způsoben tím, že se při vypnutí databáze nesmazal socket
/var/lib/mysql/mysql.sock. Jednorázové řešení je smazat socket a databázi nastartovat znovu. Trvalé řešení je zajistit, aby se při startu kontrolovala existence socketu a odstranit ho v příladě, že není smazán. Startovací skript v
/etc/init.d/mysqld je možné upravit například takto:
- zakomentovat tyto řádky v sekci start
if
[ -S
"$socketfile"
] ; then
echo
"Another MySQL daemon already running with the same unix socket."
action $
"Starting $prog: "
/bin/false
return
1
fi
- nahradit je
if
[ -S
"$socketfile"
] && [ ! -f
"mypidfile"
] ; then
echo
"Socket existuje, ale neexistuje pidfile.
Mazu socket a startuji databazi"
rm -f
"$socketfile"
fi
(oproti prvnímu případu navíc se provádí kontrola existence souboru s PID procesu). Pokud databáze neběží a existuje socket, je smazán. Skript pak dále pokračuje ve spuštění databáze. Hlášeni na obrazovku (echo "Socket existuje, ale neexistuje pidfile.Mazu socket a startuji databazi") není nezbytné a lze smazat/zakomentovat.
Article ID: 3343, Created: February 12, 2014 at 10:25 AM, Modified: October 27, 2015 at 12:39 PM