伙计们,
我遇到了一个大问题。有一台服务器装有 CRM 数据库。我可能损坏了它,不知道该怎么办。
ls /var/lib/mysql/sugarcrm/
accounts_audit.frm address_book.ibd contacts_audit.frm emails_email_addr_rel.ibd mkt_marketiery_accounts_c.frm pm_processmanagerstagetask.frm quotes.frm uni_webinars.frm
accounts_audit.ibd bugs_audit.frm
等等。当我尝试观看或进行更改时,我收到
mysql> select * from vcals limit 1;
ERROR 1146 (42S02): Table 'sugarcrm.vcals' doesn't exist
mysqld.log:
130515 11:34:02130515 11:34:02 [错误] 无法从 InnoDB 的内部数据字典中找到表 sugarcrm/vcals,尽管该表的 .frm 文件存在。也许您已删除并重新创建 InnoDB 数据文件,但忘记删除 InnoDB 表的相应 .frm 文件,或者您已将 .frm 文件移动到另一个数据库?请参阅http://dev.mysql.com/doc/refman/5.0/en/innodb-troubleshooting.html 如何解决该问题。
问题是我没有 .ibd 文件,只有 .frm。此外,我也没有 DB 的完整备份 .sql 文件。现在我导入了 5 月 9 日的 .sql,这已经是很久以前的事了。:( 我知道 .frm 不包含数据,只包含结构。
问题是:我能以某种方式修复吗?或者这个数据库副本无法修复?一般来说,如果我有 .ibd 文件,可以使用什么方法修复数据库?就我而言,我认为 5 月 9 日的备份是最好的选择。我没有出口,不是吗?
谢谢。
答案1
首先,如果文件不存在,请检查系统日志中是否存在文件系统/磁盘错误,因为这是一个非常奇怪的情况。
之后检查文件系统(停止 mysql、umount 和 fsck -f)查看是否存在错误并且 fsck 是否能够修复它们。
如果这些步骤不能解决您的问题,您可以检查二进制日志文件,也许它早于 5 月 9 日,然后您可以在此之后恢复二进制日志。