zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

MySQL二进制日志binlog

2023-09-27 14:25:41 时间

优点和缺点

  • 通过二进制日志进行进行point-in-time的恢复
  • 主从同步
  • SQL审计
  • 会造成大概1%的性能损耗

和redolog对比

  • redolog在InnoDB存储引擎层产生,而binlog是在MySQL数据库层产生,任何存储引擎都会产生。
  • redolog是物理格式日志,记录的是对每个页的修改,而binlog是一种逻辑日志,记录的是对应的SQL。
  • redolog在事务的每一次修改语句都会写入,binlog只在事务提交时写入一条日志。

配置项

max_binlog_size:单个二进制文件的最大值,默认1G,超过该值,薪文件后缀名+1

binlog_cache_size:所有未提交事务的二进制日志会被写入到一个缓存中,等事务提交后才写入二进制文件,该参数控制缓冲的大小,默认32KB。每开启一个事务,MySQL会自动分配一个大小为binlog_cache_size的缓存,所以不宜设置过大,当一个事务的记录大于该值,则会写入临时文件,所以也不宜设置的过小。binlog_cache_use记录使用缓冲写二进制日志的次数,binlog_cache_disk_use记录了使用临时文件写二进制日志的次数。

mysql> show global status where Variable_name like 'binlog_cache%'\G;
*************************** 1. row ***************************
Variable_name: Binlog_cache_disk_use
        Value: 38939
*************************** 2. row ***************************
Variable_name: Binlog_cache_use
        Value: 0
2 rows in set (0.00 sec)

sync_binlog:表示每写缓冲多少次就同步到磁盘,默认为1,表示采用同步写磁盘的方式记录二进制日志

binlog-do-db和binlog-ignore-db表示需要写入或忽略哪些库的日志,默认为空

binlog_format:STATEMENT记录逻辑SQL语句,文件小;ROW记录表的行更改情况,文件大,恢复和复制快;

配置相关

查看data目录:show variables like '%datadir%'

默认binlog存储在data目录下,如果要更改,可以更改my.ini配置文件,log_bin = 绝对路径

以SQL的形式查看某个binlog文件的内容:show binlog events in 'bin.000001';

查看二进制文件命令

mysqlbinlog