`
dyllove98
  • 浏览: 1405414 次
  • 性别: Icon_minigender_1
  • 来自: 济南
博客专栏
73a48ce3-d397-3b94-9f5d-49eb2ab017ab
Eclipse Rcp/R...
浏览量:39058
4322ac12-0ba9-3ac3-a3cf-b2f587fdfd3f
项目管理checkList...
浏览量:80060
4fb6ad91-52a6-307a-9e4f-816b4a7ce416
哲理故事与管理之道
浏览量:133167
社区版块
存档分类
最新评论

MySQL5.7 可以回收(收缩)undo log回滚日志物理文件空间

 
阅读更多

undo log回滚日志是保存在共享表空间ibdata1文件里,随着业务的不停运转,ibdata1文件会越来越大,想要回收(收缩空间大小)极其困难和复杂, 必须先mysqldump -A全库的导出,然后删掉data目录,然后重新初始化安装,最后再把全库的SQL文件导入,采用这种方法进行ibdata1文件的回收。

 

在MySQL5.6里,可以把undo log回滚日志分离出去,到一个单独的表空间里,具体请参考:http://hcymysql.blog.51cto.com/5223301/973450,但缺点就是不能进行回收(收缩)空间大小。直到MySQL5.7 ,才支持在线收缩。

1
2
3
4
5
6
innodb_undo_log_truncate参数设置为1,即开启在线回收(收缩)undo log日志文件,支持动态设置。
innodb_undo_tablespaces参数必须大于或等于2,即回收(收缩)一个undo log日志文件时,要保证另一个undo log是可用的。
innodb_undo_logs: undo回滚段的数量, 至少大于等于35,默认128。
innodb_max_undo_log_size:当超过这个阀值(默认是1G),会触发truncate回收(收缩)动作,truncate后空间缩小到10M。
innodb_purge_rseg_truncate_frequency:控制回收(收缩)undo log的频率。undo log空间在它的回滚段没有得到释放之前不会收缩,
想要增加释放回滚区间的频率,就得降低innodb_purge_rseg_truncate_frequency设定值。

验证过程:
对一张100万的sbtest表,进行全表更新4次,如:

wKioL1RgdBOBBGZbAAJUujfvDjw197.jpg

 

然后你会发现undo log空间急速增长,如:

wKiom1Rgc-mhJySsAADkvtWGqPo071.jpg

 

然后用sysbench做压力测试,让数据库运行起来,观察错误日志,就会自动把undo log空间给回收(收缩),如:

wKioL1RgdRGzrwuGAAPmBf1k6iA093.jpg

 

再通过观察物理文件,已经被回收了,默认10M大小。

wKioL1RgdYDhQQhEAADjmLNYACA460.jpg

 

总结:

这个功能出来以后,降低了磁盘空间使用率(当然,土豪随意),并且加快了xtrabackup热备份的速度。

 

欢迎大家访问我的个人网站 萌萌的IT人
2
3
分享到:
评论

相关推荐

    行业-45 如果事务执行到一半要回滚怎么办?再探undo log回滚日志原理!l.rar

    这就引出了我们今天要探讨的核心概念——undo log,即回滚日志。 Undo log是数据库管理系统用来记录事务对数据进行修改之前的状态的一种日志。它的主要作用是在事务回滚时恢复数据,确保数据库的一致性。当一个事务...

    行业-46 一起来看看INSRET语句的undo log回滚日志长什么样?l.rar

    在数据库管理领域,INSERT语句是用于向表中插入新数据的基本操作,而undo log(回滚日志)则是数据库事务处理的重要组成部分。当我们谈论“来看看INSERT语句的undo log回滚日志长什么样?”时,实际上是在探讨数据库...

    45 如果事务执行到一半要回滚怎么办?再探undo log回滚日志原理!l.pdf

    为了处理事务中可能出现的失败和错误,引入了两种日志机制:重做日志(redo log)和回滚日志(undo log)。在事务执行过程中,如果遇到需要回滚的情况,回滚日志就显得尤为重要。本文将详细探讨回滚日志的原理及其在...

    46 一起来看看INSRET语句的undo log回滚日志长什么样?l.pdf

    其中,原子性指的是事务必须是不可分割的整体,要么完全执行要么完全不执行,而回滚日志(Undo Log)就是用来在事务发生回滚时撤销已经执行的操作,保证事务的原子性。 回滚日志在MySQL的InnoDB存储引擎中被广泛...

    安装MySQL 5.7word文档

    ### 安装MySQL 5.7 的详细步骤与知识点 #### 标题解析 - **标题:“安装MySQL 5.7 word文档”** - 表示本文档将详细介绍如何在Linux环境下安装MySQL 5.7,并涵盖创建目录、安装过程、初始化等内容。 #### 描述...

    对Oracle数据库回滚日志的清理

    最后,还需要手动删除与原回滚表空间相关的物理文件,如`C:\ORACLE\ORADATA\ORADB\UNDOTBS01.DBF`,以确保磁盘空间得到完全释放。 ### 总结 通过以上步骤,不仅可以有效地管理Oracle数据库中的回滚日志,还可以...

    2 万字 + 30 张图 | 细聊 MySQL undo log、redo log、binlog 有什么用?.doc

    在本文中,我们讨论了 MySQL 事务日志机制的原理和实现,包括 undo log、redo log 和 binlog 三种日志机制的作用和原理。我们还讨论了 MySQL 事务日志机制的应用场景,包括数据备份、主从复制和事务回滚等。

    详解MySQL 重做日志(redo log)与回滚日志(undo logo)

    MySQL数据库中的重做日志(redo log)和回滚日志(undo log)是事务处理的关键组成部分,它们确保了数据库的持久性和原子性。理解这两类日志对于优化MySQL性能和保证数据一致性至关重要。 1. 重做日志(redo log) ...

    MySQL的redo log、undo log、binlog

    MySQL数据库中有多种日志文件,其中最重要的三种是重做日志(redo log)、回滚日志(undo log)和二进制日志(binlog)。重做日志确保事务的持久性,回滚日志用于事务回滚,而二进制日志则用于数据复制和恢复。 1. ...

    3000帧动画图解MySQL为什么需要binlog、redo log和undo log.doc

    这种设计使得用户可以根据不同的需求选择合适的存储引擎,并且使得MySQL可以轻松地升级和更新存储引擎。 Buffer Pool的作用 Buffer Pool是InnoDB存储引擎中的一个重要组件,用于缓存MySQL磁盘数据的内存空间。...

    MySQL 5.7优化不求人

    4. 监控功能增强,如undolog truncate,能够自动清除不再需要的回滚日志,以减少存储空间的浪费。 针对buffer pool的增强包括了在线调整缓冲池大小和缓冲池数据转储的增强。例如,可以通过设置innodb_buffer_pool_...

    oracle 收缩undo表空间

    ### Oracle收缩Undo表空间 #### 一、概述 在Oracle数据库管理中,有时需要对Undo表空间进行管理和优化。特别是当Undo表空间因为历史数据积累而变得过大时,可能会影响数据库性能。本文将详细介绍如何通过新建一个...

    mysql5.7软件及配置

    理解InnoDB的特性,如表空间、redo log、undo log等,有助于优化数据库设计和性能。 10. **查询优化**:通过EXPLAIN分析查询执行计划,使用索引,避免全表扫描,都是提升查询效率的有效手段。同时,了解如何编写...

    53 理解MVCC机制的前奏:undo log版本链是个什么东西?l.pdf

    1. **事务回滚**:当事务进行回滚操作时,可以通过undo log将数据恢复到事务开始之前的状态。 2. **非锁定读取**:MVCC通过读取undo log中的历史版本数据,实现事务的快照读取,即读取的是事务开始时刻的数据状态,...

    MySQL InnoDB 日志 回滚段 & 崩溃恢复实现详解 修改版

    ### MySQL InnoDB 日志 回滚段 & 崩溃恢复实现详解 #### 知识准备 - **ACID** - 在数据库管理系统中,事务具有四个关键属性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性...

    seata-oracle版undolog.sql

    oracle版本的undolog建表语句。 2019 年 1 月,阿里巴巴中间件团队发起了开源项目 Fescar(Fast & EaSy Commit And Rollback),和社区一起共建开源分布式事务解决方案。Fescar 的愿景是让分布式事务的使用像本地...

    mysql三种日志文件的介绍

    MySQL数据库系统中有三种日志文件,即binlog、redo log和undo log。这三种日志文件是 MySQL 实现主从复制、持久化和回滚的关键。 一、binlog binlog是用于记录数据库表结构和表数据变更的二进制日志。它记录了...

    undo log版本链图示 - 本人原创!!!

    - 回滚事务:如果事务需要回滚,MySQL可以通过Undo Log中的回滚指针,依次回溯到事务开始前的状态。 - 数据恢复:在系统崩溃或意外中断后,MySQL能够通过Undo Log来恢复未提交的事务,保证数据的一致性。 - Multi-...

    行业-53 理解MVCC机制的前奏:undo log版本链是个什么东西?l.rar

    如果数据库在事务提交之前意外关闭,那么在重启时,系统可以通过undo log回滚未完成的事务,保证数据库在恢复后处于一致状态。 总之,undo log版本链是MVCC机制的核心组成部分,它确保了在高并发环境下,数据库能够...

Global site tag (gtag.js) - Google Analytics