MySQL · binlog 日志

简介

Binlog:也称二进制日志,是 MySQL 最重要的日志,记录所有数据库表结构变更(如 CREATEALTER TABLE)以及表数据修改(如 INSERTUPDATEDELETE),不会记录 SELECTSHOW 这类操作,主要作用:复制(主从同步)、恢复审计

日志格式 记录说明 优点 缺点
STATEMENT 记录的是修改 SQL 语句 日志文件小,节约 IO 准确性差,一些系统函数不能准确复制
ROW 记录的是每行实际数据的变更 准确性强,能准确复制数据的变更 文件日志大,较大的磁盘和网络 IO
MIXED 以上两种模式的混合 准确性强,文件大小适中 有可能发生主从不一致问题

配置参数

1
2
3
4
5
[mysqld]
binlog_format = mixed
log_bin = /data/mysql/mysql-bin.log
expire_logs_days = 7
max_binlog_size = 1G
参数 含义
log_bin = { on | off | base_name } 指定是否启用二进制日志或者指定一个日志路径
binlog_format = { mixed | row | statement } 指定二进制日志格式
expire_logs_days 指定二进制日志过期时间
sql_log_bin = { on | off } 指定是否启用记录二进制日志
log_bin_index 指定 mysql-bin.index 文件路径
max_binlog_size 指定二进制日志文件最大值
binlog_cache_size 指定事务日志缓存区大小
max_binlog_cache_size 指定二进制日志缓存最大值
sync_binlog = { 0 | n } 指定写缓冲多少次,刷一次盘

操作

1
2
3
4
5
6
7
8
9
# 手工删除
purge master logs to "mysql-bin.xx"

# 自动清理
set global expire_logs_days=N;
flush logs;

# 查看binlogs
show binary logs

问题