Назад | Перейти на главную страницу

Почему Monit не работает с моим файлом конфигурации MySQL?

Я использую собственный файл конфигурации для mysql в /etc/mysql/conf.d/myfile.cnf

Содержимое файла

[client]
port        = 3306
socket      = /var/run/mysqld/mysqld.sock

[mysqld_safe]
socket      = /var/run/mysqld/mysqld.sock
nice        = 0

[mysqld]
user        = mysql
pid-file    = /var/run/mysqld/mysqld.pid
socket      = /var/run/mysqld/mysqld.sock
port        = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir      = /tmp
language    = /usr/share/mysql/english
skip-external-locking
bind-address        = 127.0.0.1

bulk_insert_buffer_size = 8M
connect_timeout=10
interactive_timeout=50
join_buffer=1M
key_buffer=250M
max_allowed_packet=16M
max_connect_errors=10
max_connections=100
max_heap_table_size = 32M
myisam_sort_buffer_size=96M
query_cache_limit = 4M
query_cache_size = 250M
query_cache_type = 1
query_prealloc_size = 65K
query_alloc_block_size = 128K
read_buffer_size=1M
read_rnd_buffer_size=768K
#record_buffer_size=1M
#safe-show-database
#skip-innodb
#skip-locking
skip-networking
sort_buffer=1M
table_cache=4096
thread_cache_size=1024
thread_concurrency=8
tmp_table_size = 32M
wait_timeout=500
# for slow queries, comment when not used
#log-slow-queries=/var/log/mysql-slow.log
#long_query_time=1
#log-queries-not-using-indexes

[mysqld_safe]
nice = -5
open_files_limit = 8192
pid-file    = /var/run/mysqld/mysqld.pid
socket      = /var/run/mysqld/mysqld.sock



[mysqldump]
quick
max_allowed_packet = 16M
[myisamchk]
key_buffer = 64M
sort_buffer = 64M
read_buffer = 16M
write_buffer = 16M

В чем дело?

Если вы используете файл конфигурации по умолчанию для mysql, Monit работает без сбоев.

Моя система - Debian Squeeze 6.0.x и версия сервера Mysql: 5.1.66-0 + squeeze1 (Debian)

Ошибка - состояние мониторинга: «Состояние подключения не удалось» и «Время ответа порта не удалось подключиться к 127.0.0.1:3306 [ПО УМОЛЧАНИЮ через TCP]»

Моя конфигурация Monit Mysql

...
check process mysql with pidfile /var/run/mysqld/mysqld.pid
  group database
  start program = "/etc/init.d/mysql start"
  stop program = "/etc/init.d/mysql stop"
  if failed host 127.0.0.1 port 3306 then restart
  if 5 restarts within 5 cycles then timeout
...

Я предполагаю, что это эта линия

if failed host 127.0.0.1 port 3306 then restart

MySQL заблокирует хост, если он обнаружит 10 (я думаю) плохих соединений подряд. Думаю до 10-й проверки работает, потом начинает глючить. В остальном нет ничего плохого. Попробуйте исправить это так

if failed host 127.0.0.1 port 3306 protocol mysql then restart

Вам также следует запустить

mysqladmin flush-hosts

Это очистит заблокированные хосты