面试题答案
一键面试二进制日志(Binary Log)的主要功能
- 数据备份:记录数据库的更改操作,用于恢复数据到特定时间点。在数据库发生故障或数据丢失时,可通过重放二进制日志中的记录来重建数据状态。
- 主从复制:主库将二进制日志发送给从库,从库通过重放这些日志来保持与主库数据的一致性,实现数据的复制和分布式部署。
- 数据审计:可以查看二进制日志了解数据库的变更历史,用于安全审计和故障排查等。
与二进制日志相关的重要配置参数及影响
- log - bin
- 说明:开启二进制日志功能。如果设置了该参数,MariaDB 会将数据库的更改操作记录到二进制日志文件中。
- 影响:开启后,可用于数据备份、恢复以及主从复制。但会增加磁盘 I/O 开销,因为每次写操作都要记录到日志文件中,同时也会占用一定的磁盘空间。
- binlog - format
- 说明:指定二进制日志的格式,有三种取值:STATEMENT(基于语句)、ROW(基于行)、MIXED(混合模式)。
- 影响:
- STATEMENT:记录执行的 SQL 语句,日志文件相对较小,节省磁盘空间,但在某些情况下可能会导致主从复制数据不一致,比如使用了不确定函数(如 NOW())。
- ROW:记录数据行的变化,能保证主从复制的一致性,但日志文件较大,因为要记录每行数据的修改。
- MIXED:根据 SQL 语句的情况自动选择使用 STATEMENT 或 ROW 格式,尽量平衡空间占用和数据一致性。
- sync - binlog
- 说明:控制二进制日志刷盘的频率。取值为 0 时,表示由操作系统控制刷盘,性能最高但可能在崩溃时丢失部分日志;取值为 1 时,表示每次事务提交时都将二进制日志刷盘,保证数据不丢失,但会降低性能;取值大于 1 时,表示每 N 次事务提交后刷盘,在性能和数据安全性之间做平衡。
- 影响:设置为 1 时,数据安全性最高,但由于频繁的磁盘 I/O 操作,会对系统性能产生较大影响;设置为 0 时,性能最优,但在系统崩溃时可能丢失部分未刷盘的日志,导致数据不一致;设置为大于 1 的值时,在性能和数据安全性之间取得折衷,但如果系统在 N 次事务提交内崩溃,也会丢失部分日志。
- max - binlog - size
- 说明:指定单个二进制日志文件的最大大小。当达到该大小后,MariaDB 会自动创建新的二进制日志文件。
- 影响:合理设置该参数可以控制单个日志文件的大小,便于管理和维护。如果设置过小,会导致频繁创建新的日志文件,增加文件管理开销;如果设置过大,在进行恢复或复制时,处理大文件可能会耗费更多时间,并且单个文件过大也不利于故障排查和数据管理。