У меня есть система, разработанная на Java Spring, которая хранит данные в базе данных MySQL, запущенной локально на Windows 10.
Вчера я запустил последнее обновление Windows, и после 2 часов работы мой компьютер завис... и с тех пор Windows не хочет запускаться, и предлагает мне переустановить Windows, с возможностью сохранить мои личные данные. Однако я думаю, что это сотрет MySQL и все данные, которые там хранятся.
У меня на той же машине запущен Linux, поэтому я пытаюсь использовать Linux для доступа к базе данных, чтобы создать ее резервную копию с помощью mysqldump.
Для этого я попытался смонтировать каталог, в котором сохраняются данные в Windows, в каталог Linux с помощью следующей команды:
sudo mount --bind '/media/guillaume/Windows/ProgramData/MySQL/MySQL Server 5.7/Data' /var/lib/mysql
Затем я перезапустил сервер mysql и открыл консоль SQL. Я мог войти в консоль SQL, используя пароль Windows (он отличается от пароля SQL в Linux), и мог вывести список всех баз данных, сохраненных на моей машине Windows.
Это когда все становится сложнее. Консоль SQL может перечислить все таблицы в базе данных, которые мне интересны, но по какой-то причине она не может запросить содержимое таблиц. Я могу перечислить все таблицы, но не могу запросить таблицы. SQL говорит мне, что такой таблицы не существует, хотя он только что перечислил ее.
У меня есть скриншот этого, опечатки нет, но сайт не позволяет мне разместить изображение...
Как решить эту проблему? Или есть более разумный способ создать дамп из расположения windows, даже если windows не запускается?
Спасибо за помощь !
решение1
Причина, по которой это не сработало, заключается в том, что я переименовал базу данных в Windows в «database_W», чтобы отличить ее от другой базы данных в Linux, которая имела то же имя и которую я восстановил из резервной копии, сделанной 2 недели назад.
Я скопировал файл Windows ProgramData на внешний диск, поэтому я скопировал эту резервную копию базы данных в свою целевую папку, и затем консоль SQL, а также моя IDE могли видеть эту исходную базу данных, все ее таблицы и все данные. Я использовал свою IDE для создания файла резервной копии (дамп).
Как отметил Ринзвинд, крайне важно регулярно выполнять резервное копирование данных, особенно перед обновлениями Windows... урок усвоен!
Итак, для восстановления данных я сделал следующее:
- Используйте Linux для доступа к данным Windows и сделайте резервную копию всех ваших данных.
- Для восстановления данных SQL вам необходимо следующее местоположение:
'/media/guillaume/Windows/ProgramData/MySQL/MySQL Server 5.7/Data'
НЕ МЕНЯЙТЕ В НЕЙ НИКАКИХ ИМЕН! - Используйте следующую команду для монтирования файла ProgramData Windows в соответствующий каталог Linux:
sudo mount --bind '/media/guillaume/Windows/ProgramData/MySQL/MySQL Server 5.7/Data' /var/lib/mysql
- Перезапустите службу SQL (я использовал эту команду: service mysql restart)
- Проверьте с помощью консоли SQL в терминале Linux, видите ли вы базы данных Windows из Linux и можете ли получить доступ к данным (используя оператор типа select * from table);
- Используйте вашу IDE для подключения к этой базе данных (используя учетные данные Windows) для создания файла дампа из IDE.