mysql损坏修复
# 三、解析方案
一般修复方法参考:
# 第一种方法
建立一张新表: create table demo_bak #和原表结构一样,只是把INNODB改成了MYISAM。 把数据导进去 insert into demo_bak select * from demo; 删除掉原表: drop table demo; 注释掉 innodb_force_recovery 之后,重启。 重命名: rename table demo_bak to demo; 最后改回存储引擎: alter table demo engine = innodb
# 第二种方法
另一个方法是使用mysqldump将表格导出,然后再导回到InnoDB表中。这两种方法的结果是相同的。 备份导出(包括结构和数据): mysqldump -uroot -p123 test > test.sql 还原方法1: use test; source test.sql 还原方法2(系统命令行): mysql -uroot -p123 test < test.sql; 注意,CHECK TABLE命令在InnoDB数据库中基本上是没有用的。
# 第三种方法
1、配置my.cnf 配置innodb_force_recovery = 1或2——6几个数字,重启MySQL
2、导出数据脚本 mysqldump -uroot -p123 test > test.sql 导出SQL脚本。或者用Navicat将所有数据库/表导入到其他服务器的数据库中。 注意:这里的数据一定要备份成功。然后删除原数据库中的数据。
3、删除ib_logfile0、ib_logfile1、ibdata1 备份MySQL数据目录下的ib_logfile0、ib_logfile1、ibdata1三个文件,然后将这三个文件删除
4、配置my.cnf 将my.cnf中innodb_force_recovery = 1或2——6几个数字这行配置删除或者配置为innodb_force_recovery = 0,重启MySQL服务
5、将数据导入MySQL数据库 mysql -uroot -p123 test < test.sql; 或者用Navicat将备份的数据导入到数据库中。 此种方法下要注意的问题: 1、ib_logfile0、ib_logfile1、ibdata1这三个文件一定要先备份后删除; 2、一定要确认原数据导出成功了 3、当数据导出成功后,删除原数据库中的数据时,如果提示不能删除,可在命令行进入MySQL的数据目录,手动删除相关数据库的文件夹或者数据库文件夹下的数据表文件,前提是数据一定导出或备份成功。