博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL5.7 可以回收(收缩)undo log回滚日志物理文件空间
阅读量:6681 次
发布时间:2019-06-25

本文共 851 字,大约阅读时间需要 2 分钟。

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

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

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次,如:

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

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

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

总结:

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

转载地址:http://tuxao.baihongyu.com/

你可能感兴趣的文章
Angular 4 依赖注入教程之二 组件服务注入
查看>>
[譯] 理解 SVG 座標系統與 Transformation - 3 建立 viewpor
查看>>
「小技巧」 SSH 连接断了但是不想关掉终端重新打开怎么办?
查看>>
input下拉列表选中后背景变黄色
查看>>
工作的未来:敏捷人士瑞典大会上午议程回顾
查看>>
京东618:六年历程步步为营,京东商城的安全保卫战
查看>>
Fake 5提供.NET Core支持
查看>>
访谈:关于持续敏捷交付与服务矩阵
查看>>
学习是不断的模仿
查看>>
NSNotification 线程管理以及自动注销开源方案
查看>>
光盘和U盘安装win7和ubuntu14.04全步骤
查看>>
ORACLE大表关联更新提速方法
查看>>
28岁的程序员考虑转行?你想清楚了吗
查看>>
你注意到了吗? Chrome 69移除了网址列上的www子域名,遭质疑易受网钓攻击
查看>>
C231n-KNN-assignment1-完全代码及注释
查看>>
静态路由和动态路由的区别
查看>>
邮件系统被拉入黑名单怎么办
查看>>
北京ADSL修改密码的网址
查看>>
使用tmux
查看>>
Android优化——UI优化(二) 使用include标签复用布局
查看>>