Невозможно получить доступ к данным MySQL - PullRequest
0 голосов
/ 05 июля 2018

Я использую AppServ, который включает в себя функции MySQL, PHP, Apache24 и phpMyAdmin.

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

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

Here you see it says the data doesn't exist but it actually does

This is a view from the directory and it all seems good I suppose

Заранее спасибо.

ПРИМЕЧАНИЕ: Процесс удаления AppServ не удаляет ваши собственные данные.

1 Ответ

0 голосов
/ 06 июля 2018

Чтобы восстановить базу данных из .frm и содержимое из .ibd Вам необходимо сделать следующее:

1) создать временную базу данных, чтобы избежать внезапной работы с другими базами данных.

CREATE DATABASE soru_sor_recover;

2) генерировать CREATE TABLE дампов из .frm файлов (отсюда вам нужно будет установить mysql-utilities );

mysqlfrm –diagnostic answers.frm >> create_table.txt
mysqlfrm –diagnostic categories.frm >> create_table.txt
mysqlfrm –diagnostic inbox.frm >> create_table.txt
mysqlfrm –diagnostic questions.frm >> create_table.txt
mysqlfrm –diagnostic users.frm >> create_table.txt

3) импорт create_table.txt с использованием графического интерфейса или просто по терминалу:

mysql -u root -p soru_sor_recover < create_table.txx

4) теперь у нас есть таблицы, но они пусты. поэтому мы должны заменить .ibd файл пустых таблиц на ibd файлы восстановления. поэтому нам нужно отбросить табличное пространство:

ALTER TABLE answers DISCARD TABLESPACE; 
ALTER TABLE categories DISCARD TABLESPACE; 
ALTER TABLE inbox DISCARD TABLESPACE; 
ALTER TABLE questions DISCARD TABLESPACE; 
ALTER TABLE users DISCARD TABLESPACE; 

5) замените .ibd файлы в папке данных и определите пользователя и группу для этих файлов:

cp *.ibd /var/lib/mysql/soru_sor_recover
chown -R mysql:mysql /var/lib/mysql/soru_sor_recover/*.ibd

6) перезапустите mysql:

/etc/init.d/mysql restart

7) включить табличные пространства, перейдите в консоль mysql:

ALTER TABLE answers IMPORT TABLESPACE; 
ALTER TABLE categories IMPORT TABLESPACE; 
ALTER TABLE inbox IMPORT TABLESPACE; 
ALTER TABLE questions IMPORT TABLESPACE; 
ALTER TABLE users IMPORT TABLESPACE; 

оригинальный источник документации здесь

...