Mysql8.0 MyISAM引擎使用.sdi/.MYD/.MYI文件恢复数据

Mysql8.0 MyISAM引擎使用.sdi/.MYD/.MYI文件恢复数据

mysql8.0以前MyISAM引擎的表是由以下三个文件组成的:

XXX.FRM     表结构文件
XXX.MYD     数据文件
XXX.MYI     索引文件

只要一张表的这三个文件存在,直接复制到msql的数据目录中,mysql是可以直接读取到这张表的,但是到了8.0,.FRM文件变成了.sdi文件,这种方法已经无法恢复数据了。

使用.sdi/.MYD/.MYI文件恢复数据

修改mysql配置文件,添加以下配置,意思是指定一个安全目录,注意这个目录必须事先建好,否则重启mysql会报错,另外为防止权限问题,最好把该目录权限设置为777:

secure_file_priv=/private/var/tmp/testdb

重启mysql,登录mysql,执行以下命令:

show variables like 'secure_file_priv';

如果显示secure_file_priv的值为/private/var/tmp/testdb(即前面设置的目录),那就说明设置成功了,如下图(如果没设置,这个值应该是NULL):

Xnip2018-12-25_01-05-36.jpg

把所有你要恢复的表的.sdi文件拷贝到/var/tmp/testdb待用,注意只拷贝.sdi文件即可,.MYD.MYI文件不用拷贝。

新建一个空数据库,我就叫它testdb吧:

create database testdb;

建好表之后,mysql数据库目录下会出现testdb目录,把所有你要恢复的表的.MYD.MYI文件拷贝到这个目录中。

登录mysql,运行以下恢复语句:

import table from '/private/var/tmp/testdb/*.sdi';

如果一切正常,表应该已经恢复了,像我这样就是因为数据库版本不对无法恢复(因为我是帮别人恢复,刚好手头的数据库版本比它的高一个版本):

Xnip2018-12-25_01-12-38.jpg

如果你们也遇到了数据库版本对不上,那只能自己去安装对应的数据库版本再来恢复了。

官方文档:IMPORT TABLE Syntax

打赏

订阅评论
提醒
guest

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

0 评论
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论x

扫码在手机查看
iPhone请用自带相机扫
安卓用UC/QQ浏览器扫

Mysql8.0 MyISAM引擎使用.sdi/.MYD/.MYI文件恢复数据