二进制日志
概述
二进制日志 (BINLOG) 记录了所有的DDL(数据定义语言) 和DML (数据操作语言) 语句,但是不包括数据查询语句,此日志对于灾难时的数据恢复起着极其重要的作用,MySQL的主从复制,就是通过 binlog实现的
二进制日志默认情况下是没有开启的,需要到MySQL的配置文件中开启,并配置MySQL日志的格式。
配置文件
my.cnf日志存放位置:配置时如果给定了文件名但是没有指定路径,则日志默认写入MySQL的数据目录。
配置文件内容
# 配置开启 binlog 日志,日志的文件前缀为 mysqlbin ---> 生成的文件名为 mysqlbin.000001 mysqlbin.000002 ...
log_bin=mysqlbin
# 配置二进制日志的格式
binlog_format=STATEMENT
# 有以下参数可选
# STATEMENT
# ROW
# MIXED日志格式
STATEMENT
该日志格式在日志文件中记录的都是SQL语句( statement ),每一条对数据进行修改的SQL都会记录在日志文件中,通过MySQL提供的mysqlbinlog工具可以清晰地看到每条语句的文本。
主从复制的时候,从库(slave)会将日志解析为原文本,并在从库重新执行一次。
ROW
该日志格式在日志文件中记录的是每一行的数据变化,而不是记录SQL语句。比如执行语句:UPDATE t_user set name = 'zs'; 如果是STATEMENT日志格式在日志中会记录一行SQL语句;如果是ROW,由于是对全表进行更新,也就是每一行记录都会发生变化,ROW格式的日志中会记录每一行的数据变化。
MIXED
这是目前MySQL默认的日志格式,即混合了STATEMENT和ROW两种格式。默认情况下采用STATEMENT,但是在一些特殊情况下采用ROW来进行记录。MIXED格式能尽量利用两种模式的优点,而避开他们的缺点。
查看日志文件
Last updated