mysql误删除ibdata1以及日志ib_logfile*

本文详细介绍了一套针对线上业务中误删MySQL数据的恢复流程。包括:保持mysqld运行状态以维持文件系统中的被删文件,通过进程ID定位ibdata及ib_logfile文件,确保所有操作已写入磁盘后再进行文件复制与重启授权。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

假设执行了误删除操作,又是线上业务,先安心,mysql没有重启之前不会影响现有操作,mysqld在运行状态中,会保持这些文件为打开状态,即使把它们删除了,它们仍旧存在于文件系统中,mysqld仍然可以对其进行读写。

恢复
第一步:查看mysqld的进程id
可以top或者ps-ef|grep mysql都可以,每个进程在/proc/进程号下都有文件夹,假设mysql的进程号是14101
命令:ls -la /proc/14101/fd/ | grep -e ibdata -e ib_

第二步:停止mysql的一切业务
为了保证文件正常和数据一致,需要停止你们的线上业务,注意是mysql读写的业务,不是关闭mysql,然后等待mysql将之前的操作全部写入记录到磁盘。
命令(mysql里面执行):SHOW engine innodb STATUS
checkpoint age 就是 Log sequence number的值减去 Last checkpoint at的值,
如果为0,那么表示所有的page都flush到硬盘文件中了,确保线程不再执行任何操作

第三步、复制文件
cp /proc/14101/fd/3 /var/lib/mysql/ibdata1
cp /proc/14101/fd/8 /var/lib/mysql/ib_logfile0
cp /proc/14101/fd/9 /var/lib/mysql/ib_logfile1

第四步、授权重启
chown -R mysql:mysql ib*
systemctl restart mysqld

注意:本人并没有实践过,只是在网上搜索文章得时候看到了别人得博文,觉得线上可能会碰到这种问题,就跟着整理下。

转载于:https://blog.51cto.com/huangmoumou/2336036

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值