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

Мне пришлось восстановить таблицы InnoDB из моей резервной копии, но mysql дает сбой

Я только что восстановил свои таблицы InnoDB из своей резервной копии (скопировал ibdata1, ib_logfile1, ib_logfile0)

Однако, когда я запускаю mysql сейчас и пытаюсь получить доступ к моему сайту с помощью таблиц InnoDB, * я получаю эти ошибки

Got error -1 from storage engine
MySQL server has gone away

и в моем / var / log / syslog у меня много сообщений вроде

Oct 19 00:21:31 vm645 mysqld: 111019  0:21:31  InnoDB: Error: page 113644 log sequence number 12 1381339343
Oct 19 00:21:31 vm645 mysqld: InnoDB: is in the future! Current system log sequence number 12 1375387790.
Oct 19 00:21:31 vm645 mysqld: InnoDB: Your database may be corrupt or you may have copied the InnoDB
Oct 19 00:21:31 vm645 mysqld: InnoDB: tablespace but not the InnoDB log files. See
Oct 19 00:21:31 vm645 mysqld: InnoDB: http://dev.mysql.com/doc/refman/5.1/en/forcing-recovery.html
Oct 19 00:21:31 vm645 mysqld: InnoDB: for more information.

и в конце я вижу

Oct 19 00:21:31 vm645 mysqld: InnoDB: Apply batch completed
Oct 19 00:21:31 vm645 mysqld: 111019  0:21:31  InnoDB: Started; log sequence number 12 1375387790
Oct 19 00:21:31 vm645 mysqld: InnoDB: !!! innodb_force_recovery is set to 4 !!!
Oct 19 00:21:31 vm645 mysqld: 111019  0:21:31 [Note] Event Scheduler: Loaded 0 events
Oct 19 00:21:31 vm645 mysqld: 111019  0:21:31 [Note] /usr/sbin/mysqld: ready for connections.
Oct 19 00:21:31 vm645 mysqld: Version: '5.1.49-3-log'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  (Debian)

Хорошо, я бы сказал, что он готов к подключению. Однако я получаю те же ошибки, что и в начале этого вопроса. Похоже, он работает, но каждый раз, когда я пытаюсь выполнить запрос к таблице InnoDB, он просто на секунду упал.

Мысли?

РЕДАКТИРОВАТЬ:

Иногда, когда я перезапускаю mysql, он показывает мне в консоли

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

и мне нужно начать заново

РЕДАКТИРОВАТЬ2:

Почему-то сейчас бросает только

Unknown table engine 'InnoDB'

Как делал бэкап? Копирование каталога mysql - очень плохая идея и не сработает. Используйте mysqldump или innobackupex.

Для этой проблемы, вероятно, она решит вашу проблему, если вы переместите свой ib_logfile [0 | 1] куда-нибудь и запустите сервер mysql. После этого я бы начал проверять, не повреждены ли мои данные в базе данных.

У меня есть резервные копии всех баз (mysqldump -p db_name > db_name.sql), полностью переустановите mysql и импортируйте мои базы данных обратно (mysql -p db_name < db_name.sql). Теперь это работает.

Боковое примечание: никогда не удаляйте /var/lib/mysql/ibdata1.