1.  现象

巡检时发现服务器磁盘空间不足,通过查看大文件进行筛选是发现有几个#sql开头的文件,且存在超过100G及10G以上的文件。

2. 原因

如果MySQL在一个 ALTER TABLE操作(ALGORITHM=INPLACE)的中间退出,那么可能会留下一个占用系统空间的临时表。例如,在对一张表(大表)添加索引时中途中断、磁盘不足导致异常或正在添加索引时实例被kill等等情况所致。

注意: 此类表空间文件不能直接rm -f的方式物理删除,因为该信息记录在ibdata的共享表空间里,直接删除后,后续实例重启时会出现错误。

3. 处理方法

3.1   同时存在.frm 和.ibd名称相同的文件

如果 #sql-*.ibd 和 #sql-*.frm两个文件都存在数据目录里的话,可以直接drop table。但注意删除时候表名的变化。

/* 直接删除,表名前加#mysql50  */
root@testdb 01:42:57> DROP TABLE `#mysql50##sql-ib87-856498050`;

注: #mysql50#前缀是MySQL 5.1中引入的文件名安全编码。另外,表名因不符合命名规范,想要执行该脚本需要将表名用反引号括起来。

3.2  创建新表方式删除

因为本例中没有存在.frm 和.ibd名称相同的文件的情况,因此采用创建一张与ibd表空间对应的结构(字段名及索引)一致的表,然后将frm文件拷贝为和ibd一致的文件,再进行删除。

下面处理截图中#sql-ib1516-2335726735.ibd文件,步骤如下:

a) 创建一张与#sql-ib1516-2335726735相同的表

root@testdb 08:47:35>create table company20191216 like  company;
Query OK, 0 rows affected (0.05 sec) root@testdb 08:48:59>exit
Bye

b) 拷贝为#sql-ib1516-2335726735.frm的定义文件

[root@db4 testdb]# cp -p  company20191216.frm  \#sql-ib1516-.frm

c)  删除表

因为上一步拷贝时使用-p的方式,即权限和原文件权限一致,属主及group均为mysql,因此可以直接在数据库里读取删除,如果权限不对,必须先修改文件权限。

root@testdb 08:49:54>drop table `#mysql50##sql-ib1516-2335726735`;
Query OK, 0 rows affected (6.65 sec)

此时,135G的文件就已经删掉了(其实另一个文件#sql-821_2.frm文件也一并删了)

注: 删除这种100G的表不建议直接删除,而是通过创建硬链接的方式处理。

3.3  修改frm文件名与ibd文件名一致

上一步中删除ibd文件时,其中一个frm也自动删除了。为此,尝试通过修改frm文件名和ibd文件名一致的方式处理。但要注意,由于不确定是否结构一致,修改后可能异常,但如果没有暴力处理,通常均可以成功。如下:

a)  修改frm文件名与ibd文件名一致

[root@db4 testdb]# mv \#sql-a846_2.frm  \#sql-ib1570-.frm

b) 删除表

root@testdb 01:41:06>DROP TABLE `#mysql50##sql-ib1570-121877015`;
Query OK, 0 rows affected (1.70 sec)

done!

其实还有其他的方式处理,大家可以自行测试。

参考资料:官方文档https://dev.mysql.com/doc/refman/5.7/en/innodb-troubleshooting-datadict.html

MySQL如何删除#sql开头的临时表的更多相关文章

  1. sql server创建临时表的两种写法和删除临时表

    --创建.删除临时表 --第一种方式 create table #tmp(name varchar(255),id int) --第二种方式 select count(id) as storyNum ...

  2. mysql删除sql表添加别名及删除sql的注意事项

    本文为博主原创,未经允许不得转载: 根据平常的习惯,个人会将操作的表后面添加一个别名,无论是使用还是不使用的时候,均是为了 修改还是扩展sql的时候更加安全,方便,快捷. 今天在写删除的sql时,对表 ...

  3. 浅谈MySQL中优化sql语句查询常用的30种方法 - 转载

    浅谈MySQL中优化sql语句查询常用的30种方法 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中使 ...

  4. 【MySQL】MySQL基础(SQL语句、约束、数据类型)

    数据库的基本概念 什么是数据库? 用于存储和管理数据的仓库 英文单词为:DataBase,简称DB 数据库的好处? 可以持久化存储数据 方便存储和管理数据 使用了统一的方式操作数据库 -- SQL 常 ...

  5. mysql使用基础 sql语句(一)

    csdn博文地址:mysql使用基础 sql语句(一)  点击进入 命令行输入mysql -u root -p,回车再输入密码,进入mysql. 终端命令以分号作为一条语句的结束,可分为多行输入,只需 ...

  6. mysql 查看 删除 日志操作总结(包括单独和主从mysql)

    我们可以在mysql的安装目录下看到mysql的二进制日志文件,如mysql-bin.000***等,很多人都不及时的处理,导致整个硬盘被塞满也是有可能的.这些是数据库的操作日志.它记录了我们平时使用 ...

  7. MySQL 存储过程删除大表

    1.权限问题 alter routine 编辑或删除存储过程 create routine 建立存储过程 execute 创建存储过程 2.存储过程相关的一些命令 show procedure sta ...

  8. mysql批量删除指定前缀或后缀表

    今天突然发现我们数据库中多出很多表,后缀名为"copy",预计是navicat直接拷贝导致的,然后要对这些有同样后缀名的表进行删除,假设一个一个选择会非常麻烦,表计较多,在网上找了 ...

  9. MySQL的常用SQL语句.md

    修改密码 这是常见的大家一般都要用的 首先     安装成功了打开cmd --> mysql -u root -p -->输入你的密码     修改mysql root用户密码    格式 ...

随机推荐

  1. Previous operation has not finished; run 'cleanup' if it was interrupted最简单有效的解决方法

    今天提交代码报错,看了看提示的错误,百度了一下,发现操作都比较繁琐,所以自己重新给一个最简单有效的. 有的要下载sqlite3.exe,借助它清空本地.svn\wc.db数据库文件里面的operati ...

  2. 【集训Day1 测试】装饰

    装饰(decorate) [题目描述] 一个图有 N 个结点,编号 1 至 N,有 M 条无向边,第 i 条边连接的两个结点是 Ai 和Bi,其中 Ai 和 Bi 是不同的结点.可能有多条边连接的是同 ...

  3. linux bash编程之函数和循环控制

    函数:实现独立功能的代码段 函数只有在调用时才会执行 语法一: function F_NAME{ 函数体 } 语法二: F_NAME() { 函数体 } 函数的返回值: 默认函数返回值:函数执行状态返 ...

  4. Scrapy中的反反爬、logging设置、Request参数及POST请求

    常用的反反爬策略 通常防止爬虫被反主要有以下几策略: 动态设置User-Agent(随机切换User-Agent,模拟不同用户的浏览器信息.) 禁用cookies(也就是不启用cookies midd ...

  5. .NET自动化对象映射

    对象自动映射工具是用来解决对象之间映射转换的类库,能很好地解决DTO和Model之间的相互映射赋值问题. 只要两个对象的属性具有相同名字(或者符合它规定的命名约定),对象自动映射工具就可以替我们自动在 ...

  6. 预分配——fallocate的前世今生

    最近比较懒,还是加班写点东西吧,不然过段时间又把这些整理的东西弄丢了. 写什么呢?写一些跟工作相关的吧!因为笔者从事多媒体录像相关的开发工作,因此常常涉及到优化写卡策略.提升写卡性能相关的方面的事情. ...

  7. 【日常错误】spring-boot配置文件读取不到

    最近在用spring-boot做项目时,遇到自定义的配置文件无法读取到的问题,通过在appcation.java类上定义@PropertySource(value = {"classpath ...

  8. linux下信号量可设值的函数操作

    #include <sys/types.h>#include <sys/ipc.h>#include <sys/sem.h>#include <errno.h ...

  9. 英语口语考试资料College life

    College life Early in senior high school, we longed to be enrolled in a university. Now the dream ha ...

  10. Django REST framework(DRF)

    Django REST framework(DRF) FBV与CBV CBV源码分析 Restful接口规范 DRF简单配置使用和源码解析 DRF序列化器 DRF10大接口 DRF视图集 三大组件 j ...