The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Проблемы запуска MySQL (Can't connect ... through socket)"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы WEB технологии (Public)
Изначальное сообщение [ Отслеживать ]

"Проблемы запуска MySQL (Can't connect ... through socket)"  
Сообщение от groover (ok) on 09-Апр-09, 11:11 
Здравствуйте.
Хронология примерно такая:
Неделю назад странным образом многократно был запущен по крону скрипт, который повесил MySQL (too many connections). Процессы были остановлены, но бд еще некоторое время выдавала ошибку большого числа подключений.

Через некоторое время, БД стала выдавать другую ошибку:
[]# mysql
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

И теперь абсолютно непонятно, что с ней делать.
Перезапустить, запустить демон не получается, в статусе говорит, что он остановлен:
[]# service mysqld restart
Stopping MySQL:                                            [FAILED]
Timeout error occurred trying to start MySQL Daemon.
Starting MySQL:                                            [FAILED]
[]# service mysqld status
mysqld is stopped

Между тем, вроде как что-то запущено:
[]# ps ax| grep mysql
17911 pts/0    Dl     0:00 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
17918 pts/0    S+     0:00 grep mysql
20554 pts/0    S     19:31 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --user=mysql

Логи:
[]# tail /var/log/mysqld.log
090409  1:54:50 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
090409  1:54:50  InnoDB: Started; log sequence number 0 181835120
090409  1:54:50 [ERROR] /usr/libexec/mysqld: Error writing file '/var/run/mysqld/mysqld.pid' (Errcode: 28)
090409  1:54:50 [ERROR] Can't start server: can't create PID file: No space left on device
090409 01:54:50 mysqld_safe Number of processes running now: 0
090409 01:54:50 mysqld_safe mysqld restarted
/usr/libexec/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
090409  1:54:51 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
090409  1:54:51  InnoDB:090409 01:54:51 mysqld_safe Number of processes running now: 0
090409 01:54:51 mysqld_safe mysqld restarted

Весь инет облазил, ничего не помогает, руки опускаются. Может кто знает, что делать?
Зарание, спасибо.

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Проблемы запуска MySQL (Can't connect ... through socket)"  
Сообщение от mikra on 09-Апр-09, 11:41 
У тебя сейчас запущено два mysql сервера плюс глючит менеджер сервисов, считая что сервис mysql остановлен. Дальнейшие ошибки могут быть следствием конкуренции двух mysql, но возможно на /var закончилось свободное место.

Сперва надо остановить оба mysql сервера, потом запустить один. Следить за ошибками и действовать по обстоятельствам. Надо искать одмина...

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Проблемы запуска MySQL (Can't connect ... through socket)"  
Сообщение от angra (ok) on 10-Апр-09, 01:33 
Это не два сервера, а сервер(mysqld) и стандартная обертка(mysqld_safe) к нему. Так что в этом отношении проблем нет. А вот состояние D(Uninterruptible sleep) для процесса mysqld это очень плохо, зачастую такие процессы не удается убить, что в данном случае и приводит к failed при попытке останова. В свою очередь уже запущенный процесс не дает возможности запустить новый, так как новый имеет те же параметры старта.
Пытайтесь убить mysqld при помощи kill -9 или экзотических сигналов. Если не получится, то в ребут. Можно конечно запустить еще одну копию указав ей другой port/socket/pid/lock, но лучше все-таки в ребут.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Проблемы запуска MySQL (Can't connect ... through socket)"  
Сообщение от groover (ok) on 10-Апр-09, 10:46 
>Это не два сервера, а сервер(mysqld) и стандартная обертка(mysqld_safe) к нему. Так
>что в этом отношении проблем нет. А вот состояние D(Uninterruptible sleep)
>для процесса mysqld это очень плохо, зачастую такие процессы не удается
>убить, что в данном случае и приводит к failed при попытке
>останова. В свою очередь уже запущенный процесс не дает возможности запустить
>новый, так как новый имеет те же параметры старта.
>Пытайтесь убить mysqld при помощи kill -9 или экзотических сигналов.
>Если не получится, то в ребут.

Не получилось, значит ребут.

Мдям-с. Ребутнул, теперь перестали грузиться страницы (видимо, сервер надо вручную запускать...), ну да ладно, без базы все равно толку никакого.
БД по прежнему не находит сокета:
[]# mysql
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

Смотрел процессы, там явно время от времени пытается стартануть mysqld.
[]# ps ax | grep mysql
3471 ?        R      0:35 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --user=mysql
31012 pts/0    S+     0:00 grep mysql
31013 ?        R      0:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --user=mysql
[]# ps ax | grep mysql
3471 ?        S      0:38 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --user=mysql
31985 ?        Sl     0:00 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
31992 pts/0    S+     0:00 grep mysql
[]# ps ax | grep mysql
3471 ?        S      0:40 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --user=mysql
32751 ?        Dl     0:00 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
32758 pts/0    S+     0:00 grep mysql

[]# ps ax | grep mysql
1483 pts/0    S+     0:00 grep mysql
3471 ?        S      0:43 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --user=mysql
[]# ps ax | grep mysql
1627 ?        Rl     0:00 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
1634 pts/0    S+     0:00 grep mysql
3471 ?        S      0:43 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --user=mysql
[]# ps ax | grep mysql
1830 pts/0    S+     0:00 grep mysql
3471 ?        R      0:44 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --user=mysql


>Можно конечно запустить еще одну копию указав
>ей другой port/socket/pid/lock

А можно поподробнее? Т.е. просто отредактировать /etc/my.cnf?

set-variable=local-infile=0
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
#old_passwords=1
max_allowed_packet=500M

[mysql.server]
user=mysql
basedir=/var/lib/mysql

[mysqld_safe]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[root@hostname31926 etc]# cat my.cnf
[mysqld]
set-variable=local-infile=0
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
#old_passwords=1
max_allowed_packet=500M

[mysql.server]
user=mysql
basedir=/var/lib/mysql

[mysqld_safe]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

UPD. Http ожил, он действительно вручную запускается... А вот мускуль работать отказывается :-(

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Проблемы запуска MySQL (Can't connect ... through socket)"  
Сообщение от angra (ok) on 10-Апр-09, 12:26 
Самое время заглянуть в /var/log/mysqld.log
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Проблемы запуска MySQL (Can't connect ... through socket)"  
Сообщение от groover (ok) on 10-Апр-09, 14:00 
Яху, она вертится!
Как и предположил mikra (за это ему, конечно, спасибо) элементарно закончилось место на var. Там лежит сайт, поэтому, видимо, загрузка какой-нибудь картинки туда стала критическим моментом. Почему я не получил об этом ни 1 сообщения с хостинга - не понятно. Удалил хлам, сразу запустился mysqld. Сейчас все робит.

Да, логи я конечно еще до того, как на форум полезть смотрел, но ничего путного так и не понял... Правда мое внимание привлекала только первая ошибка:

Повторяющаяся запись в логе:
[]# tail /var/log/mysqld.log
/usr/libexec/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
090410  4:12:04 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.

Апгрейд не запускается, говорит сокета нет.

090410  4:12:04  InnoDB: Started; log sequence number 0 181835120
090410  4:12:04 [ERROR] /usr/libexec/mysqld: Error writing file '/var/run/mysqld/mysqld.pid' (Errcode: 28)
090410  4:12:04 [ERROR] Can't start server: can't create PID file: No space left on device

А вот тут интересней, я только сейчас на эту ошибку обратил внимание. В итоге, оказалось, что места просто нет.

090410 04:12:04 mysqld_safe Number of processes running now: 0
090410 04:12:04 mysqld_safe mysqld restarted
...

Огромное вам спасибо, парни, выручили. Angra, тоже огромное спасибо, ключевым решением действительно было - еще раз лезть в логи.

P.S.
Соответственно, очередной раз убедился, что администрирование - это не мое (уж лучше баги вылавливать :-) Да, и за то, что лошка не загрызли сразу, тоже отдельное спасибо!

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру