阿里云mysql空间清理的方法

今天收到阿里云磁盘告警通知,查看了一个100G的空间已达到80G的使用量,如果决定删除2018年1月1日之前的数据,可delete后,再去查看发现磁盘可用空间并没有减少,还飞速的上涨,这可把我急坏了,不一会儿数据库就锁死了。

敢忙找度娘,原来delete后,磁盘不会减少,还得执行一下 OPTIMIZE TABLE +表名,以后找到救星了,可执行此命信不成功,原来是空间不足,数据库存补锁不能执行这条指令,一下没了头绪,如是决定先把服务器暂停,就在暂停时奇迹发生了,可用空间有5G多了,这下可以执行OPTIMIZE TABLE 来优化表了,可执行3分钟后,指令返回错误,一看空间又不足了,又表锁住了。

最张决定,先导出一个表,转存sql文件,足足导了40分钟才导完,然后删除了这个表,服务器一下可用空间多了50G,于是再执行运行sql文件,将数据还原,足足执行了150分钟。执行完后磁盘使了70G, 再执行 OPTIMIZE TABLE +表名 ,由于其中一张表太大了,执行了接近40分钟,此间磁盘使用率一度飙到100%,好在还是刚才度过。

delete 数据后mysql空间并不会减少,要执行OPTIMIZE TABLE 才行,OPTIMIZE TABLE其间会产生大量临时文件,如果原表体量很大,会占用大量的空间,所以执行这条时,一定要在磁盘空间充足时。不然执行其它会引起磁盘不足,锁死数据库,而导致,执行失败

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接

(0)

相关推荐

  • MySQL group by对单字分组序和多字段分组的方法讲解

    我这里创建了一个 goods 表,先看下里面的数据: mysql> select * from goods; +----+------+------+------------+-------------+------------+ | id | s_id | b_id | goods_name | goods_price | goods_desc | +----+------+------+------------+-------------+------------+ | 1 | 1 | 5

  • Mysql覆盖索引详解

    概念 如果索引包含所有满足查询需要的数据的索引成为覆盖索引(Covering Index),也就是平时所说的不需要回表操作 判断标准 使用explain,可以通过输出的extra列来判断,对于一个索引覆盖查询,显示为using index,MySQL查询优化器在执行查询前会决定是否有索引覆盖查询 注意 1.覆盖索引也并不适用于任意的索引类型,索引必须存储列的值 2.Hash 和full-text索引不存储值,因此MySQL只能使用B-TREE 3.并且不同的存储引擎实现覆盖索引都是不同的 4.并

  • linux下mysql乱码问题的解决方案

    项目进行到和服务器交互,通过post访问服务器端jsp,jsp访问服务器端mysql数据库,最终返回到客户端的中文出现乱码问题. 在整个流程中,出现错误的原因可能是三个:post未设置编码或者编码不相符合,jdbc出现问题,linux下mysql初始码制问题. 在经过繁琐的排查后,最终确定问题为mysql编码问题.下文介绍如何解决linux下mysql中文乱码问题. 首先进入mysql命令行模式,键入mysql -uroot -p 即可进入.随后键入 SHOW VARIABLES LIKE 'c

  • MySQL主从同步延迟的原因及解决办法

    由于历史原因,MySQL复制基于逻辑的二进制日志,而非重做日志.多次被问到何时MySQL能支持基于物理的复制,其实这就看MySQL各位大佬的想法.上次和赖老师脑暴,倏地说道:MySQL会不会来个基于Paxos的redo复制? 物理复制的真正好处不在于正确性,因为基于ROW格式的日志复制也已能完全保证复制的正确性.由于物理日志的写入是在事务执行过程中就不断写入,而二进制日志的写入仅仅在事务提交时.因此物理日志的优势如下所示: 复制架构下,大事务日志提交速度快: 复制架构下,主从数据延迟小: 假设执

  • sql与各个nosql数据库使用场景的讲解

    sql为主干为什么我这样理解: 单从技术角度来说 关系型网格 充分的体现了现实事务 对事务,审计,闪存等等对数据的重视所以如何一些特别主要的数据,一定要放到sql里面.一个系统里面至少有用户信息是重要的数据. 所以sql必须有,而且数据存储的主干 什么时候引入nosql 先看看sql - > sql + nosql的过程. https://www.jb51.net/article/79236.htm 为什么要使用NoSQL 这些nosql? 对java语言而言: redis:用于缓存 - 读速度

  • mysql实现查询数据并根据条件更新到另一张表的方法示例

    本文实例讲述了mysql实现查询数据并根据条件更新到另一张表的方法.分享给大家供大家参考,具体如下: 原本的数据库有3张表 travel_way :旅游线路表,存放线路的具体信息 traveltag :线路标签表,存放线路目的地等信息 tagrelation:标签对应表,存放线路和目的地的对应关系 因为业务逻辑的改变,现在要把它们合并为一张表,把traveltag中的目的地信息插入到travel_way中. 首先获取到所有线路对应的目的地,以线路ID分组,合并目的地到一行,以逗号分隔. 复制代码

  • MySQL执行状态的查看与分析

    当感觉mysql性能出现问题时,通常会先看下当前mysql的执行状态,使用 show processlist 来查看,例如: 其中state状态列信息非常重要,先看下各列含义,然后看下state常用状态 各列的含义 1.id 一个标识,你要kill一个语句的时候使用,例如 mysql> kill 207; 2.user 显示当前用户,如果不是root,这个命令就只显示你权限范围内的sql语句 3.host 显示这个语句是从哪个ip 的哪个端口上发出的,可用来追踪出问题语句的用户 4.db 显示这

  • Mysql通过存储过程分割字符串为数组

    分割字符串为数组需要用到 三个mysql 的函数 : REVERSE(str) 返回颠倒字符顺序的字符串str. SUBSTRING_INDEX(str,delim,count) 返回从字符串str的第count个出现的分隔符delim之后的子串.如果count是正数,返回最后的分隔符到左边(从左边数) 的所有字符.如果count是负数,返回最后的分隔符到右边的所有字符(从右边数). REPLACE(str,from_str,to_str) 返回字符串str,其字符串from_str的所有出现由

  • MySQL开发规范与使用技巧总结

    1.命名规范 1.库名.表名.字段名必须使用小写字母,并采用下划线分割. a)MySQL有配置参数lower_case_table_names,不可动态更改,linux系统默认为 0,即库表名以实际情况存储,大小写敏感.如果是1,以小写存储,大小写不敏感.如果是2,以实际情况存储,但以小写比较. b)如果大小写混合使用,可能存在abc,Abc,ABC等多个表共存,容易导致混乱. c)字段名显示区分大小写,但实际使⽤用不区分,即不可以建立两个名字一样但大小写不一样的字段. d)为了统一规范, 库名

  • MySQL数据库中CAST与CONVERT函数实现类型转换的讲解

    MySQL 的CAST()和CONVERT()函数可用来获取一个类型的值,并产生另一个类型的值. 两者具体的语法如下: CAST(value as type); CONVERT(value, type); 就是CAST(xxx AS 类型), CONVERT(xxx,类型). 可以转换的类型是有限制的.这个类型可以是以下值其中的一个: 二进制,同带binary前缀的效果 : BINARY 例如:当使用 like 模糊搜索日期类型的字段时 语句应该是 Create_Time like binary

随机推荐