我们的主服务器上只有450 GB的nvme空间,而这些二进制日志正在使用大量的空间,即使它们只保存了两天。
将MySQL绑定日志写入较慢的磁盘(如远程目录)是否会降低MySQL性能?
发布于 2018-11-23 11:21:54
二进制日志记录是在语句或事务完成后立即执行的,但在释放任何锁或执行任何提交之前完成,因此我设想将日志放置在较慢的磁盘上可能会产生影响,因为其他事务将被延迟到当前事务被记录下来。
我会将您的二进制日志保存在您最快的存储空间中,但是只保留那些仍然需要复制的文件,从而减少闪存上的日志数量。
您可以像手册中所概述的那样自动化和更频繁地运行清除日志的过程,并删除所有不再需要的日志,因为奴隶已经处理了这些日志。
SHOW SLAVE STATUS检查它正在读取的日志文件。SHOW BINARY LOGS获取主服务器上二进制日志文件的列表。如果您希望保留更多日志(例如用于审计目的),请在使用PURGE BINARY LOGS TO或PURGE BINARY LOGS BEFORE MySQL语句从闪存驱动器中删除这些日志之前,先将这些日志复制到较慢(正在旋转的)磁盘中。
发布于 2018-11-23 14:39:08
来自MySQL手册:
默认情况下,二进制日志在每次写入(
sync_binlog=1)时都同步到磁盘。如果没有启用sync_binlog,并且操作系统或机器(不仅仅是MySQL服务器)崩溃,那么二进制日志的最后一条语句可能会丢失。为了防止这种情况,在每个N个提交组之后,启用sync_binlog系统变量将二进制日志同步到磁盘。见5.1.8节,“服务器系统变量”。sync_binlog的最安全值是1(默认值),但这也是最慢的值。
以上引号中的粗体部分意味着缓慢的存储将对插入速率设置上限。由于部分缓解是按顺序编写的,所以您不需要支付查找延迟的费用。
使用单个7200 RPM磁盘作为专用的binlog设备的示例:平均旋转延迟为4.1ms,您可以预期每秒有250个写I/O。这显然假定磁盘端没有NVRAM/写回缓存:如果存在这样的缓存,则同步写入将立即被它吸收。
还请注意,您可以禁用binlog的同步,基本上将问题从延迟绑定问题转化为吞吐量限制问题。但是,一定要理解数据一致性的含义。
https://serverfault.com/questions/941323
复制相似问题