重新安装Wamp时恢复MySQL数据库

时间:2014-08-03 00:40:56

标签: mysql wamp innodb wampserver

我正在尝试将旧数据库还原到新的Wamp安装。但是,在我这样做之前,我没有备份Mysql文件。谢天谢地,卸载没有删除所有文件,但在我的数据文件夹中我有:

1)所有数据库(As文件夹)

2)auto.cnf

旧文件夹中没有ib*个文件。是否仍然可以以某种方式恢复我的数据库?

我试图替换整个mysql5.6.17文件夹(安装之间没有版本更改),但是Wamp仍然是橙色,从不变为绿色。

如果我只替换数据文件夹,MySQL服务启动,我可以看到数据库,但不能看表。

如果我将my.ini中的路径更改为指向旧的wamp的数据文件夹,则根本无法看到旧数据库。

编辑:正在尝试一下,将数据库文件夹直接复制到新的Wamp的数据文件夹中,这样我就可以获得正确列出所有表,但表中没有实际数据,并尝试使用MySQLWorkbench查询它给出了错误:

Error Code: 1146. Table 'testdb.users' doesn't exist

编辑2:在我的数据文件夹的错误日志文件中找到了这个:

2014-08-03 06:24:46 25164 [Warning] InnoDB: Cannot open table testdb/users from the internal data dictionary of InnoDB though the .frm file for the table exists. See http://dev.mysql.com/doc/refman/5.6/en/innodb-troubleshooting.html for how you can resolve the problem.

正如我所想,这是InnoDB自己的映射问题。有没有办法手动解决这个问题?

5 个答案:

答案 0 :(得分:6)

如果您创建了一个INNODB数据库,并且未进行其他配置更改以将实际数据存储在单独的表空间中,那么该INNODB数据库的所有实际数据都将存储在\wamp\bin\mysql\mysql5.6.17\ibdata1文件中。

如果您没有旧安装中的该文件,那么您的数据将丢失。

\wamp\bin\mysql\mysql5.6.17\data\DATA_BASE_NAME\文件夹中也会有信息,数据库中的每个表都有一个.frm文件,但这基本上只是架构信息而不是实际数据。

供将来参考,InnoDB Backup and Recovery

答案 1 :(得分:3)

GOLDEN RULE:

在重大更改之前始终备份数据库(来自phpmyadmin)..最好花1分钟,而不是遇到麻烦..

如何复制data文件夹

如果要复制数据库,则INSTALLATION / mysql版本应该相同..然后将新安装的data文件夹重命名为data_my_old,所以现在可以放置备份{{1文件夹(它应包含data文件)。

答案 2 :(得分:0)

取决于innodb_file_per_table设置。

如果它关闭,则所有表都在ibdata1中。现在你有了新的ibdata1(因为你看到错误“无法从内部数据字典中打开表testdb / users”,这意味着InnoDB运行新的新字典)。这意味着现在数据位于磁盘上的某个位置。恢复非常困难,需要大量繁琐的工作。您需要获取磁盘的映像,使用stream_parser扫描它以查找InnoDB页面,然后恢复InnoDB字典,然后找到每个表的index_id,如果stream_parser发现此索引运行c_parser以从索引中提取记录。

如果innodb_file_per_table为ON并且您确实在数据库目录中看到.ibd文件,则恢复会更容易。首先,您可以尝试使用ibdconnect重新连接各个ibd文件,或使用stream_parser / c_parser从ibd文件中提取记录。

上述工具是TwinDB data recovery toolkit

的一部分

答案 3 :(得分:0)

你可以检查一下:--- default-character-set = latin1 默认自动分页= latin1_swedish_ci

在同一文件夹内的.opt文件中,这是可选文件但是告诉字符集。 目标和源字符集不匹配可能会导致问题。

答案 4 :(得分:-2)

我刚刚进行了谷歌搜索,发现了这个....

转到C:\ wamp \ bin \ mysql \ mysql5.5.24 \ data

找到名为“mysql-bin.index”的文件

将该文件重命名为“mysql-bin.index-corrupt”

重新启动服务器,它将正常工作,您的所有数据库都将离开它们。