面试题答案
一键面试基本原理
MariaDB 的 binlog 自动清理策略旨在确保 binlog 文件不会无限制增长,通过清理不再需要的 binlog 文件来释放磁盘空间。
触发自动清理的条件
- 基于保留天数:通过
expire_logs_days
参数设置 binlog 文件保留的天数。当 binlog 文件的创建时间距离当前时间超过设定的天数时,满足自动清理条件。例如,设置expire_logs_days = 7
,则创建时间超过 7 天的 binlog 文件可能会被清理。 - 基于空间使用:如果磁盘空间紧张,且 binlog 文件占用空间较大,即使未达到
expire_logs_days
设定的天数,也可能触发自动清理。
清理过程涉及的关键机制
- Purge Thread:MariaDB 有一个专门的 purge 线程负责 binlog 的清理工作。该线程会定期检查 binlog 文件是否满足清理条件。
- Master Information File:记录了当前活跃的 binlog 文件以及复制相关的信息。Purge Thread 会参考此文件来确定哪些 binlog 文件可以安全清理,避免清理正在被复制使用的 binlog 文件。
- Transaction Coordination:确保在清理 binlog 文件时,所有相关的事务都已完成并且其数据已持久化到数据文件中,防止数据丢失。