我从 升级Ubuntu 12.10
到Ubuntu 13.10
。一段时间后,我发现我没有导出所有 MySQL 数据库。其中一些丢失了。我仍有来自我/var/
分区的备份,但我无法直接将丢失的数据库(目录)从 复制过来/var/lib/mysql/
,这行不通。MySQL-daemon 将无法重新启动。
/var/lib/mysql/
我也无法用备份的替换整个当前目录,因此我只能导出丢失的表并将新目录移回并导入导出的表。数据库和表确实显示在 中phpMyAdmin
,但所有内容都是空的。
令人讨厌的是,守护进程在快速摆弄后将无法重新启动。MySQL 已经关闭*变成一个敏感的小女孩。当我将我的(新的、未触及的和升级后的)mysql 目录的精确副本移回时,它仍然无法重新启动,我必须apt-get install mysql-server-5.5 --reinstall
让它再次工作。
那么,有什么方法可以从备份文件中恢复数据库吗?它们就在那里,名字和数据库一模一样,文件的名字和表一模一样,非常方便。
*)这曾经有效。通常我会导出我的东西,所以上次这样做是几年前的事了,但它曾经有效。现在 MySQL 表现得像个爱哭鬼。新的并不总是更好。
/var/lib/mongodb
至少,只要合适,MongoDB 就会接收您放入的任何文件bson
。
尽管错误日志非常详细,但它并没有真正帮助我。
其中一百个:
131120 5:23:48 [错误] 尽管存在该表的 .frm 文件,但无法从 InnoDB 的内部数据字典中找到或打开表 some_database/some_table。也许您已删除并重新创建 InnoDB 数据文件,但忘记删除 InnoDB 表的相应 .frm 文件,或者您已将 .frm 文件移动到另一个数据库?或者,该表包含此版本的引擎不支持的索引。请参阅http://dev.mysql.com/doc/refman/5.5/en/innodb-troubleshooting.html 如何解决该问题。
还有一些有关 InnoDB 的其他消息我无法重现,因为我在第 n 次重新安装 mysql 时意外刷新了编辑器中的日志。
InnoDB 到底是什么?它就像是成熟而多才多艺的 MySQL 的弱小爱哭鬼弟弟或妹妹。他们在服务器 5.5 中将其设为默认设置。可能有充分的理由,但到目前为止它没有给我带来任何好处。
答案1
数据库引擎InnoDB是一个存储引擎,就像数据库管理系统是。
旧的复制文件的方法仍然适用于 MyISAM 数据库,但 InnoDB 的某些功能(如遵守 ACID 和更精细的锁定控制)的代价是不再有效。
StackOverflow 上的这个帖子有一些关于如何恢复 InnoDB 数据库来自文件。