我已从升级Ubuntu 12.10
到Ubuntu 13.10
。一段时间后,我发现我没有导出所有MySQL数据库。其中一些失踪了。我的/var/
分区仍然有备份,但是我不能只是从上复制丢失的数据库(目录)/var/lib/mysql/
,它将无法正常工作。MySQL守护程序将无法重新启动。
我也不能用/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中的默认值。也许有充分的理由,但是到目前为止,它还没有给我做任何三明治。
旧的复制文件的方法仍然适用于MyISAM数据库,但是InnoDB具有某些功能(例如遵守ACID和更精细的锁定控件),但随之而来的代价是无法使用。
StackOverflow上的该线程对如何从文件还原InnoDB数据库提供了一些答案。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句