【1】故障模拟准备环境

这里以innodb为例

【1.1】配置参数

开启独立表空间 innodb_file_per_table;

【1.2】构建测试数据

create databasetest;create table a(id int,num int);insert into a values(1,11),(2,12);

【2】故障模拟

【2.1】在业务正在运行的情况下,手动删除 test库 下的 a.frm

【2.2】删除完之后,会发生什么?

在没有执行drop table的时候,还是可以查询表,查看表结构的,执行后,就查不到了。

如上图所示可知(在业务还在跑的情况下):

无论是对于数据表的增删查改,还是数据结构的增删查改。统统失效,连 information_schema.columns 都查不到(是因为执行了drop table,虽然报错了,但是把数据字典系统表里的相关信息还是删除了)。

【3】如何彻底删除这个表

【3.1】保留这个表数据(要是真不想要了,这步也可以不用做)

cp a.ibd a_bak.ibd

【3.2】随便找个其他表的frm文件重命名成故障表的frm文件

cp test1.frm a.frm

【3.3】加上权限,如下图可以发现是root创建的

chown -R mysql:mysql /data/mysql

【3.4】查看表与表结构,然后删除表

我们可以发现已经有了,但很明显,表结构不是我们a表的结构,而是test1表结构。弄好了之后,发现我们可以删除表了!

【3.5】如果用了其他表的表结构替换会发生什么?

对B表进行了同样的操作;B表与A表代码一样。

用test1表的frm 覆盖并重命名成  b表的frm之后,查询b表居然显示的是 test1表的数据!!

b.frm 加上之后,删除表后 ,这个名称就可以重建了。

【4】恢复使用

故障前提,操作完【1】【2】

【4.1】直接在test1库恢复a表

(0)去test1库构建相同名称表

use test1;

create table a(id int,num int);

如何获取表结构?只能desc,information_schem,binlog里看看有没有,最靠谱的当然是去备份里找。

直接在test1库恢复a表。

(1)备份frm,把我们原始的 失去frm 对应idb的文件拷贝过来

(2)释放表空间

alter table a discard tablespace;

如下图所示,释放表空间,只是把idb数据清空了,frm表结构文件还在。

(3)把我们要恢复的ibd文件,重命名成a.ibd

一定要记得,权限问题;

(4)重新导入表空间

alter table a import tablespace;

至此搞定;

【4.2】在原库恢复

故障前提,操作完【1】【2】

(1)备份

cp -r a.ibd a_bak.ibd

(2)随便找个表frm 复制重命名成 a.frm,删除表

复制前,删除表

cp -r test1.frm a.frm

chown -R mysql:mysql /data/mysql

复制后,删除表

(3)重建表结构相同的a表

create table a(id int,num int);

-- 如何获取表结构? 备份、主从、binlog......

(4)销毁表空间

alter table a discard tablespace;

(5)复制备份文件成a.ibd,导入表空间

alter table a import tablespace;

成功!

思考1:可否直接替换ibd?

我建完一个同表结构新的空表之后,可不可以直接用我们需要恢复的ibd文件,替换这个ibd文件呢?

我们初始化,重新新建一个空白的a表;

(1)重建表:create table a(id int,num int);

(2)覆盖文件

(3)查看是否有数据,并没有,直接覆盖失败

结论:不可以;

思考2:没建表的情况下,可以直接用新建的frm和要恢复的ibd使用表空间导入嘛?

不可以,会报错表不存在。而后,即使你新建表也会报错。

如果需要新建,这个时候需要drop table a; 之后,才能够再次新建。

mysql没有frm文件_【1.1】mysql frm文件丢失(ibd文件丢失)相关推荐

  1. 加载八叉树索引文件_这篇 MySQL 索引和 B+Tree 讲的太通俗易懂!

    正确的创建合适的索引,是提升数据库查询性能的基础.在正式讲解之前,对后面举例中使用的表结构先简单看一下: create table user (id bigint not null comment ' ...

  2. mysql导入dat文件_从零开始学习 MySQL 系列--索引、视图、导入和导出

    前言 上篇文章我们学习了数据库和数据表操作语句,今天我们学习下数据库索引,视图,导入和导出的知识. 作为基础篇,不会涉及到关于索引和视图的高级应用和核心概念,但是基本操作大家会了解,尤其是关于索引的内 ...

  3. 删除安装的mysql数据库文件_安装/删除MySQL数据库

    安装包我会放在本文的底部,如果需要自取 MySQL的数据存储目录为data,data目录通常在C:\Documents and Settings\All Users\Application Data\ ...

  4. 怎样连接mysql文件_如何连接MYSQL数据库?

    假设您的mysql数据库资料如下: MYSQL数据库名: test MYSQL帐号:public_test1 MYSQL密码:test2 免费赠送三级域名:test.u8.1358.net MYSQL ...

  5. Linux下导出MySQL为SQL文件_在linux命令下导出导入.sql文件的方法

    本文讲述了在linux命令下导出导入.sql文件的方法.分享给大家供大家参考,具体如下: 一.导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径): 1.导出数据和表结构: ...

  6. mysql进程删除文件_完全卸载mysql 停止服务、卸载相关程序、删除注册表

    3.运行"regedit"文件,如图,打开注册表 删除注册表数据,通过regedit,删除以下几个文件[也可以在注册表里搜索mysql]:HKEY_LOCAL_MACHINE/SY ...

  7. 如何设置mysql的运行目录_如何修改mysql数据库文件的路径 | 学步园

    在网上找了好多,没有确定哪个是最终的答案,由于网站在运行中,实在不敢轻易动手,怎么奈我是个菜鸟呢!先把找到的东西简单记录一下,回头再说! 还有一个: 首先在数据库里看一下数据库里当前数据文件的存放路径 ...

  8. mysql查看数据库的日志文件_怎么查看mysql数据库的日志文件

    2017-10-16 回答 一.错误日志 错误日志在mysql数据库中很重要,它记录着mysqld启动和停止,以及服务器在运行过程中发生的任何错误的相关信息. 1.配置信息 --log-error=[ ...

  9. mysql存储音频视频文件_如何在mysql 或者 其他的数据库中存放图片 音频 视频

    root@ytt:/var/lib/mysql-files# for i in `seq 1 100`; do cp 微信图片_20190711095019.jpg "$i".jp ...

  10. mysql 复制表耗时_聊一下mysql的表复制

    1 insert...from的问题 insert - select 是很常见的在两个表之间拷贝数据的方法.需要注意,在可重复读隔离级别下,这个语句会给 select的表里扫描到的记录和间隙加读锁. ...

最新文章

  1. 设计模式(享元模式)
  2. php 企业号文本消息推送,Python如何实现微信企业号文本消息推送功能的示例
  3. CodeForces - 1373E Sum of Digits(贪心)
  4. Mysql5.1.36 autoinstall.sh
  5. 矩池云上使用Visdom可视化图像说明
  6. Hibernate的延迟加载问题
  7. 力扣-876 链表的中间结点
  8. 侠客行手游如何用电脑玩 侠客行手游PC电脑版教程
  9. 引导扇区维护工具linux,bootice引导扇区维护工具下载
  10. debian10将系统软件包和docker的软件源改成国内源
  11. python 自动玩 连连看 外挂
  12. jpa 人大金仓数据库方言_人大金仓+springboot配置
  13. 涉密计算机杀毒记录表,保密工作自检自查记录表
  14. 健身服务公司iFIT赴美上市,64亿美元估值中藏着“喜”与“忧”?
  15. 群辉docker安装树莓派镜像_群晖 Docker 安装 AriaNg+File Browser
  16. 云服务器ECS的简介
  17. E-NCAP增加黑暗场景下AEB测试,红外夜视或成主流配置
  18. 移动端多了企业还需要做seo吗
  19. matlab中根据信号和信噪比添加高斯白噪声(函数直接使用)
  20. python直方图上加正态分布线_Python直方图绘制(与标准正态分布进行比较)

热门文章

  1. Spark运行模式Local+Standalone+Yarn+mesos
  2. 一代测序+二代测序+三代测序
  3. ReSimNet: drug response similarity prediction using Siamese neural networks
  4. python笔记3(numpy数组)
  5. ccf z字形 java_第三次CCF计算机软件能力认证题目:Z字形扫描
  6. 华为什么时候开始升级鸿蒙,鸿蒙什么时候开放升级?华为又食言了,官方宣布延期到六月...
  7. 人体姿态估计--Learning Feature Pyramids for Human Pose Estimation
  8. Linux/ubuntu:Chrome报错解决: error while loading shared libraries: libnss3.so libXss.so.1 libasound.so.
  9. php mysql cms 商城,国内最常用的PHP+MySql免费CMS系统大全
  10. fedora java 开发环境_Linux(Fedora 14)下 java开发环境配置 ——jdk的安装与配置