400-915-1135
详细

关于MySQL查看表/备份数据出现1932 Table doesn't exist in engine(MySQL重装后.MYD原始文件的恢复)

发表日期:2021-12-27 19:45:30   作者来源:超级管理员   浏览:0

运维今天把一台正在运行的服务器重装系统了(原因是阿帕奇始终运行不起来了),幸运的是运维在重装系统之前把程序备份了,然而不幸的是在重装之前没有备份对应的数据库文件。之后就是麻烦不断了。不过在这期间不幸中的万幸是,服务器的数据库和程序由公司的文件储存器每天进食备份,也就是说虽然认为没有备份下来数据库,但是在运维的服务器里面备份服务器里面还是有辈分的,正当我们去备份服务器里面查找备份的时候,发现没有SQL的文件备份,只有数据库的原始文件备份,然后重装系统之后把原来备份的数据库原始文件复制进去,结果发现出错文件不能正常打开提示如下。

111.jpg

错误提示:1932 - Table 'shop_sdwkgy.address' doesn't exist in engine

百度了一下错误提示发现如下这条信息。

前两天在备份一个公司的生产数据出现这个错误,这个错误查了下原因,如果是innodb存储引擎的话,除了

要备份数据库文加下的*.FRM,.IBD的文件话,还要复制ibdata1这个文件的类容,这个文件是一个用来构建innodb系统表空间的文件,这个文件包含了innodb表的元数据、撤销记录、修改buffer和双写buffer的,重启服务器,如果还出现错误的话,删除ib_logfile的文件,修改下my.cnf的内容增加innodb_force_recovery = 6

innodb_purge_threads = 1

以上这段文字的参考价值还是蛮大的,主要是发现文件ibdata1非常重要。将备份之前的该文件复制到现在的MySQL数据库下重启ibdata1,再去打开数据库,发现正常了。

222.jpg

至此总算是把重装系统之前的程序环境弄正常了。

QQ截图20211227195327.jpg

data目录下的 ibdata1 文件 非常重要,把重装前的  ibdata1 文件复制出来放到新的数据库下,重启MYSQL就行了,原来的数据库就能正常读取了




本文章多为网络内容整理而来,如有侵犯您的权益,请联系我们免费删除