一、概述
Binlog 是 MySQL 中一个很重要的日志,记录了对数据库进行变更的操作, 但是不包括 select操作以及 show 操作, 因为这类操作对数据库本身没有没有修改。 如果想记录 select和 show 的话,那就需要开启全查询日志。 另外 binlog 还包括了执行数据库更改操作时间和执行时间等信息。 binlog 是 MySQL Server 层记录的二进制日志文件
mysql> show variables like ‘%log_bin%’;
mysql> flush logs; --滚动日志
mysql> show binary logs;
二、作用
(1 )恢复 recovery 。某些数据的恢复需要二进制日志,在全库文件恢复后, 可以在此基础上通过二进制日志进行 point-to-time 的恢复(mysqldump 全量恢复+binlog增量恢复)。 (2 )复制(replication )。其原理和恢复类似, 通过复制和执行二进制日志使得一台远程的 mysql数据库(slave)于一台 mysql 数据库(master) 进行实时同步。
三、参数配置
注:在 MySQL 5.7.3 及其以后的版本中, 若想开启二进制日志,则必须加上 server_id 参数,如下 [mysqld] log-bin server_id=57303317 在 MySQL 8.0 中,二进制日志默认开启。
四、重要命令
(1) 查看生成的二进制日志列表: mysql> show binary logs; mysql> show master logs; mysql> show master status; --当前日志 (2) 查看二进制日志记录的事件(event): mysql> show binlog events; --内容较多,一般不用 mysql> show binlog events in 'rhel6-bin.000003'; mysql> show binlog events in 'rhel6-bin.000003' limit 3,5; (3) 查看二进制日志的具体内容: root@slave1:/# which mysqlbinlog root@slave1:~# cd /var/lib/mysql root@slave1:/var/lib/mysql# mysqlbinlog slave1-bin.000008
(4)清理二进制日志 使用“flush logs;”命令、重启 MySQL、默认日志文件达到 1G 都会重新生成一个新的二进制日志文件。 mysql> PURGE BINARY LOGS TO 'binlog.000025'; #binlog.000025 之前的日志都会被删除 mysql> PURGE BINARY LOGS BEFORE '2020-04-28 23:59:59'; #时间'2020-04-28 23:59:59'之前的日志都会被删除 mysql> RESET MASTER; #清空历史二进制日志,从 000001 开始重新