面试题答案
一键面试MariaDB自动清理binlog依赖的主要条件
-
日志大小相关
- max_binlog_size:这是一个重要参数,它设置了单个binlog文件的最大大小。当一个binlog文件达到
max_binlog_size
指定的大小时,MariaDB会自动创建一个新的binlog文件。不过,需要注意的是,为了避免在大事务处理过程中频繁切换binlog文件,MariaDB允许单个事务产生的日志内容超过max_binlog_size
,但整体文件大小不会超过max_binlog_size
的2倍。
- max_binlog_size:这是一个重要参数,它设置了单个binlog文件的最大大小。当一个binlog文件达到
-
时间相关
- expire_logs_days:该参数指定了binlog文件在磁盘上保存的天数。当binlog文件的创建时间距离当前时间超过
expire_logs_days
设置的天数时,MariaDB会在适当的时候清理这些binlog文件。
- expire_logs_days:该参数指定了binlog文件在磁盘上保存的天数。当binlog文件的创建时间距离当前时间超过
-
二进制日志保留策略
- binlog_keep_last_n:从MariaDB 10.3.2开始引入,此参数用于指定保留最近的n个binlog文件,无论它们的创建时间或大小如何。即使这些文件已经超过了
expire_logs_days
设置的天数,也不会被删除,直到保留的binlog文件数量超过binlog_keep_last_n
。
- binlog_keep_last_n:从MariaDB 10.3.2开始引入,此参数用于指定保留最近的n个binlog文件,无论它们的创建时间或大小如何。即使这些文件已经超过了
条件相互作用决定binlog是否被清理
- 时间优先:MariaDB首先会根据
expire_logs_days
检查binlog文件的创建时间。如果文件的创建时间超过了指定天数,并且没有受到binlog_keep_last_n
的保护(即不在最近保留的n个文件范围内),那么该文件就有可能被清理。 - 日志大小影响切换:
max_binlog_size
主要影响binlog文件的切换,当文件达到该大小限制(或接近限制,同时事务结束)时会创建新的文件。虽然max_binlog_size
本身不直接决定文件是否被清理,但它会影响文件数量,进而影响binlog_keep_last_n
的判断。例如,如果max_binlog_size
设置得较小,可能会生成更多的binlog文件,在binlog_keep_last_n
设置不变的情况下,会更快地淘汰旧的文件。 - 保留策略优先:
binlog_keep_last_n
参数会优先于expire_logs_days
起作用。只要binlog文件属于最近保留的n个文件范围内,即使它已经超过了expire_logs_days
设置的天数,也不会被清理。只有当新生成的binlog文件使得保留的文件数量超过binlog_keep_last_n
时,最早的那些不在保留范围内的文件(同时满足超过expire_logs_days
)才会被清理。