Восстановление базы данных mysql из файлов frm и idb

Недавно я совершил огромную ошибку на своем сервере и закончил неудачной установкой и отсутствием резервных копий.
В основном у меня был plesk с несколькими сайтами wordpress, и по случайности у меня все еще был доступ к моим данным, хотя они больше не были пригодны для использования.

Вот как я восстановил свои файлы и смог получить .sql файл со структурой и данными.

Сначала извлеките данные

Итак, все мои данные mysql лежат на моем сервере в /var/lib/mysql и организованы в

  • по одной папке на имя базы данных
  • внутри каждой из этих папок файлы .frm и .idb.

Итак, давайте перенесем все на мой компьютер с помощью scp.

mkdir mysql
scp -r root@<ip>:/var/lib/mysql/* .
Войти в полноэкранный режим Выйти из полноэкранного режима

Затем, восстановим версию mysql

Чтобы иметь возможность воссоздать базы данных, нам нужно использовать ту же версию mysql/mariadb.

Для этого запустите cat /var/lib/mysql/mysql_upgrade_info на сервере.

Я получил что-то вроде 10.1.48-MariaDB.

Запуск mysql/mariadb на локальном сервере

Поскольку мы знаем точную версию, которая нам нужна, теперь мы будем использовать docker для запуска сервера mysql именно этой версии.
Итак, запустите на локальном компьютере:

docker pull mariadb:10.1.48
docker run -p 127.0.0.1:3307:3306 --name mariadbtest -e MYSQL_ROOT_PASSWORD=Password123! -d mariadb:10.1.48
Войти в полноэкранный режим Выйти из полноэкранного режима

Для этого мы запускаем docker на порт 3307 на случай, если другой сервер mysql уже запущен.

Теперь мы можем войти в базу данных, используя наш любимый mySQL explorer, для меня это Sequel Pro.

Вы можете подключиться к базе данных, используя

  • хост: 127.0.0.1
  • имя пользователя: root
  • пароль: Password123!
  • порт: 3307

🎉 Теперь у вас есть та же версия mysql, которая была на вашем сервере.

Скопируйте ваши старые базы данных на машину docker

Итак, теперь давайте перенесем каждую базу данных в docker, чтобы иметь к ней доступ:

docker cp dbname/ mariadbtest:/var/lib/mysql
Войдите в полноэкранный режим Выход из полноэкранного режима

dbname начните папку, содержащую файлы .frm и .idb.

Оттуда, если вы обновите базы данных в Sequel Pro, вы должны увидеть свою базу данных, но при попытке открыть любую таблицу возникает ошибка.

Например, таблица 'dbname.mod844_icl_string_status' не существует.

Исправьте ошибки

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

docker cp ibdata1 mariadbtest:/var/lib/mysql
Войдите в полноэкранный режим Выйти из полноэкранного режима

После этого перезапустите вашу docker-машину, и вы сможете получить доступ к своим данным с помощью Sequel Pro.

Экспорт данных

Теперь вы можете спокойно экспортировать данные в файл .sql и подумать о том, чтобы впредь всегда создавать систему резервного копирования!

Ваше здоровье

Меня зовут Мартин Ратино, я разработчик полного стека.

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

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

Оцените статью
devanswers.ru
Добавить комментарий