基本说明
-
定义
binlog基本定义:二进制日志,也成为二进制日志,记录对数据发生或潜在发生更改的SQL语句,并以二进制的形式保存在磁盘中; -
作用
可以用来查看数据库的变更历史(具体的时间点所有的SQL操作)、数据库增量备份和恢复(增量备份和基于时间点的恢复)、Mysql的复制(主主数据库的复制、主从数据库的复制) -
格式
binlog的格式有三种,这也反应了mysql的复制技术:基于SQL语句的复制(statement-based replication, SBR),基于行的复制(row-based replication, RBR),混合模式复制(mixed-based replication, MBR)。相应地,binlog的格式也有三种:STATEMENT,ROW,MIXED。 -
日志位置
修改my.cnf参数文件
[mysqld]
log-bin=mysql-bin
语法说明
-
命令
binlog不能直接用文本的方式打开。
使用show binlog events方式可以获取当前以及指定binlog的日志,不适宜提取大量日志。
使用mysqlbinlog命令行提取(适宜批量提取日志)。 -
语法
直接查看单个二进制日志文件:
mysqlbinlog filename提取指定position位置的binlog日志
--start-position="120" --stop-position="332"提取指定数据库binlog并转换字符集到UTF8
--database=test --set-charset=utf8指定结束时间
--start-datetime='2015-01-20 09:00:00' --stop-datetime='2015-01-20 12:59:59'指定row格式解码
--base64-output=decode-rows-v用于输出基于row模式的binlog日志
-vv为列数据类型添加注释
日志格式
# at 579744(开始位置)
#150905 7:02:54(时间截) server id 2543308(产生该事件的服务id) end_log_pos(日志的结束位置) 579815 Query(事件类型) thread_id=21 exec_time=0 error_code=0
SET TIMESTAMP=1441407774/*!*/;
BEGIN
执行的sql语句
其他说明
- 在数据出错的情况下,使用 MYSQLBINLOG 来恢复数据