Задать вопрос
@zdrvstvt

Упал MySQL, и его не рестартануть. Что делать, чтобы поднять MySQL?

Есть сервер: CentOS 5.4. Intel Celeron Duo 2.0 GHz, HDD: 160GB, RAM: 1GB, CASE: tower.
На сервере упал MySQL и его не рестартануть.

Раньше помогала команда /etc/init.d/mysqld restart , - но сейчас не удается рестартануть:
bash-3.2# /etc/init.d/mysqld restart
Останавливается mysqld:                                    [  OK  ]
MySQL Daemon failed to start.
Запускается mysqld:                                        [ СБОЙ ]
bash-3.2#

Также не помогает команда mysql start:
bash-3.2# mysql start
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
bash-3.2#

Выполняю df -h . Результат команды df -h говорит о том, что закончилось место на жестком диске.

- Обычно в такой ситуации помогает удаление ненужных файлов из файловой системы. Соответственно в данном случае также удалил некоторые файлы (картинки), чтобы освободить место. После этого в интерфейсе консольного Midnight Commander обновляется счетчик свободного места - из Midnight Commander видно, что освободилось ~ 6 ГБ:
ca174b7668e74285aa7e40deeceb00e6.png

Но при этом результат повторного выполнения команды df -h по-прежнему почему-то говорит о том, что нет места на жестком диске:
6f135389485845beb2ac76f5cf72bdb5.png

И рестартануть MySQL снова не получается

В /var/lib/mysql в лог-файле "база_данных.err" пишет:
141017  0:20:17 InnoDB: Completed initialization of buffer pool
141017  0:20:17 InnoDB: highest supported file format is Barracuda.
141017  0:20:17  InnoDB: Waiting for the background threads to start
141017  0:20:18 InnoDB: 1.1.8 started; log sequence number 2946898241
./usr/libexec/mysqld: Error writing file '/var/log/mysql-log-slow-queries.log' (Errcode: 28)
141017  0:20:18 [ERROR] Could not use /var/log/mysql-log-slow-queries.log for logging (error 28). Turning logg
ing off for the whole duration of the MySQL server process. To turn it on again: fix the cause, shutdown the M
ySQL server and restart it.
141017  0:20:18 [ERROR] /usr/libexec/mysqld: Error writing file '/var/run/mysqld/mysqld.pid' (Errcode: 28)
141017  0:20:18 [ERROR] Can't start server: can't create PID file: No space left on device
141017 00:20:18 mysqld_safe Number of processes running now: 0
141017 00:20:18 mysqld_safe mysqld restarted
141017  0:20:18 [Note] Plugin 'FEDERATED' is disabled.
141017  0:20:18 InnoDB: The InnoDB memory heap is disabled
141017  0:20:18 InnoDB: Mutexes and rw_locks use GCC atomic builtins
141017  0:20:18 InnoDB: Compressed tables use zlib 1.2.3
141017  0:20:18 InnoDB: Using Linux native AIO
141017  0:20:18 InnoDB: Initializing buffer pool, size = 128.0M
141017  0:20:18 InnoDB: Completed initialization of buffer pool
141017  0:20:18 InnoDB: highest supported file format is Barracuda.
141017  0:20:18  InnoDB: Waiting for the background threads to start
141017  0:20:19 InnoDB: 1.1.8 started; log sequence number 2946898241
./usr/libexec/mysqld: Error writing file '/var/log/mysql-log-slow-queries.log' (Errcode: 28)
141017  0:20:19 [ERROR] Could not use /var/log/mysql-log-slow-queries.log for logging (error 28). Turning logg
ing off for the whole duration of the MySQL server process. To turn it on again: fix the cause, shutdown the M
ySQL server and restart it.
141017  0:20:19 [ERROR] /usr/libexec/mysqld: Error writing file '/var/run/mysqld/mysqld.pid' (Errcode: 28)
141017  0:20:19 [ERROR] Can't start server: can't create PID file: No space left on device
141017 00:20:19 mysqld_safe Number of processes running now: 0
141017 00:20:19 mysqld_safe mysqld restarted
141017  0:20:19 [Note] Plugin 'FEDERATED' is disabled.
141017  0:20:19 InnoDB: The InnoDB memory heap is disabled
141017  0:20:19 InnoDB: Mutexes and rw_locks use GCC atomic builtins
141017  0:20:19 InnoDB: Compressed tables use zlib 1.2.3
141017  0:20:19 InnoDB: Using Linux native AIO
141017  0:20:19 InnoDB: Initializing buffer pool, size = 128.0M
141017  0:20:19 InnoDB: Completed initialization of buffer pool
141017  0:20:19 InnoDB: highest supported file format is Barracuda.
141017  0:20:19  InnoDB: Waiting for the background threads to start

Что делать, чтобы рестартануть MySQL? и почему при попытке освободить место путем удаления файлов (раньше это всегда помогало) команда df -h показывает, что файлы как-будто не удалены (хотя папки с этими файлами пусты и Midnight Commander говорит о том, что после удаления файлов место успешно высвободилось)

Прикладываю список лог-файлов в директории /var/log. Подскажите, какие из этих логов можно удалить (так чтобы ничего не сломать):
3343a3f78b6245e4b54f69a0f957a2e7.png

Заранее благодарю за содействие в поиске решения.
  • Вопрос задан
  • 10336 просмотров
Подписаться 3 Оценить Комментировать
Решения вопроса 2
Glueon
@Glueon
DevOps
Я думаю, что MC показывает не количество свободного места, а то, сколько места было свободно минус то, что вы удалили. Поэтому вывод df -h может быть показывает то же самое.
В том числе вы могли удалить файлы, которые в данный момент используются системой. Если удалить большой лог файл, который использует Apache реально место освободится только тогда, когда вы перезагрузите Apache.
Возможно картинки чем-либо использовались или по какой-то причине залипли хенлдеры.
Также можно попробовать сделать tune2fs -m 4 /dev/sda1 но не уверен, что это сработает на рабочем разделе.
Попробуйте перемонтировать систему mount -o remount,rw /
Также можете удалить какие-либо лог-файлы из /var/log с последующей перезагрузкой соотвествующего сервиса.
Ответ написан
@zdrvstvt Автор вопроса
Помогла очистка от содержимого лог-файла mysql-log-slow-queries.log - выполнением команды:
cat /dev/null > /var/log/mysql-log-slow-queries.log , а также аналогичная очистка от содержимого нескольких других больших лог-файлов.

После очистки лог-файлов от содержимого результат команды df -h сигнализирвоал о появлении свободного места

И с помощью команды /etc/init.d/mysqld restart удалось успешно рестартануть MySQL

Спасибо @CyberUserRus , @Glueon за помощь!
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
mgyk
@mgyk
10% места может быть зарезервированно для root, но для mysql это место не доступно
Ответ написан
/dev/sda1 это ваш винт, и на нем места нет.
Вы-же судя по всему удалили картинки с примонтированного /mnt/yandex, что вообще не имело смысла, т.к. MySQL крутится у вас на диске.

В вашей схеме все что находится вне директории /mnt является Вашим диском, его и надо чистить.
По мимо логов, так-же советую обратить внимание на директорию /home либо воспользоватся командой:
cd / && du -h --max-depth=1
Ответ написан
Комментировать
@polozad
Типичная проблема - большие логи, которые удалены, вернее, количество хардлинков у которых меньше единицы. С точки зрения системы файл удалён, на деле же он может быть открыт на запись/чтение и не удалён физически. lsof +L1 покажет список таких файлов. Ну и выход из такой ситуации - только перезапуск сервиса, который держит файл.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы