意见箱
恒创运营部门将仔细参阅您的意见和建议,必要时将通过预留邮箱与您保持联络。感谢您的支持!
意见/建议
提交建议

MySQL恢复误删除的ibd文件

来源:恒创科技 编辑:恒创科技编辑部
2023-12-21 00:18:59

目录

​​模拟误删除​​​​查看删除后数据库中表的状态​​​​恢复操作​​​​注意事项​​模拟误删除

​lsof |grep g_device_action_base.ibd​

查看当前该ibd文件对应的内存中的文件句柄

MySQL恢复误删除的ibd文件_数据库


MySQL恢复误删除的ibd文件

​ll /proc/8084/fd/35​

查看文件句柄可以看到,实际就是对文件的一个软链接

MySQL恢复误删除的ibd文件_数据库_02

​rm /data/mysql/data/demo/g_device_action_base.ibd​​​​ll /proc/8084/fd/35​

删除该文件后,fd文件句柄中显示该文件已被标记为删除状态

MySQL恢复误删除的ibd文件_ibd_03

查看删除后数据库中表的状态
-- 实际登录数据库依旧能对该表做查询
root@localhost[demo]> select * from g_device_action_base limit 1\G
*************************** 1. row ***************************
id: 185820473
uid: 779085e3ac9a32e8927099c2be506228
domain_id: LhziEhqb8WUA5zgS
machine: IOS
app_type: jw_app_thirdapp
app_id: 3e261dcf5485fb0f1c0052f838ae6779
action_time: 1595222484
action_status: 1
source: jw_app_hard
url: https://magicbox.hwwt2.com/api2/url/redirect?url=https%3A%2F%2Fomdfis.hwwt2.com%2FFIS2-OMD-Mobile%2Fapp%2Findex.html&app_id=3e261dcf5485fb0f1c0052f838ae6779&type=jw_app_thirdapp&id=3e261dcf5485fb0f1c0052f838ae6779
1 row in set (0.01 sec)

-- 也可以做数据插入操作
root@localhost[demo]> insert into g_device_action_base select null,'779085e3ac9a32e8927099c2be506228','LhziEhqb8WUA5zgS','IOS','jw_app_thirdapp','3e261dcf5485fb0f1c0052f838ae6779','1595222484',1,'jw_app_hard','https://magicbox.hwwt2.com';
Query OK, 1 row affected (0.00 sec)
Records: 1 Duplicates: 0 Warnings: 0
恢复操作
## 先登录数据库中将该表锁住,防止后续在拷贝数据时有数据变化
lock table demo.g_device_action_base read;

## 将文件句柄文件拷贝回数据目录并修改权限
cp /proc/8084/fd/35 /data/mysql/data/demo/g_device_action_base.ibd
chown mysql:mysql /data/mysql/data/demo/g_device_action_base.ibd

​恢复完成后fd文件句柄依旧是处于​​deleted`状态,需要将数据库重启,重启前可对数据库先做备份

MySQL恢复误删除的ibd文件_误删除_04

​systemctl restart mysql_3306​

MySQL恢复误删除的ibd文件_误删除_05

MySQL恢复误删除的ibd文件_ibd_06

注意事项在恢复过程中数据库一定是处于运行状态,否则/proc中MySQL的相关数据会永久清除恢复后一定记得对数据库做备份操作


上一篇: MySQL binlog 使用场景 下一篇: 如何让MySQL的表只能查,不能修改,MySQL的只读表