我正在尝试从标记为崩溃的mysql表中检索一些数据。我正在恢复机器的备份,所以我不需要担心任何事情。
当我尝试mysqldump表(我正在使用FYI - 指定我需要哪些记录)时,我收到错误:
mysqldump: Got error: 144: Table './[db]/[table]' is marked as crashed and last (automatic?) repair failed when doing LOCK TABLES
如果我使用--lock-tables = false,我会得到相同的错误(但在执行SHOW FIELDS时失败)。
如果我尝试从表中选择第一条记录,我会得到同样的错误。
如果我运行CHECK TABLE [table],我会收到以下警告/错误:
warning | 1 client is using or hasn't closed the table properly |
warning | Size of indexfile is: 1991678976 Should be: 1024 |
error | Record-count is not ok; is 30030697 Should be: 0 |
warning | Found 141967876 deleted space. Should be 0 |
warning | Found 3101578 deleted blocks Should be: 0 |
warning | Found 34721783 key parts. Should be: 0 |
error | Corrupt |
这意味着如果我做了修复表,我将丢失所有数据!那里应该有30030697条记录....
我有什么方法可以获得这些数据吗?
答案 0 :(得分:3)
要修复相关表格,请发出命令
myisamchk --recover /var/lib/mysql/DATABASENAME/TABLE_NAME.myi
(其中DATABASENAME是您正在使用的数据库的名称,TABLE_NAME是要检查的表的名称。)
如果这不能完全恢复表,你可以重新运行命令,用-safe-recover替换-recover,这更慢,更彻底。
如果在行级别锁定或写入错误(坏扇区)期间发生严重冲突,他们只会进行转储。