当前位置:网站首页>mysql5.6(根据.ibd,.frm文件)恢复单表数据
mysql5.6(根据.ibd,.frm文件)恢复单表数据
2022-07-28 05:21:00 【ymony】
前提:
有数据被删表的.ibd文件,可以从数据库的备份文件中解压出来。然后我虚拟机上的mysql是5.6版本,看了下自己本地电脑上mysql5.5的data里貌似没有.ibd文件
步骤:
1、进入Linux虚拟机,使用service mysql stop停止mysql服务,在mysql的my.cnf下添加innodb_force_recovery=1 ,启动mysql服务
[[email protected] ~]# service mysql stop --停止mysql
[[email protected] mysql]# cd /usr/local/mysql --进入mysql目录
[[email protected] mysql]# vim my.cnf --编辑my.cnf文件
在[mysqld]下添加如下两行
innodb_force_recovery=1 #可以设置1-6
innodb_purge_thread=0 #如果上边的配置值大于1,此处就要设置为0, 否则就会出
# 现InnoDB: Waiting for the background threads to start的错误.
2、service mysql start启动数据库,使用数据库连接工具(我用的navcat数据库工具)在虚拟机上新建一个同名同编码格式的数据库,将需恢复的表的结构生成 .sql文件,在虚拟机的同名数据库中运行,就有了和原来同结构的表了。(表结构必须相同)
3、将原先的.ibd文件与原先的.frm文件解除绑定
alter table XXX(需要恢复数据的表名) discard tablespace;
4、Linux进入mysql的data文件夹下,找到对应数据库文件夹,删除需要恢复表的ibd文件(非备份的)
5、把表的 .ibd(备份的)放到第四步删除ibd的地方
6、修改ibd文件权限,执行alter table tb import tablespace;
[[email protected] ~]# chmod 777 ibd文件 --给ibd文件授权
alter table XXX(需要恢复数据的表名) import tablespace;
之后刷新数据库,看到数据就成功了
注意:记得把第一步的 innodb_force_recovery=1 那两句改回来,以免后续正常操作报错
碰到的坑:
别的资料在第3步后,可能有写关闭mysql,拷完ibd后再启动mysql,但我尝试过不行(可能和mysql版本相关,没具体研究),而且在执行完第三步后用service mysql start重启mysql时,会出现启动mysql失败,按照报错信息查资料没有解决,然后reboot重启虚拟机后开启mysql就可以正常连接
参考文章:https://www.cnblogs.com/hankyoon/p/5667884.html
边栏推荐
- CTF常见加密方式JS
- Acquisition of mental health service system based on PHP (PHP graduation design)
- Flume installation and use
- 预告来袭:【豆冰冰】发.售,现.金.抽.奖等你来拿
- (php毕业设计)基于php甘肃旅游网站管理系统获取
- Chapter 8 aggregate function
- The difference between null and undefined
- 手撸一个简单的RPC(<-_<-)
- On July 7, the national wind 24 solar terms "Xiaoshu" came!! Attachment.. cooperation.. completion.. advance.. report
- cmd和npm基础命令
猜你喜欢
随机推荐
渐进增强和优雅降级
MarsNFT :个人如何发行数字藏品?
regular expression
区分实时数据、离线数据、流式数据以及批量数据的区别
南京邮电大学CTF题目writeup (二) 含题目地址
DOM模型的相关概念和操作
第九章 子查询(重点)
Books - poor Charlie's classic
(php毕业设计)基于php学生日常行为管理系统获取
mysql多表查询
ModuleNotFoundError: No module named ‘pip‘
分布式锁-Redis实现
js-宏任务和微任务
使用pyhon封装一个定时发送邮件的工具类
raise RuntimeError(‘DataLoader worker (pid(s) {}) exited unexpectedly‘.format(pids_str))RuntimeErro
2:为什么要读写分离
Installation and use of flinkx
排序与分页,多表查询课后练习
微服务架构认知、服务治理-Eureka
Single line function, aggregate function after class exercise









