Не запускается MySQL

12
<!--WEB-->
На сайте с 25.01.2009
Offline
516
3551

Вчера упал и не запускался, сообщая, что недостаточно места в разделе. Освободил место, он стартанул, но с какими-то ошибками, которые для меня выразились в том, что, например, на главных страницах пары сайтов перестали выводиться анонсы. Решил перезапустить. И всё, он упал и больше не встаёт.

На команду /etc/init.d/mysql status

отвечает: MySQL is stopped..

На команду /etc/init.d/mysql start

отвечает: Starting MySQL database server: mysqld . . . . . . . . . . . . . . failed!

На разные другие команды —

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

В каталоге '/var/run/mysqld/ пусто

Пробовал создать сокет командой mkfifo /var/run/mysqld/mysqld.sock

Не помогает.

Пытался создать и запустить отдельную копию сервера, результаты те же.

Пробовал так: dpkg-reconfigure mysql-server

Получал: Пакет mysql-server не установлен, информация о нём недоступна.

Пробовал так: dpkg-reconfigure mysql-client

Получал: Пакет mysql-client не установлен, информация о нём недоступна.

Ещё 100500 команд пробовал, ничего не помогает.

В ISP-Manager сервис отмечен, как остановленный, запустить средствами ISP-Manager тоже не удалось.

Склоняюсь к тому, что придётся переустанавливать сервер mysql, но со своим опытом администрирования (точнее, без оного) боюсь, как бы не сделать чего-то необратимого.

Что посоветуете, коллеги?

Проверяю позиции сайта в сервисе Серпхант ( https://serphunt.ru ) – быстро, качественно, доступно! Почему я не всем отвечаю ( )
baas
На сайте с 17.09.2012
Offline
162
#1

Хмм, а права верные на директории под сокет /var/run/mysqld/?

ls -al /var/run/mysqld/

Настройка BSD систем. (https://www.fryaha.ru) Знание сила, незнание Рабочая сила!
<!--WEB-->
На сайте с 25.01.2009
Offline
516
#2
baas:
Хмм, а права верные на директории под сокет /var/run/mysqld/?

У директории /var/run/mysqld/ владелец mysql, права drwxr-xr-x

Алла Рудь
На сайте с 13.08.2014
Offline
81
#3

Покажите, пожалуйста, что пишет лог мускула, он по умолчанию скорее всего будет находится в /var/lib/mysql називаться будет как-то hostname.err. Где hostname - имя Вашего сервера.

Надежный хостинг и VPS на SSD от профессионалов HyperHost (https://hyperhost.ua/)
<!--WEB-->
На сайте с 25.01.2009
Offline
516
#4
Алла Рудь:
Покажите, пожалуйста, что пишет лог мускула, он по умолчанию скорее всего будет находится в /var/lib/mysql називаться будет как-то hostname.err.

Такого файла там нет.

В my.cnf есть строка:

log-error=/var/log/mysql-errors.log

В начале этого файла есть такой фрагмент:

InnoDB: The log sequence number in ibdata files does not match

InnoDB: the log sequence number in the ib_logfiles!
151030 1:05:58 InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Restoring possible half-written data pages from the doublewrite
InnoDB: buffer...
InnoDB: Page directory corruption: supremum not pointed to
151030 1:05:58 InnoDB: Page dump in ascii and hex (16384 bytes):
len 16384; hex 00000000000000000000000000000000000000000000000000000000000000000000000000000000000; asc ;InnoDB: End of page dump
151030 1:05:58 InnoDB: Page checksum 1575996416, prior-to-4.0.14-form checksum 1371122432
InnoDB: stored checksum 0, prior-to-4.0.14-form stored checksum 0
InnoDB: Page lsn 0 0, low 4 bytes of lsn at page end 0
InnoDB: Page number (if stored to page already) 0,
InnoDB: space id (if created with >= MySQL-4.1.1 and stored already) 0
InnoDB: Page directory corruption: supremum not pointed to
151030 1:05:58 InnoDB: Page dump in ascii and hex (16384 bytes):
len 16384; hex 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000; asc ;InnoDB: End of page dump
151030 1:05:58 InnoDB: Page checksum 1575996416, prior-to-4.0.14-form checksum 1371122432
InnoDB: stored checksum 0, prior-to-4.0.14-form stored checksum 0
InnoDB: Page lsn 0 0, low 4 bytes of lsn at page end 0
InnoDB: Page number (if stored to page already) 0,
InnoDB: space id (if created with >= MySQL-4.1.1 and stored already) 0
151030 1:05:58InnoDB: Error: trying to access a stray pointer 0x80007f0e0c74bff8
InnoDB: buf pool start is at 0x7f0e0c73c000, end at 0x7f0e0cf3c000
InnoDB: Probable reason is database corruption or memory
InnoDB: corruption. If this happens in an InnoDB database recovery, see
InnoDB: http://dev.mysql.com/doc/refman/5.0/en/forcing-recovery.html
InnoDB: how to force recovery.
151030 1:05:58InnoDB: Assertion failure in thread 139698427361008 in file ./../include/buf0buf.ic line 268
InnoDB: We intentionally generate a memory trap.
InnoDB: Submit a detailed bug report to http://bugs.mysql.com.
InnoDB: If you get repeated assertion failures or crashes, even
InnoDB: immediately after the mysqld startup, there may be
InnoDB: corruption in the InnoDB tablespace. Please refer to
InnoDB: http://dev.mysql.com/doc/refman/5.0/en/forcing-recovery.html
InnoDB: about forcing recovery.
151030 1:05:58 - mysqld got signal 11;
This could be because you hit a bug. It is also possible that this binary
or one of the libraries it was linked against is corrupt, improperly built,
or misconfigured. This error can also be caused by malfunctioning hardware.
We will try our best to scrape up some info that will hopefully help diagnose
the problem, but since we have already crashed, something is definitely wrong
and this may fail.

Чёртову пропасть нулей и пробелов удалил — движок отказывался публиковать такой огромный.

Алла Рудь
На сайте с 13.08.2014
Offline
81
#5

Да, все верно, если в конфиге мускула указан путь к логу, то он будет писаться именно туда. Вообще если судить с ошибки, очень похоже на то, что побились таблицы innodb. Самым правильным решением будет полное восстановление баз с бэкапа. Пример похожей проблемы http://chepri.com/mysql-innodb-corruption-and-recovery/

https://bugs.mysql.com/bug.php?id=66933

Также советую проверить все ли в порядке с инодами df -i

Базы скорее всего побились из-за нехватки места, то есть вот той первой, описанной Вами проблеме.

pupseg
На сайте с 14.05.2010
Offline
347
#6

так же в force режиме запустить mysql , если нет бакапов, и снять дамп с тех данных, которые можно еще прочитать.

Качественная помощь в обслуживании серверов. (/ru/forum/661100) Бесплатных консультаций не даю, не помогаю, не обучаю. Минималка от 100$. Как пропатчить KDE-просьба не спрашивать. Есть форумы (http://linux.org.ru) и полезные сайты (http://www.opennet.ru/).
thunder_v
На сайте с 08.07.2009
Offline
90
#7

Если снимать с форсе, то куча данных может потеряться. Как вариант, конечно, однозначно нужно попробовать. Но все же бэкапы - наше все. Надеюсь Вы их делали ранее...

<!--WEB-->
На сайте с 25.01.2009
Offline
516
#8

Так не запускается сервер, как же я восстановлю с бэкапов…

Бэкапы-то есть.

---------- Добавлено 30.10.2015 в 12:45 ----------

pupseg:
в force режиме запустить mysql

Если это так /etc/init.d/mysql start -f

или /etc/init.d/mysql start -force

То всё равно failed

thunder_v
На сайте с 08.07.2009
Offline
90
#9

Тогда все в целом проще будет. Запускаем в форсе, удаляем текущие битые базы. Ребутимся уже без форсе, делаем рестор.

Ну и правильно подметили выше, проверьте еще раз на всякий случай диск и inodes.

Апдейт: не так. Там где выше давали ссылки (Алла), есть указание как правильно запускать форс рековери:

Steps to get it back up.

1. Stop mysqld.

2. Backup /var/lib/mysql/ib*

3. Add the following line into /etc/my.cnf

innodb_force_recovery = 4 ----- вот это надо добавить в конф мускула

4. Restart mysqld.

5. Dump all tables:# mysqldump -A > dump.sql

6. Drop all databases which need recovery.

7. Stop mysqld.

8. Remove /var/lib/mysql/ib*

9. Comment out innodb_force_recovery in /etc/my.cnf

10. Restart mysqld. Look at mysql error log. By default it should be /var/lib/mysql/server/hostname.com.err to see how it creates new ib* files.

11. Restore databases from the dump:mysql < dump.sql

Только бэкапьте даже то, что сейчас побито. Я в таких случаях для подстраховки еще делаю так (при стопнутом мускуле): cp -rp /var/lib/mysql /var/lib/mysql_bk

<!--WEB-->
На сайте с 25.01.2009
Offline
516
#10
thunder_v:
innodb_force_recovery = 4 ----- вот это надо добавить в конф мускула

И так не запустился… :(

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий