小结:

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. 目标检测比赛---Google AI Open Images - Object Detection Track

    https://www.kaggle.com/c/google-ai-open-images-object-detection-track#Evaluation Submissions are eva ...

  2. CentOS 7 安装SVN服务端

    CentOS7下安装SVN服务 1. yum命令即可方便的完成安装# sudo yum install subversion 测试安装是否成功:# svnserve --version 更改svn的默 ...

  3. etcd 集群运维实践

    etcd 是 Kubernetes 集群的数据核心,最严重的情况是,当 etcd 出问题彻底无法恢复的时候,解决问题的办法可能只有重新搭建一个环境.因此围绕 etcd 相关的运维知识就比较重要,etc ...

  4. ajax请求中的6个全局事件

    //事件触发顺序ajaxStart,ajaxSend,ajaxSuccess或ajaxError,ajaxComplete,ajaxStop $(document).ajaxStart(functio ...

  5. class path and classloader

    https://www.artima.com/insidejvm/ed2/linkmod5.html https://www.artima.com/insidejvm/ed2/securityP.ht ...

  6. SOLID原则 【转】

    S.O.L.I.D 是面向对象设计(OOD)和面向对象编程(OOP)中的几个重要编码原则(Programming Priciple)的首字母缩写. 面向对象设计的原则 SRP  The Single ...

  7. yizhihongqiang

    最新网址:https://www.     hongxingwangzhi           .com/

  8. Java如何获取URL的部分?

    在Java编程中,如何获取URL的一部分? 以下示例显示了如何通过net.URL类的url.getProtocol()和url.getFile()方法等获取URL的部分. package com.yi ...

  9. .Net Framework4.5.2 源码命名空间简析

    Miscosoft目前除.Net Core开源外,对于.Net4.5.1 , 4.5.2等后续版本同样开源.资源中包含sln,csproj等以方便我们在vs中打开它们,不过我们不能编译它,因为它缺少r ...

  10. div界面浮动插件

    <title>JS浮动广告</title> <style type="text/css"> img{border:0;} </style& ...