一开始用的是安装版,有一天系统坏掉了,就重装了一下系统,装完后,发现mysql不能正常使用,就覆盖安装mysql,在原来的位置重新了一下mysql,不过安装之前,我把原来的mysql整个文件目录复制了一份出来;重新安装后,发现原来的库和表都在,就是查询的时候说找不到表,网上找了蛮久关于mysql数据恢复的文章,没有成功,网上说的很多都是关于MyISAM类型的库,我记得我之前建的是Innodb,不知道有什么办法恢复数据没有?希望能有一个可操作性的指点,谢谢!

解决方案 »

  1.   

    你的  ibdata* 文件有没有复制?存储引擎为INNODB的表,它的数据是放在IBDATA* 这些文件中的。
      

  2.   

    你复制了哪些文件?MYSQL的数据全部记录在DATA目录下,然后按数据库名称又有文件夹。每个数据库文件夹里才是表结构文件,日志文件,数据文件等。如果不把DATA文件夹复制了出来,再重新安装后,只需要把DATA覆盖回去,然后重新启动MYSQL服务器,就可以恢复数据。
      

  3.   

    如果你把DATA文件夹复制了出来,再重新安装后,只需要把DATA覆盖回去,然后重新启动MYSQL服务器,就可以恢复数据
      

  4.   

    我试过,原来位置重新安装mysql后,把原来DATA目录下的目录和文件全覆盖了一边(除了ibdata1),重启后发现,库和表是有了,但是不能执行sql,报错提示表不存在!然后把ibdata1也覆盖了,重启,出现错误1067,进程意外终止;
      

  5.   

    除了ibdata1 还有ibdata1
    ib_logfile0
    ib_logfile1
      

  6.   

    ibdata1
    ib_logfile0
    ib_logfile1
    这三个都在,都覆盖了,服务启动不起来了,错误1067,进程意外终止;
      

  7.   

    你可能还得需要恢复以前的配置文件my.ini,你还记和相关的几个参数的值吗?
    比如datafile等等。
      

  8.   

    INNODB的表,要用MYSQLDUMP备份再导入,直接COPY不行
      

  9.   


    为什么会不行呢??我拷贝整个DATA目录,然后重新启动服务,这样数据库就全部过去了。
      

  10.   


    你确定你的表类型是INNODB类型么?在网上查了很多资料显示,INNODB的表恢复起来貌似没那么简单,直接copy就可以搞定期待。。
      

  11.   

    这个说明并不准确或者正确。在全数据库复制的情况直接复制是可行的。当然单表复制INNODB中的表是做不到的。但单表复制不是这个贴子楼主所面临的问题,所有不需要考虑了。直接复制datadir目录下的所有文件是可以的,这也是一种常见的备份方式。 但恢复的时候要注意。
    1. my.ini文件中参数的设置,特别是有关ibdata文件参数的设置。
    2. 备份在完整,除了ibdata1 还有其它相关文件。
      

  12.   

    我做的是复制整个DATA文件夹,不是单个的表文件。
      

  13.   


    用了一个免安装版的mysql,解压后直接运行mysql-nt.exe,可以启动;
    然后关闭服务,杀掉进程;将文件考入
    几个原来数据库的文件夹、
    ibdata1
    ib_logfile0
    ib_logfile1
    重试启动,出现错误日志:
    InnoDB: Error: log file .\ib_logfile0 is of different size 0 48234496 bytes
    InnoDB: than specified in the .cnf file 0 5242880 bytes!
    100628 21:39:51 [Note] D:\temp\mysql-5.1.6-alpha-win32\bin\mysqld-nt.exe: ready for connections.
    Version: '5.1.6-alpha-nt-max'  socket: ''  port: 3306  MySQL Community Edition (GPL)
      

  14.   

    复制整个data目录,没有处理my.ini
    出现如下错误:
    InnoDB: Error: log file .\ib_logfile0 is of different size 0 48234496 bytes
    InnoDB: than specified in the .cnf file 0 5242880 bytes!
    100628 21:47:37 [ERROR] Can't open the mysql.plugin table. Please run the mysql_install_db script to create it.
    100628 21:47:37 [Note] D:\temp\mysql-5.1.6-alpha-win32\bin\mysqld-nt.exe: ready for connections.
    Version: '5.1.6-alpha-nt-max'  socket: ''  port: 3306  MySQL Community Edition (GPL)
      

  15.   

    以上说明你的MYSQL已经正常启动了! 你应该连进去看一下。
      

  16.   

    我用原来的安装版本也已经试过了,覆盖data目录,也不行
      

  17.   

    数据库同名目录下的很多*.frm都在
      

  18.   

    显然这是由于my.ini中的datafile位置指定的不是你现在覆盖的位置。
      

  19.   


    免安装版解压后,根目录下没有叫my.ini的配置文件,都是my-large.ini、my-medium.ini等等的备用文件,我没有改名启用一个,也可以启动服务;所以我没有动my.ini; 这样的情况下,这个“my.ini中的datafile”应该配在哪里?我只是好奇问下;