小结:

1、避免并行大大事务对磁盘、内存的消耗;

MySQL数据文件导致实例空间满的解决办法_空间/内存_常见问题_云数据库 RDS 版-阿里云 https://help.aliyun.com/knowledge_detail/101642.html

MySQL实例可能会由于查询语句的排序、分组、关联表产生的临时表文件,或者大事务未提交前产生的binlog cache文件,导致实例空间满,为避免数据丢失,RDS会对实例进行自动锁定,磁盘锁定之后,将无法进行写入操作。

查看数据库的文件大小,分析其中可以删除的历史数据文件或无用数据文件。

SELECT file_name, concat(TOTAL_EXTENTS,'M') as 'FIle_size' FROM INFORMATION_SCHEMA.FILES  order by TOTAL_EXTENTS 

MySQL Binlog日志的生成和清理规则_数据备份/恢复_常见问题_云数据库 RDS 版-阿里云 https://help.aliyun.com/knowledge_detail/41815.html

Binlog日志的生成规则

MySQL实例空间内生成binlog日志的规则如下:

  • 通常情况下,当前binlog大小超过500MB或超过6小时会切换到下一序号文件继续写入,即写满500MB或超过6小时就会生成新的binlog日志文件。新的binlog文件继续写入,老的binlog文件并不会立刻上传,会异步上传。

  • 有些情况下,binlog日志不满500MB就不再写入,比如由于命令的执行、系统重启等原因。

  • 有些情况下,会出现binlog文件尺寸超过500MB的情况,比如当时在执行大事务,不断写入binlog导致当前binlog文件尺寸超过500MB。

Binlog日志的保存及清理规则

MySQL实例的空间内默认清理binlog日志的规则如下:

  • 实例空间内默认会保存最近18个小时内的binlog文件。

  • 当实例使用空间小于购买空间的80%时,系统会保存购买空间的30%的binlog(即使该binlog文件已经上传到OSS内)。

  • 当实例使用空间超过购买空间的80%时,binlog会在上传到OSS后,发起删除本地数据的请求,但本地删除会有任务调度,有一定延迟。

  • Binlog文件上传到OSS后,才可以在RDS控制台上显示。查看步骤如下:

    1. 登录RDS管理控制台

    2. 选择要管理的实例所在的地域。

    3. 单击目标实例右的ID,进入基本信息页面。

    4. 在左侧导航栏中,选择备份恢复,进入备份恢复页面。

    5. 选择日志备份标签页,即可查看已上传的binlog日志。

  • Binlog日志在后台生成,可在RDS控制台中下载,大概需要30~60分钟,如果binlog文件较大,所需时间更长。

后续维护

对于经常有delete操作的表,容易产生数据空洞,可以在业务低峰期使用optimize table <数据库名>.<表名>回收空间。

后续维护

    • 针对查询产生的临时文件,应该优化SQL语句,避免频繁使用 order by、group by 操作,可以适当调大tmp_table_size和max_heap_table_size,但是为了减少磁盘使用而调高 tmp_table_size 和 max_heap_table_size 并不明智,因为内存资源远比磁盘资源宝贵;可以通过explain+SQL语句查看是否使用内部临时表,在 Extra 字段中有 Using temporary 字样的代表会使用内部临时表。示例如下:

       
      explain select * from alarm group by created_on order by default;

    • 针对binlog cache,应该少执行大事务,尤其应该减少在多个连接同时执行大事务,如果大事务比较多,可以适当调大binlog_cache_size,但是同样不应该为了节省磁盘调整这个参数,使用短连接执行大事务可以有效降低临时空间开销。
 
 
 
现场:
中午对同张表的补数据时,并行大事务提交导致临时文件激增消耗500G的有限空间。;<1>刚才又删除了多余数据后,现在是500G用了约70%;<2>空间回收优化的sql还在执行中,会进一步降低利用率;<3>程序这边今后也避免对单张大表的并行大事务提交;
 
 

看数据库的文件大小 MySQL Binlog日志的生成和清理规则的更多相关文章

  1. MySQL Binlog和Relaylog生成和清理

    =====================================================================================binlog文件生成:在每条二 ...

  2. Mysql Binlog日志详解

    一.Mysql Binlog格式介绍       Mysql binlog日志有三种格式,分别为Statement,MiXED,以及ROW! 1.Statement:每一条会修改数据的sql都会记录在 ...

  3. 【转载】mysql binlog日志自动清理及手动删除

    说明:当开启mysql数据库主从时,会产生大量如mysql-bin.00000* log的文件,这会大量耗费您的硬盘空间.mysql-bin.000001mysql-bin.000002mysql-b ...

  4. mysql binlog日志自动清理及手动删除

    说明:当开启mysql数据库主从时,会产生大量如mysql-bin.00000* log的文件,这会大量耗费您的硬盘空间.mysql-bin.000001mysql-bin.000002mysql-b ...

  5. 自动清理MySQL binlog日志

    开启MySQL binlog日志的服务器,如果不设置自动清理日志,默认binlog日志一直保留着,时间一长,服务器磁盘空间被binlog日志占满,导致MySQL数据库出错. 使用下面方法可以安全清理b ...

  6. 删除MySQL binlog日志的方法

    对于比较繁忙的OLTP(在线事务处理)系统,由于每天生成日志量大,这些日志如果长时间不清除,将会对磁盘空间带来很大的浪费.因此,定期删除日志是DBA维护MySQL数据库的一个重要工作内容.下面跟大家分 ...

  7. 阿里云mysql数据库恢复总结,mysql binlog日志解析

    由于意外..阿里云mysql中有一张表被全部删除了,深吸三口气候,开始解决. 首先用凌晨的自动备份的,进行全量恢复,然后找binlog日志(见下文),查找从全量备份到数据删除之间的记录 这导致了一个问 ...

  8. MySQL bin-log 日志清理方式

    MySQL bin-log 作用   1.数据恢复:如果你的数据库出问题了,而你之前有过备份,那么可以看日志文件,找出是哪个命令导致你的数据库出问题了,想办法挽回损失. 2.主从服务器之间同步数据:主 ...

  9. Mysql binlog日志解析

    1. 摘要: Mysql日志抽取与解析正如名字所将的那样,分抽取和解析两个部分.这里Mysql日志主要是指binlog日志.二进制日志由配置文件的log-bin选项负责启用,Mysql服务器将在数据根 ...

随机推荐

  1. linux(mac) 编译安装MySQL

    Reference: https://blog.csdn.net/Tzhennan/article/details/80565235 官方下载地址:  https://dev.mysql.com/do ...

  2. RabbitMQ三种Exchange模式(fanout,direct,topic)的性能比较(转)

    RabbitMQ中,所有生产者提交的消息都由Exchange来接受,然后Exchange按照特定的策略转发到Queue进行存储 RabbitMQ提供了四种Exchange:fanout,direct, ...

  3. 【iCore4 双核心板_ARM】例程二十二:LWIP_UDP实验——以太网数据传输

    实验现象: 核心代码: int main(void) { system_clock.initialize(); led.initialize(); adc.initialize(); delay.in ...

  4. Hive数据倾斜解决办法总结

    数据倾斜是进行大数据计算时最经常遇到的问题之一.当我们在执行HiveQL或者运行MapReduce作业时候,如果遇到一直卡在map100%,reduce99%一般就是遇到了数据倾斜的问题.数据倾斜其实 ...

  5. vue深入相应式原理

    Vue 最显著的特性之一便是不太引人注意的响应式系统(reactivity system).模型层(model)只是普通 JavaScript 对象,修改它则更新视图(view).这会让状态管理变得非 ...

  6. azkaban在centos下的部署安装

    azkaban 是一个用Java开发的开源调度工具workflow. 下面介绍具体安装过程,我这里使用的版本是3.43.0,使用的是solo运行模式. 编译 git clone https://git ...

  7. Spark学习笔记——RDD编程

    1.RDD——弹性分布式数据集(Resilient Distributed Dataset) RDD是一个分布式的元素集合,在Spark中,对数据的操作就是创建RDD.转换已有的RDD和调用RDD操作 ...

  8. 找出相似的图片--C#

    请先参考我写到java这章 原理讲解 参考Neal Krawetz博士的这篇文章, 实现这种功能的关键技术叫做"感知哈希算法"(Perceptual Hash Algorithm) ...

  9. 使用Profile和Resources Filter隔离测试环境

    转自:http://juvenshun.iteye.com/blog/206825 Maven能够帮我们很好的管理测试,我们可以在 src/test/java 和 src/test/resources ...

  10. python concurrent.futures.Threadpoolexcutor的有界队列和无界队列

    1.默认是无界队列,如果生产任务的速度大大超过消费的速度,则会把生产任务无限添加到无界队列中,这样一来控制不了生产速度,二来是会造成系统内存会被队列中的元素堆积增多而耗尽. 2.改写为有界队列 cla ...