0x01 查看是否开启 binlog
执行 show variables like 'log_%';
查看log相关信息
- log_bin: binlog 是否开启
- log_bin_basebame: binlog (文件目录) + 文件名称
- log_bin_index: binlog 文件 index (后缀)
0x02 开启 binlog
如果上述命令查看的 log_bin 属性值为 OFF,则需要修改配置开启 binlog。在 mysql 配置文件 my.cnf (mac 通常在/etc/目录下,没有则自行添加) 中加入 log-bin=mysql-bin 开启binlog。0x03 binlog 的三种模式
binlog 有三种模式:statement、row、mixed,模式可以在 my.cnf 中指定,如 binlog_format=row
statement
row
mysqlbinlog --no-defaults -vv --base64-output=decode-rows mysql-bin.000007 > my-bin.000007.txt
mixed
0x04 小结
binlog的row模式记录的是修改前后具体的记录,statement模式记录的是sql语句。mixed是row和statement模式结合起来使用。
row
- 优点:对于使用了函数或随机数的 SQL 语句,不会出现不一致的情况。
- 缺点:日志量较大,占用空间较大。执行速度较慢,因为需要记录每一条数据的变化情况。
statement
- 优点:日志量较小,占用空间小。执行速度快,因为只需要记录 SQL 语句即可。
- 缺点:对于使用了函数或随机数的 SQL 语句,可能会出现不一致的情况,比如随机数每次生成的都不一样。
mixed
- 优点:能够根据具体情况自动选择使用最优的模式。
- 缺点:执行速度较慢,因为需要根据具体情况选择使用不同的模式。