MySQL 可能会由于各种原因表空间损坏,导致 show tables 可以看到表,但 show create table 或 select 查询等操作时,提示表不存在

问题

MySQL InnoDB 引擎的表 show tables 可以看到表存在,但使用时提示表不存在,为了避免数据丢失,需要进行数据恢复。如果数据可以丢失或再次写入,可直接 drop 之后,手动删除表物理文件,并重新创建表写入数据。
这里只针对需要保留数据的情况进行恢复

前提条件

  • 数据文件ibd文件存在
  • 存在表结构备份,可以找到一模一样的create table语句
  • 这里以系统表 mysql.gtid_executed 表为例

恢复步骤

为了避免操作失误导致数据丢失,可先将对应数据文件多复制一份到临时路径
本身可以直接在业务库进行恢复,但这里为了避免恢复重要数据,导致其他不可控异常,所以新建临时库进行恢复

-- 在问题数据库创建一个临时测试库,修复完成可进行删除
create database gtid_recover;use gtid_recover
-- 创建对应异常的表,所以此操作需要存在表结构备份
CREATE TABLE `gtid_executed` (`source_uuid` char(36) NOT NULL COMMENT 'uuid of the source where the transaction was originally executed.',`interval_start` bigint(20) NOT NULL COMMENT 'First number of interval.',`interval_end` bigint(20) NOT NULL COMMENT 'Last number of interval.',PRIMARY KEY (`source_uuid`,`interval_start`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- 数据库临时表上操作
-- 丢弃该表的表空间,这步会删除 ibd 文件
ALTER TABLE gtid_executed DISCARD TABLESPACE;
-- 在机器上进行操作,将备份 ibd 文件放入表中
cp /backup_dir/gtid_executed.ibd /mysqldatadir/mysql/
chown -R mysql.mysql /mysqldatadir
-- 导入表空间
alter table gtid_executed IMPORT TABLESPACE;
-- 此时在测试库的临时表已经恢复,show create table 和 select 应该都可以正常执行-- 删除故障表,rename 到业务库中,恢复业务,这里使用的是 MySQL 系统库示例,所以 rename 到了 mysql 库
use gtid_recover
rename table gtid_executed to mysql.gtid_executed_bak;
use mysql
-- 此时drop会报错,但相关数据仍可以被删除,下步 rename 可以执行成功
drop table gtid_executed;
rename table gtid_executed_bak to gtid_executed;

改表期间数据库崩溃导致异常

如果使用临时表的方式改表,改表过程中数据库异常崩溃,此时需要先找到删除该表中间的临时表,再进行上述操作。

如果数据库存在主从架构,需执行完成后,根据主从异常报错信息处理对应主从问题即可

  1. 查找临时表名称 SQL
    SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME LIKE '%#sql%';
  2. 在物理机上,将临时表空间文件改为查询后的表名
    mv \#sql-物理机显示名称.frm \#sql-上步查询结果.frm
  3. 删除这个孤立的临时表
    drop table 第一步查询结果的临时表名
  4. 按照前面恢复步骤再重构表,恢复数据库异常

MySQL InnoDB 表不存在问题修复相关推荐

  1. MySQL InnoDB表压缩

    MySQL InnoDB表压缩 文件大小减小(可达50%以上) ==> 查询速度变快(count * 约减少20%以上时间) 如何设置mysql innodb 表的压缩: 第一,mysql的版本 ...

  2. mysql innodb表损坏_MySQL数据库INNODB表损坏修复处理过程分享

    ##状况描述 突然收到MySQL报警,从库的数据库挂了,一直在不停的重启,打开错误日志,发现有张表坏了.innodb表损坏不能通过repair table 等修复myisam的命令操作.现在记录下解决 ...

  3. mysql innodb 表数据压缩

    记得一次面试中,面试官问我是否知道表的压缩,这个时候我才知道mysql有个表压缩这么个功能,今天试用下看看表的压缩率怎么样. 这里分两个部分说明,第一部分:官方文档说明:第二部分:具体实例测试. [第 ...

  4. 查看MySQL InnoDB 表索引的高度

    在看<MySQL技术内幕:InnoDB存储引擎>B+树索引章节中看到这么一句话: 但是B+索引在数据库中有一个特点就是高扇出性,因此在数据库中,B+树的高度一般都在2-4层,也就是说查找某 ...

  5. mysql innodb表分区

    分区的一些优点包括:       1).与单个磁盘或文件系统分区相比,可以存储更多的数据.       2).对于那些已经失去保存意义的数据,通常可以通过删除与那些数据有关的分区,很容易地删除那些数据 ...

  6. MySQL Innodb表导致死锁日志情况分析与归纳

    案例描述 在定时脚本运行过程中,发现当备份表格的sql语句与删除该表部分数据的sql语句同时运行时,mysql会检测出死锁,并打印出日志. 两个sql语句如下: (1)insert into back ...

  7. mysql innodb表移植_mysql Innodb引擎独立表空间下通过复制.ibd文件快速迁移数据文件...

    假设需求:需要把库test1中的的数据迁移到test2中,并且test2中数据量特别大 硬性条件:1.mysql 使用 Innodb引擎,且开启独立表空间,2.两个库的mysql版本一致(不同版本下未 ...

  8. [InnoDB] #CORRUPT LOG RECORD FOUND#[MySQL InnoDB表空损坏,数据库无法启动]#

    1.写在前面(具体报错)信息 # MySQL Version :8.0.27 MySQL Community Server - GPL #有很多类似这样的报错,我这里截取了完整的一段 [root@zb ...

  9. mysql 扫描所有字段_select扫描mysql innodb表时,select只输出主键列,会不会扫描全表?...

    题主假定按照主键检索.我们假定是等值查询.范围查询和表遍历情形可以在文末经推导得出. primary key A set of columns-and by implication, the inde ...

最新文章

  1. leetcode算法题--分隔链表★
  2. 数据增强之图像旋转及坐标对应(附代码)
  3. RabbitMQ调试与测试工具-v1.0.1 -提供下载测试与使用
  4. mysql中用HEX和UNHEX函数处理二进制数据的导入导出
  5. SQL 语句递归查询 With AS 查找所有子节点
  6. 打印机乱码不停打印_关于东芝复合机连接打印,图文教你如何轻松连接至电脑...
  7. MongoDB 教程一: 安装和使用 (Mongodb启动命令mongod参数说明)
  8. python xrange_Python学习中的知识点(range和xrange)
  9. Java8 forEach 使用
  10. android ListView 自动滚动到最底部
  11. Arduion 底层原理之 setup函数和loop函数
  12. ecs服务器配置git_ecs安装git
  13. 进行桌面共享软件开发的市场前景如何
  14. opensatck 分布式路由模式DVR部署
  15. 控制过滤器Filter执行顺序
  16. coco数据集百度网盘下载
  17. E.03.09 China Tried to Slow Divorces by Making Couples Wait. Instead, They Rushed.
  18. 用VLC开发视频播放器/组件(两种方式:libVLC / VLC-Qt)
  19. 防热服的设计数学建模_高温作业专用服装设计各位厂家提供点解题思路 2018年全国大学生数学建模A题...
  20. 如何选择适合你的兴趣爱好(二十五),麻将

热门文章

  1. 计算机组成原理学习笔记————计算机指令,MIPS指令集,存储器操作数,数据传送指令,取数存数指令
  2. 设顺序表va中的数据元素递增有序。试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性。
  3. 剪气球串 java_气球的8种创新科学玩法,玩过3样算你牛
  4. 计算机存放程序和数据的设备是什么,计算机中用来存放程序和数据的部件是什么...
  5. 聊聊引擎底层如何实现Bloom渲染算法
  6. 第二届“中科实数杯”全国电子数据取证 wp
  7. react为什么要废弃三个生命周期?
  8. 网络收集竞争情报的技巧
  9. 数据中台技术汇 | CDP,线下零售顾客运营中台
  10. 11.2NOIP模拟赛