У меня есть то, что я считаю поврежденной таблицей MySQL. В базе данных я вижу только .frm
файл, а не .mdi
или .mdy
для этого. Как я могу восстановить данные из этого .frm
файл?
Я считаю, что мне нужно получить данные из ibdata1
файл?
Нет данных в .frm
файл; этот файл содержит только определение таблицы. Однако, если вы не используете таблицу MyISAM, ожидается, что не будет .MYD
или .MYD
файлы, потому что они используются только для таблиц MyISAM. Вместо этого данные будут где-то еще - например, для таблиц InnoDB они будут в вашем ibdata*
файлов (или, возможно, в файле для каждой таблицы, если у вас есть file_per_table
включенный).
Файл .frm на самом деле не содержит никаких данных - это просто определение таблицы. Вы можете прочитать подробности Вот.
Используйте инструмент dbsat.
curl -s get.dbsake.net > dbsake
chmod u+x dbsake
./dbsake frmdump path/to/frm/file.frm
это выведет что-то вроде:--
-- Table structure for table `mytable`
-- Created with MySQL Version 5.7.28
--
CREATE TABLE `mytable` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(1000) DEFAULT NULL,
`url` varchar(1000) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Вариант 2
Вы также можете развернуть экземпляр песочницы mysql:
dbsake sandbox -D mysql-backup-dir/
~/sandboxes/sandbox_20200621_192450/sandbox.sh start
~/sandboxes/sandbox_20200621_192450/sandbox.sh mysql