mysql数据库 Data文件夹.MYD/.MYI规复还原到数据库
windows体系中的MySQL 程序崩了,但数据库文件还在,如何救回? ----把这个问题扔给ChatGPT,按gpt/baidu/google提供的办理方案操作,折腾了一天,还是没有搞定。数据规复没搞定,但也记录一下部分心得:
1、MySQL 提供了多种存储引擎,早期版本默认是MyISAM,从5.5版本开始默认InnoDB。
2、MySQL数据库每个表的数据在硬盘中都有独立的数据文件,以数据库名称作为文件夹名称,以表名称作为文件名。比方数据库"mytest"下有"users"表,那么Data目录下有mytest文件夹,文件夹有users.MYD等数据:
C:\ProgramData\MySQL\MySQL Server 8.0\data\mytest\ 目录下有
[*]users.MYD(存储数据)
[*]users.MYI(存储索引)
[*]users.frm(存储表的界说)
或
[*]users.ibd(存储数据和索引)
[*]users.frm(存储表的界说)
从 MySQL 5.7 版本开始,InnoDB 表结构信息都不再单独存储在 .frm
从 MySQL 8.0 版本开始,MyISAM 也表不再生成 .frm 文件了
3、删除表,就会直接删除对应的文件,删除库就会简单粗暴直接删除对应的文件夹(纵然文件夹中有其你手动创建的文件)
4、对于数据的规复,早期版本相对容易规复,早期版本的数据文件对各种数据规复工具比力友好,但我试了多款工具都未能规复8.0版本的数据。
5、工具集:
---- 对于用InnoDB引擎的 .ibd文件规复,github上有一个开源的python脚本 ibd2sql 貌似挺不错。
---- 对于用MyISAM引擎的 .MYD/.MYI 文件规复:有 Stellar Repair for MySQL、Recovery Toolbox for MySQL、Kernel for MySQL Database Recovery、DataNumen MySQL Repair、MySQL Recovery Tool by SysTools、Repair MySQL、MySQL Dump Recovery Tool by SoftPerfect、 EaseUS Data Recovery Wizard、ApexSQL Recover 似乎有很多,但我试几款均只能规复8.0之前的版本,无法规复我的这份文件。(参考 https://blog.csdn.net/youuzi/article/details/132159830 )
=================
对于mysql 8.0及之后的版本,默认是用 InnoDB引擎的,但这次我发现我的无论是当地开辟环境还是服务器端的生产环境都是MyISAM引擎(文件夹中是 .MYD/.MYI ),我觉得希奇,后来才发现原来是phpstudy在搞鬼。
我当地开辟环境用的是phpstudy附带的MySQL,它安装方便,又不注册windows服务,不会开机主动启动,用完制止就开释资源了。但它的设置文件中,把默认引擎改为了MyISAM。所以用Navicat连接数据库后,在GUI界面创建的表默认都是MyIsam引擎。然后从Navicat导出的sql语句也是MyIsam,把sql语句导入到服务器的MySQL就也都是MyIsam引擎了。
https://i-blog.csdnimg.cn/direct/7870b82cbeee4d80bfde56cdd42a4678.png
https://i-blog.csdnimg.cn/direct/99b9d8b767714fb9999fd33d5da49533.png
之所以提这一点,一是我在想,假如是InnoDB引擎,那么保留下来的就是.ibd文件,就可以用ibd2sql来规复了。二是在生产服务器上,不是特殊场景的话,还是勤奋能更强盛的InnoDB引擎好。
另:phpstudy安装mysql的目录是 D:/phpstudy_pro/Extensions/MySQL8.0.12/,Data文件目录是D:/phpstudy_pro/Extensions/MySQL8.0.12/data 。假如卸载MySQL8.0.12,会简单粗暴地直接把 D:/phpstudy_pro/Extensions/MySQL8.0.12/整个目录删除掉,不管里面是否有手动加进去的文件。删除数据库也是直接data目录下的对应文件夹直接简单粗暴地删除。
m
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]