从数据文件恢复MySQL数据库(从Windows到Unix)

时间:2016-03-31 22:06:35

标签: mysql database

最近我的Windows机器出现问题,我只能登录到安全模式。因此,我无法运行Apache或MySQL。我唯一能做的就是备份MySQL数据目录。

在机器上重新安装Windows之后,我想尝试另一种(更好的)开发环境,我偶然发现了Vagrant。我设法使用VirtualBox设置并安装了Ubuntu。

在数据目录的备份中,我有:

  1. 代表每个数据库的单个文件夹
  2. 以下文件:auto.cnfib_logfile0ib_logfile1ibdata1
  3. 我拥有的数据库包含MyISAMInnoDB个数据库的组合。

    现在我想做的是将数据库恢复到MySQL。我对Unix命令不太熟悉,所以我使用FileZilla来连接到VM。然后我在Ubuntu中找到了数据目录的位置,即/var/lib/mysql

    首先,我必须更改此目录的权限,以便我可以将文件传输给它。

    我停止了mysql服务,然后复制了其中一个文件夹。然后我重新启动了mysql。这样做后我打开了phpmyadmin。我复制了我复制过的数据库,但是当我点击它时只显示了一个表(应该是4)。点击此表浏览数据会给我一个错误#1033 - incorrect information in file 'product.frm'

    另外我注意到左侧列中列出了其他3个表,但点击这些表给了我一个错误#1146 - Table 'category' doesn't exist

    我也试过复制ib个文件,但是这样做之后mysql服务就无法启动了。

    有谁知道问题是什么?这与文件来自Windows的事实有什么关系?或者我不正确地进行这个过程?

1 个答案:

答案 0 :(得分:1)

我不相信MySQL数据目录可以跨不同的操作系统移植(即,MySQL根本不能处理文件系统区分大小写的变化,以及其他问题)。您最好的选择是在Windows中恢复数据目录(“物理”转储),并使用mysqldump获取一组SQL命令(“逻辑”转储)。然后,您可以使用PHPMyAdmin的导入功能或使用shell命令导入此文件。