使用版本为:MYSQL5.1 存储引擎:INNODB客户反映最近无法查询出2011年1月至3月的3个月内的任何数据,
我要求他把Data目录发送给我之后,使用MySQL Query Browser查看发现确实不存在1-3月的数据,
但,我使用记事本打开ibdata1文件时,发现里面存在2011年1月至3月的记录,
我是怎么判断确实存在的呢? 因为表中有一个字符串形式的日期字段,用记事本打开时,发现有存在1-3月的日期,这样断定。
1)数据为什么丢失(除了人为删除还会有什么情况)?
2)有无恢复的方法?如何做?MYSQL不是很懂,各位大大救急,限制只能给100分,可加分!
我要求他把Data目录发送给我之后,使用MySQL Query Browser查看发现确实不存在1-3月的数据,
但,我使用记事本打开ibdata1文件时,发现里面存在2011年1月至3月的记录,
我是怎么判断确实存在的呢? 因为表中有一个字符串形式的日期字段,用记事本打开时,发现有存在1-3月的日期,这样断定。
1)数据为什么丢失(除了人为删除还会有什么情况)?
2)有无恢复的方法?如何做?MYSQL不是很懂,各位大大救急,限制只能给100分,可加分!
是否打开BINLOG日志?如果是人为删除的话,在日志里会记录DELETE语句。
MYSQL不管什么情况下都不会自动去删除你的记录的,这个可以放心。2)有无恢复的方法?如何做?
把BINLOG里的1-3月的INSERT语句都取出来,执行就可以了如果你没有打开BINLOG,那么就棘手了。
你说的那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>
你将IBDATA及LOG文件COPY到你的机器上,看看能否启动MYSQL[mysqld]
innodb_force_recovery = 1ORmysqld_safe --innodb_force_recovery=009 --user=mysql
从1到6都试试
+---------------------------------+-------+
| 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>