Доброго времени суток. После сбоя электропитания (и fsck соответственно) вознакла такая беда: мускул упорно не стартует.
Логи:
/var/db/mysql/mashine.err
111027 07:19:41 mysqld started
InnoDB: No valid checkpoint found.
InnoDB: If this error appears when you are creating an InnoDB database,
InnoDB: the problem may be that during an earlier attempt you managed
InnoDB: to create the InnoDB data files, but log file creation failed.
InnoDB: If that is the case, please refer to
InnoDB: http://dev.mysql.com/doc/refman/5.0/en/error-creating-innodb...
тем не менее, ps говорит вот что:
# ps -aux | grep mysql
mysql 42540 0.0 0.5 9892 1340 ?? Is 7:19AM 0:00.07 /bin/sh /usr/loc
mysql 42564 0.0 8.0 69100 19828 ?? I 7:19AM 0:01.04 /usr/local/libex
но стартовый скрипт не завершается до конца (даже через ctrl+C). Пробовал удалять файлы
ib_logfile0, ib_logfile1.ibdata1. Логи после удаления:
111027 07:27:33 mysqld started
InnoDB: The first specified data file ./ibdata1 did not exist:
InnoDB: a new database to be created!
111027 7:27:34 InnoDB: Setting file ./ibdata1 size to 10 MB
InnoDB: Database physically writes the file full: wait...
111027 7:27:35 InnoDB: Log file ./ib_logfile0 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile0 size to 5 MB
InnoDB: Database physically writes the file full: wait...
111027 7:27:35 InnoDB: Log file ./ib_logfile1 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile1 size to 5 MB
InnoDB: Database physically writes the file full: wait...
стартовый скрипт отрабатывает нормально, процессы в памяти висят:# ps -aux | grep mysql
mysql 42636 0.0 0.5 9892 1340 ?? Is 7:27AM 0:00.06 /bin/sh /usr/loc
mysql 42660 0.0 5.4 36204 13432 ?? I 7:27AM 0:01.70 /usr/local/libex
пытаемся подключится и получаем по морде розовой птицей обломинго:
# mysql
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
#ls -la / | grep tmp
drwxrwxrwx 4 root wheel 512 Oct 27 07:25 tmp
вопрос: куда копать?
> вопрос: куда копать?когда вы делали последний бекап?
грохнуть каталог данных, создать заново и загрузить дамп
df -h?
df -h
# df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/ad0s1a 496M 179M 277M 39% /
devfs 1.0K 1.0K 0B 100% /dev
/dev/ad0s1e 496M 16K 456M 0% /tmp
/dev/ad0s1f 10G 6.0G 3.3G 65% /usr
/dev/ad0s1d 989M 130M 780M 14% /var
до бэкапа не дожил: все упало до него. make reinstall не спас.
А по поводу сокета: мне тоже весьма интересно почему его нет
> # mysql
> ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)2 ENOENT -- No such file or directory
Где сокет?
> # ps -aux | grep mysqlУзнал, что в памяти сидят два процесса от юзера mysql. Неизвестно, есть ли среди них mysqld.
Что видно из ps -axw?
Подозрительная надпись -
> # mysql
> ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)Проверь, что у тебя написано в /etc/mysql/my.cnf (или где он у тебя там, /etc/my.cnf?) про socket. Обычно там что-нибудь вроде /var/run/mysqld/mysqld.sock
> вопрос: куда копать?man ps
man lsПолагаю, что командой
ls -la / | grep tmpты хотел узнать, на месте ли каталог /tmp?
>[оверквотинг удален]
> Подозрительная надпись -
>> # mysql
>> ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
> Проверь, что у тебя написано в /etc/mysql/my.cnf (или где он у тебя
> там, /etc/my.cnf?) про socket. Обычно там что-нибудь вроде /var/run/mysqld/mysqld.sock
>> вопрос: куда копать?
> man ps
> man ls
> Полагаю, что командойls -la / | grep tmpты хотел узнать,
> на месте ли каталог /tmp?
# ps -axw | grep mysql
2716 ?? Is 0:00.07 /bin/sh /usr/local/bin/mysqld_safe --defaults-extra-file=/var/db/mysql/my.cnf --user=mysql --datadir=/var
2746 ?? I 0:01.02 /usr/local/libexec/mysqld --defaults-extra-file=/var/db/mysql/my.cnf --basedir=/usr/local --datadir=/var/
2704 0 I+ 0:00.11 /bin/sh /usr/local/etc/rc.d/mysql-server onestart
2750 0 I+ 0:00.08 /usr/local/bin/mysqladmin -s --socket=/tmp/mysql.sock pingls -la / | grep tmp я не только посмотрел на месте-ли /tmp, но и права доступа на него
У вас пострадали логфайлы. Если у вас не было тяжелых транзакций в момент аварии и fsck правильно отработал - должен помочь следующий способ:/usr/local/etc/rc.d/mysql-server stop
mv /var/db/mysql/ib_logfile0 /var/db/mysql/_bad_ib_logfile0
mv /var/db/mysql/ib_logfile1 /var/db/mysql/_bad_ib_logfile1
/usr/local/etc/rc.d/mysql-server startДобавляем «innodb_force_recovery = 4» в /usr/local/etc/my.cnf
/usr/local/etc/rc.d/mysql-server start
mysqldump -u root -p dbname > /root/dbname.sql
/usr/local/etc/rc.d/mysql-server stopУбрать «innodb_force_recovery = 4» из /usr/local/etc/my.cnf
/usr/local/etc/rc.d/mysql-server start
mysql -u root --password=rootpass dbname < /root/dbanem.sql
>[оверквотинг удален]
> mv /var/db/mysql/ib_logfile0 /var/db/mysql/_bad_ib_logfile0
> mv /var/db/mysql/ib_logfile1 /var/db/mysql/_bad_ib_logfile1
> /usr/local/etc/rc.d/mysql-server start
> Добавляем «innodb_force_recovery = 4» в /usr/local/etc/my.cnf
> /usr/local/etc/rc.d/mysql-server start
> mysqldump -u root -p dbname > /root/dbname.sql
> /usr/local/etc/rc.d/mysql-server stop
> Убрать «innodb_force_recovery = 4» из /usr/local/etc/my.cnf
> /usr/local/etc/rc.d/mysql-server start
> mysql -u root --password=rootpass dbname < /root/dbanem.sqlте-же яйца, только в профиль
вопрос решился с помощью наших доблестных энергетиков: благодаря им погиб винт с целевой системой.