使用版本为:MYSQL5.1 存储引擎:INNODB客户反映最近无法查询出2011年1月至3月的3个月内的任何数据,
我要求他把Data目录发送给我之后,使用MySQL Query Browser查看发现确实不存在1-3月的数据,
但,我使用记事本打开ibdata1文件时,发现里面存在2011年1月至3月的记录,
我是怎么判断确实存在的呢? 因为表中有一个字符串形式的日期字段,用记事本打开时,发现有存在1-3月的日期,这样断定。
1)数据为什么丢失(除了人为删除还会有什么情况)?
2)有无恢复的方法?如何做?MYSQL不是很懂,各位大大救急,限制只能给100分,可加分!

解决方案 »

  1.   

    1)数据为什么丢失(除了人为删除还会有什么情况)?
    是否打开BINLOG日志?如果是人为删除的话,在日志里会记录DELETE语句。
    MYSQL不管什么情况下都不会自动去删除你的记录的,这个可以放心。2)有无恢复的方法?如何做?
    把BINLOG里的1-3月的INSERT语句都取出来,执行就可以了如果你没有打开BINLOG,那么就棘手了。
      

  2.   

    貌似无BINLOG,ib_logfile0,ib_logfile1是传说中的BINLOG,zuoxingyu大侠
      

  3.   

    贴出你的这个参数看看
    你说的那2个不是BINLOG日志mysql> show variables like '%log_bin%';
    +---------------------------------+-------+
    | Variable_name                   | Value |
    +---------------------------------+-------+
    | log_bin                         | ON    |
    | log_bin_trust_function_creators | OFF   |
    | log_bin_trust_routine_creators  | OFF   |
    | sql_log_bin                     | ON    |
    +---------------------------------+-------+
    4 rows in set (0.00 sec)mysql>
      

  4.   

    没有备份、日志 比较麻烦,INNODB的表不能直接COPY,
    你将IBDATA及LOG文件COPY到你的机器上,看看能否启动MYSQL[mysqld]
     innodb_force_recovery = 1ORmysqld_safe  --innodb_force_recovery=009 --user=mysql
    从1到6都试试
      

  5.   

    mysql> show variables like '%log_bin%';
    +---------------------------------+-------+
    | Variable_name                   | Value |
    +---------------------------------+-------+
    | log_bin                         | OFF   |
    | log_bin_trust_function_creators | OFF   |
    | log_bin_trust_routine_creators  | OFF   |
    | sql_log_bin                     | ON    |
    +---------------------------------+-------+
    4 rows in set (0.00 sec)mysql>
      

  6.   

    找找DATA目录下有没有binlog.0000003这种样式的问题,但愿你有。