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

как: спасти данные из MySQL (остались только файлы на жестком диске)

После того, как мне удалось обновить мой виртуальный сервер debian с etch до lenny. (Полный текст читайте здесь: debian: обновление с etch до lenny не удается)

Теперь я потерял данные (включая все таблицы) из моей базы данных MySQL. Файлы все еще присутствуют на жестком диске, и phpMyAdmin (далее именуемый PMA) по-прежнему показывает мне все имена баз данных, но без таблиц. В базах данных mysql и information_schema все еще есть свои таблицы. Но доступ, например, mysql.user дает мне следующую ошибку:

#1017 - Can't find file: './mysql/user.frm' (errno: 13) 

Конечно (как и любой 1337 PEBKAC есть) У меня нет файла дампа mySQL. (используя F-слово несколько раз)

Кто-нибудь знает инструмент, который может восстановить потерянные данные из файловой структуры?

Заранее благодарим за любую помощь, предоставленную для решения этой проблемы уровня 8, также известной как я.

Перво-наперво: не паникуйте. Скорее всего еще не все потеряно, нужно просто разобраться, что произошло.

  • Изменился ли путь к каталогу данных MySQL во время обновления? (Я так не думаю - если мне не изменяет память, и Etch, и Lenny по умолчанию обслуживают файлы из / var / lib / mysql. Но если вы ранее изменили путь вручную, то что-то могло случиться)

  • Если вы cd в свой / var / lib / mysql, сможете ли вы найти каталог mysql и файл user.frm под ним? Если не можешь, неужели find / -iname 'user.frm' что-то вернуть?

  • Стоит отметить под / var / журнал, особенно под / вар / журнал / mysql?

Если ничего не помогает, установите еще одну установку Debian на другой компьютер (или виртуальную машину), установите там Debian Etch, скопируйте туда каталог данных MySQL и посмотрите, работает ли это. Затем запустите правильный mysqldump и восстановите это вашему новому Ленни.

РЕДАКТИРОВАТЬ: Хорошо, это просто проблема с разрешением. Я все равно оставлю здесь свой ответ на случай, если он поможет кому-то другому.

ЕСЛИ у вас есть файлы, вы сможете просматривать данные (кроме таблиц innodb). Эта ошибка обычно возникает, когда у вас есть проблема с разрешениями - попробуйте изменить файлы / var / lib / mysql на mysql: mysql и посмотрите, исправит ли он это.
chown -R mysql:mysql /var/lib/mysql

это индексные файлы, они могут быть сгенерированы ремонт mysql

Сделайте резервную копию файлов mysql и введите запрос в phpmyadmin:

REPAIR TABLE tbl_name [, tbl_name] USE_FRM;

Mysql исправит это.

Ну и пара вещей:

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

Я предполагаю, что в вашем текущем каталоге данных есть mysql/user.frm файл. Если это так, проблема в том, что новая версия MySQL ищет свои данные не в том месте. Проверьте документация по my.cnf, в частности, часть о DATADIR. Вы можете изменить каталог данных по умолчанию, чтобы он указывал на ваш старый набор файлов. Как только вы это сделаете, вы захотите запустить команду mysql_upgrade чтобы проверить свои таблицы и обновить любую структуру таблиц. См. Документацию.

Если нет mysql/user.frm файл в каталоге данных, то что-то пошло не так. Вам нужно будет снова вручную завершить установку (не переустанавливая, а только шаги после установки). Для этого запустите программу mysql_install_db. Это должно восстановить пользовательские таблицы. Обратите внимание, что вы потеряете всю информацию для аутентификации (поскольку она уже ушла, поскольку user.frm не существует).

Я пока оставлю все как есть, учитывая, что пока вы не выберете один из этих маршрутов, я ничем не могу больше помочь. Дайте мне знать, что вы выберете, и я постараюсь продолжать помогать, насколько могу.