Добрый день.
На моем сервере Debian 9 возникла проблема, из-за которой ОС стала недоступной. Мне удалось извлечь все необработанные файлы базы данных (/var/lib/mysql) для моего проекта, но, к сожалению, тип движка был установлен на InnoDB.
Есть ли возможность как-то восстановить базу данных? Спасибо.
решение1
Если у вас есть весь файл /var/lib/mysql
, то вам, вероятно, следует попробовать полностью заменить текущее содержимое тем, /var/lib/mysql
что у вас есть.
В зависимости от параметров mariadb/mysql некоторые или все данные innodb являются глобальными и хранятся в файлах /var/lib/mysql/ibdata1
, и /var/lib/mysql/ib_logfile
. Поэтому простого восстановления /var/lib/mysql/databasename/table*
обычно недостаточно для восстановления данных innodb.
Вы можете временно переместить текущее содержимое этого каталога в другое место, если вы уже восстановили или начали его использовать. Или, что еще лучше, временно запустите новую машину в виртуальной машине или чем-то еще, где вы можете протестировать восстановление всего /var/lib/mysql
каталога, не прерывая ничего.
После размещения старых данных /var/lib/mysql
вы сможете запустить сервер и, как можно надеяться, извлечь данные. Возможно, вам придется запустить mariadb с опциями обхода привилегий в зависимости от того, насколько заблокированы ваши привилегии. Я бы не стал продолжать это использовать, вместо этого я бы предложил вам использовать mysqldump или ваши любимые инструменты для дампа базы данных, а затем повторно импортировать ее в вашу производственную базу данных.
При перемещении назад убедитесь, что учетная запись службы mysql/mariadb (обычно mysql/mysql) владеет всеми файлами и имеет права на чтение и запись.