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


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

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

но еще около 20 таблиц.

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

7 107

7 ответов:

таблица 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 OS для среды разработки.

*Примечание У меня есть существующий сервер баз данных, работающий в 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 сервер 5.5\data). Только за правую или сделайте резервную копию перед заменой.

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

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

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

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

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

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

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

service mysql restart

С MySql 5.1 (Win7). Чтобы воссоздать DBs (InnoDbs), Я заменил все содержимое следующих dirs (my.Ини параметры):

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

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

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

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