面试题答案
一键面试1. 调整 binlog 保留时间
- 参数:
expire_logs_days
- 调整方案:根据系统对 binlog 保留时间的要求,设置合适的天数。例如,如果要求保留 7 天的 binlog,则在 MariaDB 配置文件(通常是
my.cnf
或my.ini
)中添加或修改expire_logs_days = 7
。 - 理由:
expire_logs_days
参数决定了 MariaDB 在自动清理不再需要的二进制日志文件之前保留它们的天数。通过设置此参数,可以有效控制 binlog 的存储时间,确保符合系统对存储空间和保留时间的要求。同时,这种自动清理机制不会对数据库性能造成额外的实时压力,因为它是按照一定的时间周期进行清理操作,不会影响正常的数据库读写事务。
2. 关于 log_bin_trust_function_creators
- 参数:
log_bin_trust_function_creators
- 调整方案:除非确实需要创建具有不确定结果的函数(例如包含
NOW()
等函数的自定义函数)并将其记录到 binlog 中,否则不建议随意开启此参数。如果必须开启,应在确保安全的前提下,在 MariaDB 配置文件中设置log_bin_trust_function_creators = 1
。但开启后要严格审查自定义函数的安全性,避免恶意函数通过 binlog 传播导致数据安全问题。 - 理由:默认情况下,
log_bin_trust_function_creators
为 0,即 MariaDB 不允许创建可能产生不确定结果的函数并记录到 binlog 中,这是出于数据安全和一致性的考虑。因为 binlog 用于数据备份、恢复和主从复制,如果函数结果不确定,可能导致主从数据不一致等问题。只有在明确业务需求且能够保证函数安全性的情况下,才开启此参数,以避免对数据安全产生负面影响。
3. 其他相关参数考虑
- 参数:
max_binlog_size
- 调整方案:根据系统存储能力和性能情况,设置合适的值。例如,可以设置为
max_binlog_size = 100M
,表示单个 binlog 文件大小达到 100MB 时会进行切换。 - 理由:通过设置
max_binlog_size
可以控制单个 binlog 文件的大小,避免单个文件过大对存储和传输造成压力。同时,适当的文件大小切换有助于在恢复或复制时更精细地管理 binlog,在一定程度上也能优化性能。不过,设置得过小可能导致 binlog 文件频繁切换,增加 I/O 开销;设置过大则可能在恢复或复制时处理较大文件产生性能问题,需要根据实际情况权衡。