伙计们,
我有一个大问题。有一台带有 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 [错误] 尽管表的 .frm 文件存在,但无法从 InnoDB 的内部数据字典中找到表 sugarcrm/vcals。也许你已经删除并重新创建了 InnoDB 数据文件但忘记删除 InnoDB 表对应的 .frm 文件,或者你已经将 .frm 文件移动到另一个数据库?请参阅http://dev.mysql.com/doc/refman/5.0/en/innodb-troubleshooting.html 如何解决问题。
问题是我没有 .ibd 文件,只有 .frm。另外我还没有完整备份数据库的 .sql 文件。现在我从很久以前的 5 月 9 日导入了 .sql。:( 我知道 .frm 不包含数据,仅包含结构。
问题是:我能以某种方式修复还是这个数据库副本不可修复?一般来说,如果我有 .ibd 文件,可以使用什么方法来修复数据库?就我而言,5 月 9 日备份是我认为最好的变体。我没有出口,不是吗?
谢谢。
首先,如果文件不存在,请检查系统日志中是否存在文件系统/磁盘错误,因为这是非常奇怪的情况。
之后检查文件系统(停止 mysql、umount 和 fsck -f),看看是否有错误并且 fsck 能够修复它们。
如果这些步骤不能解决您的问题,您可以检查二进制日志文件,也许它比 5 月 9 日更早,您可以在之后恢复备份二进制日志。