Mysql怎样删除以“#sql-”开头的暂时表「建议收藏」

Mysql怎样删除以“#sql-”开头的暂时表

大家好,又见面了,我是全栈君。

author:skate
time:2014/09/28

 

Mysql怎样删除以“#sql-”开头的暂时表

 

现象:在重建索引后,发现Mysqlserver的磁盘空间快满了

在用例如以下命令重建索引

mysql> alter table skatetab add unique index(id, uid), drop primary key, add primary key(uid, id);

在重建索引的过程中,由于空间不足,导致Mysql server reboot,重新启动之后发现空间少了100G。于是查看是哪个文件夹占用了这100G,最后发如今数据文件夹里发现
非常多类似#sql-*.ibd暂时文件和同文件名称的#sql-*.frm。既然知道是暂时表了,那就删除吧,肯定不能直接通过rm删除了,由于在ibdata里保存字典信息和Undo信
息,数据库重新启动后会报错的。

 

删除的方法:

在alter table的过程中,假设Mysql突然crash了。就会在数据文件夹里存在一些中间表,这些中间表是以“#sql-”开头的暂时表,在你的数据文件夹里会看到
#sql-*.ibd和对应的 #sql-*.frm ,假设 #sql-*.ibd 和 #sql-*.frm两个文件都存在数据文件夹里的话,能够直接drop table。类似:

mysql> drop table `#mysql50##sql-928_76f7`;

前缀”#mysql50#“是让Mysql忽略文件名称的安全编码,这个前缀是在Mysql5.1引入的

 

由于我的数据文件夹里#sql-*.ibd 和 #sql-*.frm两个文件都存,所以直接drop就能够了。磁盘空间100多G也回收了,例如以下所看到的

mysql> drop table `#mysql50##sql-928_76f7`;
Query OK, 0 rows affected (16.28 sec)

说明:假设在数据文件夹里仅仅有#sql-*.ibd。而没有#sql-*.frm的话,就须要特殊处理
1.在还有一数据schema里创建一个和欲删除表一样的表结构(包含同样的列和索引)

mysql> create database test
mysql> create table test.tmp like  skatetab;       //仅仅复制表的结构和索引。不复制数据

2.把新创建的暂时表的.frm文件拷贝到欲删除的数据文件夹里。并改动和 ”#sql-*.ibd“一样的文件名称

shell> cp test/tmp.frm  #sql-928_76f7.frm

3.确认#sql-*.ibd 和 #sql-*.frm两个文件都存,然后直接drop,例如以下:
 
mysql> drop table `#mysql50##sql-928_76f7`;

參考:http://dev.mysql.com/doc/refman/5.5/en/innodb-troubleshooting-datadict.html

——end——

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/116499.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • SecureCRT中文乱码解决方法(6)

    SecureCRT中文乱码解决方法(6)1、重新查看会话,是否中文显示正常2、依然无法正常显示中文,可能是由于Linux系统中默认的字符编码非UTF8所致用root用户登录。输入cat/etc/sysconfig/i18n如果安装系统为中文系统,则修改【LANG=“zh_CN.UTF-8”】如果安装系统为英文系统,则修改【LANG=“en_US.UTF-8”】保存文件。断开SSH,重新登录。就正常了下面是修改…

  • Spring和SpringDataJpa整合详解

    Spring和SpringDataJpa整合详解Spring和SpringDataJpa整合详解一、概述SpringBoot操作数据库有多种方式,如JDBC直接操作:太古老了,没人愿意这样玩Mybatis插件:比较时髦,比较适合sql复杂,或者对性能要求高的应用,因为sql都是自己写的。Spring-data-jpa:使用hibernate作为实现,基本上不需要写sql,因为sql都是统一的,总是会产生多余的查询,性能上…

  • 程序员需要学数学吗?「建议收藏」

    程序员需要学数学吗?「建议收藏」程序员需要学数学吗?

  • 离散数学谓词逻辑答案_离散数学逻辑符号

    离散数学谓词逻辑答案_离散数学逻辑符号1谓词1.1引入在研究命题逻辑中,原子命题是命题演算中最基本的单位,不再对原子命题进行分解,这样会产生两大缺点:(1)不能研究命题内部的结构,成分和内部逻辑的特征;(2)也不可能表达两个原子命

  • Cesium简介「建议收藏」

    Cesium简介「建议收藏」一、Cesium介绍Cesium是国外一个基于JavaScript编写的使用WebGL的地图引擎。Cesium支持3D,2D,2.5D形式的地图展示,可以自行绘制图形,高亮区域,并提供良好的触摸支持,

  • 小米手机1亿像素跟相机(2020相机新品)

    小米集团旗下品牌Redmi再度发布多款“性价比之王”手机新品。11月26日,小米发布RedmiNote9系列的Note9Pro、Note95G和Note94G三款手机新品,三款手机价格均位于“千元档”甚至低于千元,再度成为市场上同价位机型中的“性价比之王”。对此,小米集团副总裁、中国区总裁、Redmi品牌总经理卢伟冰重申,“Redmi的想法很简单,就是为用户做好产品,然后价格卖的尽量厚道,坚持高端产品大众化,大众产品品质化。”此次小米推出的Note9Pro沿袭了之前的Note8Pro在超清

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号