我们最近发现,在MySQL 8默认配置中,Ubuntu20.04机器上的binlog.*文件在/var/lib/mysql中杂乱无章。
也就是说,我们每天有一个4.2GB的数据库大小和大约500 MB的二进制日志。
因此,我们的磁盘空间不足。
当然,我们可以禁用和删除二进制日志,但是我们想知道这种默认配置的原因是什么,以及它们是否都将被删除(而且我们只需要增加机器上的存储空间)。
我们认为它们不应该永远保存在默认配置中,因为这样就需要inifite存储。
发布于 2021-11-22 14:10:10
这实际上是上游的变化。有些发行版可能会更改设置,但很可能大多数只会沿袭上游。
代码库托管在https://github.com/mysql/mysql-server (二进制日志默认设置的实际文件,是sql/sys_vars.cc )上。
通过对错误的深入研究,我最终确定了更改默认值的提交:https://github.com/mysql/mysql-server/commit/9fa9504e5aaf68661aef2d735cecbd3c58eb7790
它提到mysql的一个工作日志项:#10470。你可以在这里查看:https://dev.mysql.com/worklog/
该工作日志项的基本原理部分提供了以下内容:
几乎所有的生产安装都启用了二进制日志,因为它用于复制和实时恢复。
基于以下原因,在默认情况下,我们应该启用它:
在MySQL8.0中,日志文件的默认过期是30 days,由变量binlog_expire_logs_seconds管理,该变量默认为2592000 seconds。要真正进行清除,必须对日志进行冲洗。根据文档,当一个二进制日志文件关闭并启动一个新日志文件时,日志刷新会自动发生。单个文件的最大大小可以由最大1GB的max_binlog_size控制。但是,有一个警告,即事务不是在日志文件之间分割的,理论上它们可能高达4GB。您还可以自己每天发布flush logs或purge binary logs语句。
发布于 2021-11-19 20:22:03
配置binlog_expire_logs_seconds。86400会说每天清除日志。我想把它延长到一两周。
同时,检查max_binlog_size。如果您希望每天清除绑定日志,并且每天生成5MB,那么我建议将其设置为100 M。
清理一天和100米后,磁盘使用量将保持在500到600米之间(或者可能是500米到1100米,我不知道确切的算法)。
每天5亿美元似乎很多。是否经常更新大表中的每一行?还是别的什么?
A同意默认配置可能不是最佳配置。有几种默认情况需要考虑,并且安装不问您想要哪一种:
https://serverfault.com/questions/1084033
复制相似问题