Восстановление базы данных MySQL из физических файлов

StackOverflow https://stackoverflow.com/questions/484750

  •  20-08-2019
  •  | 
  •  

Вопрос

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

клиент.frm
клиент.MYD
клиент.МОЙ

но еще примерно на 20 столов больше.

Обычно я использую mysqldump или аналогичный инструмент, чтобы получить все в 1 SQL-файле, так как же работать с этими типами файлов?

Это было полезно?

Решение

Таблица MySQL MyISAM - это комбинация трех файлов:

  • Файл FRM - это определение таблицы.
  • MYD-файл - это место, где хранятся фактические данные.
  • Файл MYI - это место, где хранятся индексы, созданные в таблице.

Вы должны иметь возможность восстановить их, скопировав в свою папку базы данных (в Linux по умолчанию используется /var/lib/mysql/)

Вы должны сделать это, пока сервер не запущен.

Другие советы

Из ответа @Vicent я уже восстанавливаю базу данных MySQL, как показано ниже:

Шаг 1.Завершение работы сервера Mysql

Шаг 2.Скопируйте базу данных в вашу папку базы данных (в Linux расположение по умолчанию - /var/lib/mysql).Сохраните то же имя базы данных и то же имя базы данных в режиме mysql.

sudo cp -rf   /mnt/ubuntu_426/var/lib/mysql/database1 /var/lib/mysql/

Шаг 3:Измените свой собственный и измените режим папки:

sudo chown -R mysql:mysql /var/lib/mysql/database1
sudo chmod -R 660 /var/lib/mysql/database1
sudo chown  mysql:mysql /var/lib/mysql/database1 
sudo chmod 700 /var/lib/mysql/database1

Шаг 4:Скопируйте ibdata1 в папку вашей базы данных

sudo cp /mnt/ubuntu_426/var/lib/mysql/ibdata1 /var/lib/mysql/

sudo chown mysql:mysql /var/lib/mysql/ibdata1

Шаг 5:скопируйте файлы ib_logfile0 и ib_logfile1 в папку вашей базы данных.

sudo cp /mnt/ubuntu_426/var/lib/mysql/ib_logfile0 /var/lib/mysql/

sudo cp /mnt/ubuntu_426/var/lib/mysql/ib_logfile1 /var/lib/mysql/

Помните, измените собственный и измените корневой каталог этих файлов:

sudo chown -R mysql:mysql /var/lib/mysql/ib_logfile0

sudo chown -R mysql:mysql /var/lib/mysql/ib_logfile1

или

sudo chown -R mysql:mysql /var/lib/mysql

Шаг 6 (необязательно):Мой сайт имеет конфигурацию для хранения файлов в определенном месте, затем я точно копирую их в соответствующее место.

Шаг 7:Запустите свой сервер Mysql.Все возвращайтесь и наслаждайтесь этим.

Вот и все.

Смотрите больше информации по адресу: https://biolinh.wordpress.com/2017/04/01/restoring-mysql-database-from-physical-files-debianubuntu/

У меня такая же проблема, но база данных не была успешно восстановлена на основе приведенных выше инструкций.

Я получил только восстановленные папки базы данных mysql из моей ОС Ubuntu.Моя проблема заключается в том, как восстановить мою базу данных с помощью этой нечитаемой папки данных mysql.Теперь я снова переключаюсь на ОС win7 для среды разработки.

* ПРИМЕЧАНИЕ У меня есть существующий сервер базы данных, работающий в win7, и мне нужно всего лишь несколько файлов базы данных для извлечения из восстановленных файлов.Чтобы успешно восстановить файлы базы данных из ОС Ubuntu, мне нужно обновить новый установленный сервер базы данных mysql той же версии из ОС Ubuntu в моей ОС win7, чтобы восстановить все на этом старом сервере базы данных.

  1. Создайте другой новый сервер базы данных mysql той же версии из восстановленных файлов.

  2. Остановите сервер mysql

  3. скопируйте восстановленную папку и вставьте в (C:\ProgramData\MySQL\MySQL Сервер 5.5\data) база данных mysql сохранена.

  4. скопируйте файл ibdata1, расположенный в папке с установленным Linux mysql, и вставьте его в (C:\ProgramData\MySQL\MySQL Server 5.5\data).Чуть больше исправьте существующий или сделайте резервную копию перед заменой.

  5. запустите сервер mysql и проверьте, успешно ли вы восстановили файлы базы данных.

  6. Чтобы использовать восстановленную базу данных на моем используемом в настоящее время сервере mysql просто экспортируйте восстановленную базу данных и импортируйте ее на мой существующий сервер mysql .

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

Если вы восстанавливаете папку, не забудьте передать файлы в mysql:mysql

chown -R mysql:mysql /var/lib/mysql-data

в противном случае вы будете получать ошибки при попытке удалить базу данных или добавить новый столбец и т.д..

и перезапустите MySQL

service mysql restart

С MySQL 5.1 (Win7).Чтобы воссоздать DBs (InnoDbs), я заменил все содержимое следующих каталогов (параметры my.ini):

datadir="C:/ProgramData/MySQL/MySQL Server 5.1/Data/"
innodb_data_home_dir="C:/MySQL Datafiles/"

После этого я запустил службу MySQL, и все работает нормально.

Да, это так!Просто добавьте их в свою базу данных-папку (в зависимости от операционной системы ) и запустите команду, такую как "MySQL Fix Permissions".Это привело к повторному сохранению базы данных.Убедитесь также, что для файлов также установлены правильные разрешения.

Однажды я скопировал эти файлы в папку хранения базы данных для базы данных mysql, которая работала, запустил db и подождал, пока она "восстановит" файлы, затем извлек их с помощью mysqldump.

В моем случае простого удаления tc.log в /var/lib/mysql было достаточно, чтобы снова запустить mariadb / mysql.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top