mysql误删ibd文件
2023-09-11 14:21:08 时间
【1】前置条件
(1.1)基本信息
版本:mysql 8.0.22
(1.2)模拟 rm 删除 ibd文件
删除 test库下的 test11.ibd文件
rm /data/mysql/data/test/test11.ibd
【2】情况处理
(2.1)rm 删除 ibd 文件后的影响
以下情况依然可以》
(1)数据库中依然可以查询
(2)给表新增/删除索引—不能发现
以下情况会报错:
(1)对表进行 ALTER TABLE tbl_name ENGINE=INNODB 操作—能发现
(2)对表字段属性进行变更操作—能发现
(3)对表进行 OPTIMIZE 操作—能发现
(4)给表新增/删除字段—能发现(好像其实也可以在8.0)
(2.2)找出在内存文件系统中的该表数据文件 /proc
Linux 内核提供了一种通过 proc 文件系统,在运行时访问内核内部数据结构、改变内核设置的机制。proc 文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。
然后进入该目录下去找,/proc/'mysqld的进程id号/fd'
我们发现是有 test11.ibd文件的
(2.3)恢复ibd文件
执行cp命令,将文件拷贝到原数据目录下
在进行cp之前,要确保该表数据变更已经落盘,且没有新的操作。
cp /proc/2365/fd/41 /data/mysql/data/test/test11.ibd
# 修改文件权限
chown mysql:mysql /data/mysql/data/test/test11.ibd
(2.4)操作前后核验
# 删掉ibd文件后 ERROR 1030 (HY000): Got error 44 - 'InnoDB error' from storage engine root@localhost|test>ALTER TABLE test11 ENGINE=INNODB; ERROR 1030 (HY000): Got error 44 - 'InnoDB error' from storage engine root@localhost|test>ALTER TABLE test11 ENGINE=MYISAM; ERROR 1025 (HY000): Error on rename of './test/test11' to './test/#sql2-93d-b' (errno: 197 - Tablespace cannot be accessed) # 复制文件恢复后=》 root@localhost|test>ALTER TABLE test11 ENGINE=INNODB; Query OK, 0 rows affected (0.13 sec) Records: 0 Duplicates: 0 Warnings: 0
【参考文档】
https://blog.csdn.net/ActionTech/article/details/118723562?spm=1001.2014.3001.5501
相关文章
- 【Mysql 学习】mysqld_safe:MySQL服务器启动脚本
- 【MySql】mysql 表的常规管理
- 使用JDBC对数据库进行查询的前期准备工作,以及简单的JDBC访问MySQL数据库(Mac)
- mysql如何直接查出从1开始递增的数
- golang中使用gorm连接mysql操作
- 清空mysql的历史记录
- Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’
- Mysql备份工具比较
- MySQL中的char和varchar&mysql中varchar能存多少汉字、数字,以及varchar(100)和varchar(10)的区别
- 数据库与MySQL基本知识
- atitit.sql server2008导出导入数据库大的表格文件... oracle mysql
- mysql常用语句
- 【高可用MySQL解决方案】centos7配置mysql主从复制
- mysql中间件amoeba实现mysql读写分离
- 优化MYSQL配置文件MY.INI
- 使用datax将mysql数据同步到ES 附elasticsearchwriter插件
- ELASTIC SEARCH学习笔记(四)----与传统数据库(MYSQL)的比较
- MySQL远程连接报错2003-cant connection to mysql server on ‘IP’(10061 unknown error)
- Mysql之修改mysql的视图定义者
- golang操作mysql数据库(Go-SQL-Driver/MySQL)
- MySQL — 利用命令:获取系统当前时间、打开系统服务、Mysql命令界面快速回到之前的语句
- 【高可用MySQL解决方案】centos7配置mysql主从复制
- MySQL_10_由三个日志文件构成的日志系统(binlog+undolog+redolog)
- [ MySQL ] 使用Navicat进行MySQL数据库备份 / 还原(Part 2:备份.sql文件方式)