MST

星途 面试题库

面试题:MariaDB中如何开启binlog并设置其相关参数?

请详细说明在MariaDB配置文件中开启binlog需要修改哪些参数,以及这些参数的常见取值和作用,例如日志格式、日志文件大小限制等。
21.8万 热度难度
数据库MariaDB

知识考点

AI 面试

面试题答案

一键面试

在MariaDB配置文件中开启binlog,需要修改以下参数:

log-bin

  • 作用:开启二进制日志记录功能。当设置此参数后,MariaDB会将数据库的更改操作记录到二进制日志文件中,用于数据备份、恢复以及主从复制等场景。
  • 常见取值:通常设置为一个路径及日志文件名前缀,例如log-bin=/var/lib/mysql/mysql-bin 。这会将二进制日志文件存储在/var/lib/mysql/目录下,文件名为mysql-bin.xxxxxxxxxxxx为数字编号)。如果只写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数据库的操作日志。同样可以设置多个,每行一个数据库名。