【紧急】人工误删除InnoDB ibdata数据如何恢复


使用rm -f ib* 删除数据文件和重做日志文件,此时mysql数据库还是可以继续工作,数据可以写入,此时千万不能把mysqld进程杀死,否则无法挽救.

先找到mysqld的进程pid netstat -ntlp | grep mysqld
查看结果 ll /proc/进程id/fd | egrep 'ib_|ibdata' ,查看10,11,4,9为要恢复的文件
关闭业务, flush tables with read lock; 让数据库只读,以便完成恢复工作
检验只读是否成功 ,让脏页尽快刷入到磁盘中 set global innodb_max_dirty_pages_pct=0;
查看binlog日志写入情况确保file和position的值没有在变化 show master status;
在查看innodb状态信息,确保脏页已经刷入磁盘 show engine innodb status\G
查看状态确保一些值是正确的
查看transactions 确保后台purge进程把undo log全部清理掉,事务id 要一致
查看insert buffer and adaptive hash index 合并插入缓存等于1
查看log 确保log sequence…,log flushed…,log checkpoint… 这三个值不在变化
查看buffer pool and memory 确保脏页数据为0
查看row operations 确保插入更新删除为0
恢复数据,把之前看到的几个文件cp到原来的目录下
修改用户属性 chown mysql:mysql ib*
重启mysql测试 (千万不要在生产环境测试)
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱吃早餐的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值