Problemi s restartanjam MySQL-a kod promjene bind-address parametra

MySQL "po defaultu" odgovara samo na konekcije s localhost-a i to iz sigurnosnih razloga ne bi trebalo mijenjati. No, ponekad nam se dogodi da zbog zahtjevnih korisnika moramo dozvoliti pristup preko mreže, barem privremeno, pa ćemo objasniti kako to učiniti, na koje probleme se prilikom toga može naići i kako ih riješiti.

U datoteci /etc/mysql/my.cnf postoji parametar bind-address koji po defaultu izgleda ovako:

bind-address = 127.0.0.1

Naš konkretni poslužitelj imao je adrese u dvije lokalne mreže 192.168.10.4 (mreža za djelatnike) i 192.168.30.4 (studentska mreža). Ako bismo bind-address parametar postavili na 0.0.0.0 riješili bismo korisnički zahtjev, ali bi MySQL poslužitelj otvorili i prema studentskoj mreži, što nam se iz sigurnosnih razloga nije svidjelo. Zato smo napravili ovako:

bind-address = 192.168.10.4 

Dodatno, datoteku /etc/hosts.allow treba preurediti da dopušta konekcije na mysql daemon s adrese problematičnog korisnika:

mysqld: 127.0.0.1 192.168.10.xyz 

Nakon ovih promjena treba restartati mysql daemon. Sve je proradilo kako treba i korisnik se mogao spajati na bazu. No, nakon nekog vremena primijetili smo povremenu nedostupnost MySQL-a i upalila se lampica za uzbunu.

Inspekcijom log datoteka ustanovili smo da se mysql daemon restarta u pravilnim vremenskim razmacima od 15 minuta (plus minus nekoliko sekundi). Nakon istraživanja primijetili smo da monit servis ima postavljen parametar set daemon 900 (a 900 sekundi je upravo 15 minuta) i tu se klupko počelo otpetljavati.

Servis monit, dakle, svakih 15 minuta provjerava da li su razni daemoni živi, odnosno prihvaćaju li konekcije na svojem portu i, ako to nije slučaj, pokušava ih restartati. U monit-ovoj konfiguracijskoj skripti za mysql daemon /etc/monit/conf.d/mysqld.conf imali smo naredbe

if failed host 127.0.0.1 port 3306 protocol mysql
                with timeout 10 seconds
                then restart

Budući naš poslužitelj više nije odgovarao na upite upućenu na adresu 127.0.0.1, monit je mislio da on ne radi i restartao ga. Dakle, adresu 127.0.0.1 treba promijeniti na 192.168.10.4 (u našem konkretnom slučaju).

No, kao što je opisano u ovom članku to ne treba raditi u datoteci /etc/monit/conf.d/mysqld.conf, već treba promijeniti predložak, odnosno datoteku /usr/share/monit-cn/mysqld.conf. Nakon učinjene promjene potrebno je restartati monit servis naredbom update-monit.d i misterioznih restartanja više nema.

Kuharice: 
Kategorije: 
Vote: 
0
No votes yet