二进制日志(Binary Log)也可叫作变更日志(Update Log),是 MySQL 中非常重要的日志。主要用于记录数据库的变化情况,即 SQL 语句的 DDL 和 DML 语句,不包含数据记录查询操作。
如果 MySQL 数据库意外停止,可以通过二进制日志文件来查看用户执行了哪些操作,对数据库服务器文件做了哪些修改,然后根据二进制日志文件中的记录来恢复数据库服务器。
默认情况下,二进制日志功能是关闭的。可以通过以下命令查看二进制日志是否开启,命令如下:
mysql> show variables like "log_bin";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin | ON |
+---------------+-------+
1 row in set (0.02 sec)
从结果可以看出,二进制日志是开启的。
启动和设置二进制日志
在 MySQL 中,可以通过在配置文件中添加 log-bin 选项来开启二进制日志,格式如下:
[mysqld]
log-bin=dir/[filename]
其中,dir 参数指定二进制文件的存储路径;filename 参数指定二进制文件的文件名,其形式为filename.number,number 的形式为 000001、000002 等。
每次重启 MySQL 服务后,都会生成一个新的二进制日志文件,这些日志文件的文件名中 filename部分不会改变,number 会不断递增。
如果没有 dir 和 filename 参数,二进制日志将默认存储在数据库的数据目录下,默认的文件名为hostname-bin.number,其中 hostname 表示主机名。
案例配置如下:
log-bin=mysql-bin
binlog_format=mixed
server-id = 1
1.二进制文件基本操作
-
查看二进制文件
1. 查看二进制日志文件列表
可以使用如下命令查看 MySQL 中有哪些二进制日志文件:
mysql> show binary logs; +------------------+-----------+-----------+ | Log_name | File_size | Encrypted | +------------------+-----------+-----------+ | mysql-bin.000035 | 686110 | No | | mysql-bin.000036 | 96148 | No | +------------------+-----------