面试题答案
一键面试在MariaDB配置文件中开启binlog,需要修改以下参数:
log-bin
- 作用:开启二进制日志记录功能。当设置此参数后,MariaDB会将数据库的更改操作记录到二进制日志文件中,用于数据备份、恢复以及主从复制等场景。
- 常见取值:通常设置为一个路径及日志文件名前缀,例如
log-bin=/var/lib/mysql/mysql-bin
。这会将二进制日志文件存储在/var/lib/mysql/
目录下,文件名为mysql-bin.xxxxxx
(xxxxxx
为数字编号)。如果只写log-bin
,则默认会在数据目录下生成以主机名命名的二进制日志文件。
binlog-format
- 作用:指定二进制日志的格式。不同的格式在记录数据修改操作时采用不同的方式,对性能、数据一致性等方面有影响。
- 常见取值:
- STATEMENT:基于语句的日志格式。记录的是实际执行的SQL语句,优点是日志文件较小,节省空间,但在某些情况下(如使用函数、触发器等)可能导致主从复制数据不一致。
- ROW:基于行的日志格式。记录的是每一行数据的实际修改内容,能保证主从复制的绝对一致性,但日志文件通常较大,因为会详细记录每一行数据的变动。
- MIXED:混合日志格式。结合了STATEMENT和ROW两种格式的优点,MariaDB会根据具体的SQL语句选择合适的日志格式记录,对于一些可能导致主从复制不一致的语句采用ROW格式,其他采用STATEMENT格式。
max-binlog-size
- 作用:限制单个二进制日志文件的大小。当达到此大小限制时,MariaDB会自动切换到新的二进制日志文件。
- 常见取值:一般取值范围从几MB到几百MB不等,常见设置如
max-binlog-size = 100M
,表示单个二进制日志文件最大为100MB。取值不宜过大,以免单个日志文件过大影响恢复或复制操作;取值也不宜过小,否则频繁切换日志文件会带来额外的I/O开销。
sync-binlog
- 作用:控制二进制日志写入磁盘的频率。它决定了在执行多少次事务提交后,将二进制日志缓存中的内容同步到磁盘上的日志文件中。
- 常见取值:
- 0:表示MySQL将二进制日志写入缓存,但并不主动将缓存数据同步到磁盘,而是由操作系统决定何时将缓存数据刷到磁盘,这种方式性能最高,但在系统崩溃时可能丢失部分二进制日志数据。
- 1:表示每次事务提交后,都将二进制日志缓存中的内容同步到磁盘,能保证数据的完整性和一致性,但会增加I/O开销,对性能有一定影响。
- N(N > 1):表示每进行N次事务提交后,将二进制日志缓存中的内容同步到磁盘,在性能和数据安全之间提供了一种平衡。例如
sync-binlog = 10
,即每10次事务提交后同步一次日志到磁盘。
binlog-do-db
- 作用:指定需要记录二进制日志的数据库。只有对指定数据库的操作才会被记录到二进制日志中。
- 常见取值:数据库名称,如
binlog-do-db = mydatabase
,表示只记录对mydatabase
数据库的操作日志。可以设置多个,每行一个数据库名。
binlog-ignore-db
- 作用:与
binlog-do-db
相反,指定不需要记录二进制日志的数据库。对指定数据库的操作不会被记录到二进制日志中。 - 常见取值:数据库名称,如
binlog-ignore-db = testdatabase
,表示不记录对testdatabase
数据库的操作日志。同样可以设置多个,每行一个数据库名。