一.什么是binlog日志
mysql-binlog是MySQL数据库的二进制日志,用于记录用户对数据库操作的SQL语句(除了数据查询语句)信息.可以使用mysqlbin命令查看二进制日志的内容.
二.binlog日志的作用
- 记录除查询之外的所有SQL语句.
- 可用于数据恢复
- 配置MySQL主从复制的必要条件
- STATEMENT(基于SQL语句的复制)
三.binlog日志格式
每一条会修改数据的sql语句会记录到binlog中.
- ROW(基于行的复制)
不记录每一条SQL语句的上下文信息,仅需记录哪条数据被修改了,修改成了什么样子了.
- MIXED(混合模式复制)
以上两种模式的混合使用,一般的复制使用STATEMENT模式保存binlog,对于STATEMENT模式无法复制的操作使用ROW模式保存binlog,MySQL会根据执行的SQL语句选择日志保存方式.
四.如何启用(配置)binlog日志
在MySQL配置文件my.cnf文件中的mysqld中添加配置信息.
[mysqld]
#启动并设置日志路径,注意路经需要mysql用户有权限写
log-bin = /目录/mysql-bin.log
#指定id值
server_id=100
#设置日志格式
binlog_format = mixed
#设置binlog清理时间
expire_logs_days = 7
#binlog每个日志文件大小
max_binlog_size = 100m
#binlog缓存大小
binlog_cache_size = 4m
#最大binlog缓存大小
max_binlog_cache_size = 512m
重启MySQL生效,如果不方便重启服务,也可以直接修改对应的变量即可.
五.binlog日志的相关操作
1.手动生成新的日志文件
- 重启MySQL服务
- mysql> flush logs;
- ]# mysqldump --flush-logs
- ]# mysql –uroot –p密码 –e ‘flush logs’
2. 删除早于指定版本的binlog日志
mysql> purge master logs to ‘binlog文件名’;
3.删除所有binlog日志,重建新日志
mysql> reset master;
4.查看日志当前记录格式
mysql> show variables like ‘binlog_format’;
5.查看binlog日志
]# mysqlbinlog /var/lib/mysql/mysql-bin.000001
1 … 2 # at 4 3 #170412 12:05:32 server id 1 end_log_pos 123 CRC32 0x6d8c069c Start: binlog v 4, server v 5.7.17-log created 170412 12:05:32 at startup 4 # Warning: this binlog is either in use or was not closed properly. 5 ROLLBACK/*!*/; 6 BINLOG ' 7 jKftWA8BAAAAdwAAAHsAAAABAAQANS43LjE3LWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 8 AAAAAAAAAAAAAAAAAACMp+1YEzgNAAgAEgAEBAQEEgAAXwAEGggAAAAICAgCAAAACgoKKioAEjQA 9 AZwGjG0= 10 '/*!*/; 11 …
“# at 4” 说明”事件”的开始点
“end_log_pos 123” 说明”事件”的结束点
“#170412 12:05:32” 发生”事件”的时间点
“server id 1” 服务器的标识id