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——

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

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

(0)
上一篇 2022年1月20日 下午4:00
下一篇 2022年1月20日 下午5:00


相关推荐

  • 共阳极数码管

    共阳极数码管一位共阳极LED数码管共10个引脚,其中③、⑧两引脚为公共正极(该两引脚内部已连接在一起),其余8个引脚分别为七段笔画和1个小数点的负极,如图所示。两位共阴极LED数码管共18个引脚,其中⑥、⑤两引脚分别为个位和十位的公共负极,其余16个引脚分别为个位和十位的笔画与小数点的正极,如图所示七段数码管将七个笔画段组成“8”字形,能够显示“09”10个数字和“AF”6个字母,如图1…

    2022年4月4日
    1.4K
  • 最新Spring整合MyBatis详解教程

    最新Spring整合MyBatis详解教程目录1.导入相关jar包1.junit2.mybatis3.mysql4.spring相关5.aop织入6.mybatis-spring7.lombok(选用)2.回顾:建立一个Mybatis程序1.IDEA连接数据库2.编写MyBatis核心配置文件3.创建数据库表对应实体类4.编写Mapper接口5.编写Mapper.xml配置文件6.编写测试类7.给Mapper.xml添加注册8.测试运行3.spring整合方式一:1.引入spring配置文件2.使用Sprin

    2022年4月28日
    54
  • django示例_django网站模板下载

    django示例_django网站模板下载前言目前市面上有非常多的模板系统,其中最知名最好用的就是DTL和Jinja2。DTL是DjangoTemplateLanguage三个单词的缩写,也就是Django自带的模板语言。当然也可以配置

    2022年7月31日
    9
  • 【超详细】手把手教你ElasticSearch集群搭建

    【超详细】手把手教你ElasticSearch集群搭建1.ElasticSearch快速入门1.1.基本介绍ElasticSearch特色Elasticsearch是实时的分布式搜索分析引擎,内部使用Lucene做索引与搜索实时性:新增到ES中的数据在1秒后就可以被检索到,这种新增数据对搜索的可见性称为“准实时搜索”分布式:意味着可以动态调整集群规模,弹性扩容集群规模:可以扩展到上百台服务器,处理PB级结构化或非结构化数据各节点组成对等的网络结构,某些节点出现故障时会自动分配其他节点代替其进行工作Lucene是Ja

    2022年10月13日
    6
  • js的sort排序方法_sort对象排序

    js的sort排序方法_sort对象排序sort()方法用于对数组的元素进行排序,并返回数组。默认排序顺序是根据字符串Unicode码点。语法:array.sort(fun);参数fun可选。规定排序顺序。必须是函数。注:如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。如果想按照其他规则进行排序,就需要提供比较函数,该函数要比较两个值,然后返回…

    2022年8月12日
    12
  • python数组操作备忘[通俗易懂]

    python数组操作备忘[通俗易懂]现有一段数组signalssignals[2:2,1]取值将为

    2022年8月13日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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