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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

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热备份的速度。










本文转自hcymysql51CTO博客,原文链接:http://blog.51cto.com/hcymysql/1575050 ,如需转载请自行联系原作者




相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
24天前
|
Java
使用Java代码打印log日志
使用Java代码打印log日志
77 1
|
25天前
|
Linux Shell
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
78 1
|
3天前
|
Java
log4j异常日志过滤规则配置
log4j异常日志过滤规则配置
13 0
|
7天前
|
运维 Oracle 关系型数据库
Oracle日志文件:数据王国的“记事本”
【4月更文挑战第19天】Oracle日志文件是数据库稳定运行的关键,记录数据变更历史,用于恢复和故障处理。它们协调并发操作,确保数据一致性和完整性。日志文件实时写入操作信息并定期刷新到磁盘,便于数据恢复。然而,日志文件需备份和归档以保证安全性,防止数据丢失。日志文件,数据王国的“记事本”,默默守护数据安全。
|
16天前
|
运维 安全 Ubuntu
`/var/log/syslog` 和 `/var/log/messages` 日志详解
`/var/log/syslog` 和 `/var/log/messages` 是Linux系统的日志文件,分别在Debian和Red Hat系发行版中记录系统事件和错误。它们包含时间戳、日志级别、PID及消息内容,由`rsyslog`等守护进程管理。常用命令如`tail`和`grep`用于查看和搜索日志。日志级别从低到高包括`debug`到`emerg`,表示不同严重程度的信息。注意保护日志文件的安全,防止未授权访问,并定期使用`logrotate`进行文件轮转以管理磁盘空间。
24 1
|
17天前
|
网络协议 应用服务中间件 Linux
centos7 Nginx Log日志统计分析 常用命令
centos7 Nginx Log日志统计分析 常用命令
33 2
|
17天前
|
Ubuntu Linux 网络安全
/var/log/auth.log日志详解
`/var/log/auth.log`是Linux(尤其是Debian系如Ubuntu)记录身份验证和授权事件的日志文件,包括登录尝试(成功或失败)、SSH活动、sudo使用和PAM模块的操作。登录失败、SSH连接、sudo命令及其它认证活动都会在此记录。查看此日志通常需root权限,可使用`tail`、`less`或`grep`命令。文件内容可能因发行版和配置而异。例如,`sudo tail /var/log/auth.log`显示最后几行,`sudo grep "failed password" /var/log/auth.log`搜索失败密码尝试。
72 8
|
3天前
|
SQL 存储 关系型数据库
MySQL Cluster集群安装及使用
MySQL Cluster集群安装及使用
|
18天前
|
关系型数据库 MySQL 数据库
mysql卸载、下载、安装(window版本)
mysql卸载、下载、安装(window版本)
|
7天前
|
关系型数据库 MySQL 数据库
《MySQL 简易速速上手小册》第1章:MySQL 基础和安装(2024 最新版)
《MySQL 简易速速上手小册》第1章:MySQL 基础和安装(2024 最新版)
29 4