MySQL的Innodb表恢复


一、innodb恢复方法

强制执行innodb恢复

如果你想从数据库中备份你的数据。通常,大多数获得的数据是完整的。但是,不排除你在执行SELECT * FROM tbl_name或者执行InnoDB后台操作的时候碰上了崩溃、断言。这样,就会让InnoDB前滚恢复的时候崩溃。在这种情况下,你就要用到innodb_force_recovery(innodb强制恢复)操作去强制InnoDB 数据存储引擎在防止后台操作运行的情况下启动。这样,你就能够备份你的数据库表了。例如,你可以在[mysqld]选项的下面加入如下行,然后重启服务。

[mysqld]

innodb_force_recovery= 3

 

innodb_force_recovery默认是0(平常启动不带强制恢复)。大点的数字包含所有小的数的预防措施(也就是说,例如2包含1的所有功能)。如果你备份你的表用4,只有一些崩溃表的数据会丢失,相对来说比较安全。6是最极端的,因为所有的数据库表都处在一种转入B-tree和其他数据结构的废弃状态

 

有下面非0的选项:

   innodb force recovery6种设置:

1.innodb force recovery=1,即使发现了损坏页面也继续让服务器继续运行,这个选项对于备份或者转存当前数据尤为有用
2.innodb force recovery=2
,阻止恢复主线程的运行,如果清除操作会导致服务器挂掉
3.innodb force recovery=3
,恢复后不回滚事务
4.innodb force recovery=4
,如果插入到缓冲区的合并操作会导致系统崩溃,将不会被执行
5.innodb force recovery=5
,启动数据库时,忽略撤消日志
6. innodb force recovery=6
,启动数据库时,忽略与恢复相关的前滚日志

 

 

数据库在innodb_force_recovery这个参数中一定要使用以上非零数字。作为安全的考量,当数字大于0的时候innodb不让用户使用插入、更新、删除操作。但你可以从表中select数据,然后备份他们,或者做一些DROP表或者CREATE的操作。

如果你知道那张表出了问题,你可以drop掉。你当然也可以停止一个由于失败的导入或者 ALTER TABLE操作所导致的runaway rollback。You can kill the mysqld process and set innodb_force_recovery to 3to bring the database up without the rollback, then DROP the table that iscausing the runaway rollback.

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值