MySQL二进制日志文件格式
2017-12-28 13:33
891 查看
在MySQL中,二进制日志文件是非常重要的一种日志文件,MySQL数据库的高可用架构都是以二进制日志文件为基础的,在备份数据库时,除了要备份数据文件之外,二进制日志文件也一定要备份,如果忽略了这一点,可能会给以后的工作中造成很大的麻烦,MySQL数据库的二进制日志文件中存储的是所有执行成功的,注意是执行成功的对MySQL数据库的修改事件,包括增删改查时间和对表结构的修改事件。那么二进制日志文件以什么样的格式来存储这些内容呢?有三种格式:1.STATEMENT、2.ROW、3.MIXED,在MySQL中配置二进制日志文件的格式可以通过参数binlog_format来设置。
STATEMENT
以段的格式存储二进制日志,使用这种格式,数据库会将每个事件的SQL语句进行存储,这种格式的优点是日志规模比较小,可以减少磁盘和网络IO;缺点是,由于记录的是SQL语句,在主从复制架构模式下,为了保证从服务器上执行SQL语句的结果与主服务器一致,那么就必须记录上下文信息,但即使是这样,当在修改数据时使用了uuid(),user()这样的非确定性函数,还是可能会造成主从服务器数据的不一致性。
ROW
以行记录的形式保存二进制日志,在MySQL5.7之前的版本,默认的二进制日志格式是STATEMENT,到5.7之后默认的格式就是ROW了。以这种格式记录二进制日志会记录每一行数据的修改,显然这种格式的二进制日志文件通常会比STATEMENT格式的二进制日志文件大,比如一条SQL语句修改了100行记录,那么在STATEMENT格式的二进制日志文件中只会保留一条SQL语句,而在ROW格式的文件中会保留100个行记录。在主从复制架构下,ROW格式的二进制日志文件势必会造成更大的磁盘和网络IO操作。这种格式的优点是使主从复制数据一致性能得到更大的保障,而且对每一行数据的修改比基于STATEMENT的修改的复制效率要高,可以降低主从复制延迟。
MySQL数据库的开发者考虑到ROW格式的二进制日志文件过大的问题,设置了binlog_log_image参数,这个参数有三个值分别是:FULL、MINIMAL、NOBLOB。FULL表示记录数据行的所有信息,无论字段是否被更新;MINIMAL表示只记录数据行上给更新了的字段;NOBLOB表示记录TEXT和BLOB类型以外的字段。
MIXED
这种日志格式不是一种独立的日志格式,混合模式是STATEMENT和ROW格式的混合使用,判断使用哪种格式由数据库决定。
以上就是MySQL数据库二进制日志文件的几种格式,个人在实际使用过程中,基本都是使用ROW格式配以MINIMAL以保证数据的安全和尽量降低日志的大小。可以根据各自系统处理的业务的实际情况和网络等因素,选择适合自己的日志文件格式。
STATEMENT
以段的格式存储二进制日志,使用这种格式,数据库会将每个事件的SQL语句进行存储,这种格式的优点是日志规模比较小,可以减少磁盘和网络IO;缺点是,由于记录的是SQL语句,在主从复制架构模式下,为了保证从服务器上执行SQL语句的结果与主服务器一致,那么就必须记录上下文信息,但即使是这样,当在修改数据时使用了uuid(),user()这样的非确定性函数,还是可能会造成主从服务器数据的不一致性。
ROW
以行记录的形式保存二进制日志,在MySQL5.7之前的版本,默认的二进制日志格式是STATEMENT,到5.7之后默认的格式就是ROW了。以这种格式记录二进制日志会记录每一行数据的修改,显然这种格式的二进制日志文件通常会比STATEMENT格式的二进制日志文件大,比如一条SQL语句修改了100行记录,那么在STATEMENT格式的二进制日志文件中只会保留一条SQL语句,而在ROW格式的文件中会保留100个行记录。在主从复制架构下,ROW格式的二进制日志文件势必会造成更大的磁盘和网络IO操作。这种格式的优点是使主从复制数据一致性能得到更大的保障,而且对每一行数据的修改比基于STATEMENT的修改的复制效率要高,可以降低主从复制延迟。
MySQL数据库的开发者考虑到ROW格式的二进制日志文件过大的问题,设置了binlog_log_image参数,这个参数有三个值分别是:FULL、MINIMAL、NOBLOB。FULL表示记录数据行的所有信息,无论字段是否被更新;MINIMAL表示只记录数据行上给更新了的字段;NOBLOB表示记录TEXT和BLOB类型以外的字段。
MIXED
这种日志格式不是一种独立的日志格式,混合模式是STATEMENT和ROW格式的混合使用,判断使用哪种格式由数据库决定。
以上就是MySQL数据库二进制日志文件的几种格式,个人在实际使用过程中,基本都是使用ROW格式配以MINIMAL以保证数据的安全和尽量降低日志的大小。可以根据各自系统处理的业务的实际情况和网络等因素,选择适合自己的日志文件格式。
相关文章推荐
- mysql二进制日志文件中的事件
- mysql--二进制日志(bin-log)三种格式介绍及分析
- MySQL二进制日志文件过期天数设置说明
- window下启动MySQL二进制日志文件
- 18,MySQL 8.0参考手册4.6.8.3使用mysqlbinlog备份二进制日志文件
- 8、利用Mysql的二进制日志文件,进行数据库数据的恢复
- Mysql管理之二进制日志文件的管理
- window 下 mysql 启动 二进制日志文件
- 处理mysql的二进制日志文件mysql-bin
- 使用mysqlbinlog从二进制日志文件中查询mysql执行过的sql语句
- MySQL中二进制与重做日志文件的基本概念学习教程
- MySql通过二进制日志文件恢复数据
- MySQL5.6创建用户密码不再明文显示在binlog二进制日志文件里
- 关于mysql中表更新二进制日志文件与information_schema记录的几点发现
- MySql通过二进制日志文件恢复数据
- mysql二进制日志文件恢复数据库
- MySQL二进制日志格式类型详解
- mysql 清理 binlog 二进制日志文件
- MySQL 二进制日志格式
- mysql二进制日志文件出错导致mysql服务无法启动