同事反馈说某个测试的MySQL数据库误删除了ibdata1文件,导致库启动不了,而且没做备份,能不能恢复?
如果误删除文件,但是数据库没进行过重启,只要删除的文件句柄还在系统中,就可以进行恢复,可以参考《Linux恢复误删文件的操作》。但是这套环境中,数据库进程已经被删除了,lsof未找到误删除的文件。
而且服务器无任何的备份,所以这条路关闭。
经过确认,可以不要这些数据了,能启动就行。
如果不管ibdata1,直接启动数据库,会提示如下错误,
MySQL 5.7,如果同时删除ib_logfile0、ib_logfile1,启动数据库,是可以自动创建这三个文件的,
因此针对MySQL 5.7,如果误删除ibdata1,不需要数据的前提下,可以再删除ib_logfile0、ib_logfile1,让MySQL可以自动创建这几个文件,带起数据库。
但同事用的MariaDB,删除这些文件,执行数据库启动的指令,虽然能自动创建这几个文件,但无法启动,提示如下错误,
登录数据库,说的是找不到sock,实际有这个文件,
我觉得应该比较接近答案了,但是受限于进度,还是重装了。
从这个引申出最重要的,无论什么库,建议还是做备份,无备份的库,就像是裸奔,存在各种风险。
如果您认为这篇文章有些帮助,还请不吝点下文章末尾的"点赞"和"在看",或者直接转发pyq,