去年在Synology上安装了Part-DB,非常好用,所以往里面上传了很多元器件信息,结果随着NAS硬盘的去世,我的Part-DB的所有元器件数据也都不见了。。。一万个555~ 后来找了数据恢复中心,帮我恢复了硬盘中所有的文件,但究竟怎么恢复Part-DB里面的信息呢。这一放就是大半年,现在终于静下心,把这个问题解决一下,记录在本文。 Part-DB是一个用PHP+Mysql开发的系统,所有的元器件信息,最终都存在2个地方: Mysql数据库:各种系统和数据信息 web目录:在Part-DB里上传的各种信息 web目录的东西非常简单,找到原先Part-DB的web目录就行了。看了一下目录里面的data/media,里面的图片果然是我之前给元器件上传过的图片,哈哈。 接下来恢复数据库内容: 数据库最终的信息还是在某个文件上,一个数据库的原始文件,有frm,ibd文件,这些文件的名字都是表名,frm存放表结构,ibd里面是数据值。后来我找到了最重要的教程文章[1],大意就是:新建一个新的数据库,建一个新表,然后用原始的frm文件替换新的frm文件,然后通过查mysql的log文件,就能看到一个线索(原始frm表结构有几个字段),然后再把mysql的表的表结构字段数改成和线索中的一样,然后再用ibd文件来恢复具体的表值了。 折腾了一阵我发现mysql和mariadb的文件类型不太一样。mariadb多了一个opt,不过类似txt,没啥用,里面是数据库的编码。 但是问题出现了。我一开始找不到log文件在哪,以为就是个txt,结果了解到这个log文件是个二进制文件,我也确实找到了,但是不知道怎么查看log内容。后来查到这个文章[2],发现要用mysqlbinlog命令(在mariadb的bin目录中,是一个exe)来查看,后来又发现 log_bin没开,通过这个文章[3]开启了这个功能。 再后来发现原来不是用二进制日志来看,而是错误日志。 根据这篇文章[4],我在my.ini文件中设置了错误日志保存路径,结果再重启数据库后,用mysql workbench查询users表时,错误日志中就有数据了,哈哈。 和文章中说的一样,日志中给出了原始表中的字段数,是47列,哈哈,有戏。 2020-09-26 16:32:57 5 [Warning] InnoDB: Table part