二进制日志(binlog)

梦莱2年前技术文章585

一、简介

二进制日志(binlog)记录了数据库中所有的DDL和DML(除select语句)操作,语句以事件的形式保存,记录了数据库的更改变化,在主从复制和数据恢复中起着重要的作用。但要注意的一点是,只有成功执行了的事件才会记录在二进制日志中,未执行成功的不会保存在二进制日志中。

二、格式

mysql二进制日志有三种格式:statement、row、mixed。

该参数控制二进制日志文件的格式,可选格式有:

1. STATEMENT:日志中记录的是执行的SQL语句,日志量小,但是复制会出现主从不一致的情况

2. ROW:日志记录每一行数据的变化,日志量大,好处是主从复制数据不会出现不一致的情况,推荐使用这种方式

3. MIXED:结合STATEMENT和ROW的日志格式。

1、statement

基于段的格式 binlog_format=STATEMENT
这是mysql5.7之前默认的二进制日志格式
记录的是mysql执行的sql语句
优点:
日志记录量相对较小,节约磁盘及网络I/O
缺点:
必须要记录上下文信息,保证在从服务器上执行结果和主服务器上相同
对一些非确定性函数无法进行正确复制,比如UUID(), user()等
可能造成mysql复制的主备服务器数据不一致

2、row

基于行的日志格式 binlog_format=ROW
记录的是增删改查的数据行信息
优点:
使mysql主从复制更加安全
对每一行数据的修改比基于段的复制高效
由于误操作修改数据库信息,且没有备库可恢复时,可通过对日志文件数据操作反向处理恢复数据
缺点:
记录日志量较大
binlog_row_image =[FULL|MINIMAL|NOBLOB]

3、mixed

混合日志格式 binlog_format=MIXED
特点:
根据sql语句由系统决定在基于段和基于行的日志格式中进行选择

三、参数设置

1. log_bin: 该参数控制binlog文件存放的位置

2. binlog_format:该参数控制二进制日志文件的格式,具体格式上文已经提及。

3. expire_logs_days:该参数控制二进制日志保留天数,过了指定的天数后,日志将会自动删除。 

4. max_binlog_size:该参数控制二进制日志文件的大小

当日志文件达到该参数指定的大小时,就会创建新的二进制日志文件。不过,实际上二进制日志文件可能会超过该值,比如当二进制日志快要写满时,执行一个超大事物,由于事物特性决定相关事件必须连续,这种情况下,事件必须写到同一个日志文件,就会出现日志大于 max_binlog_size值的现象。该参数默认为1073741824 即(1GB).可以通过该性质判断是否有大事务。 

5. sync_binlog

该参数控制二进制日志刷新到磁盘的频率,单位为秒(s)。(双一之一)

相关文章

阿里云上oracle 11g rac部署

1 环境规划1.1 物理环境规划ECS 类型服务器类型服务器配置操作系统版本Oracle 版本阿里云g7se8C 32GCentOS 7.911.2.0.4.01.2 磁盘规划DBNAMEHOSTNA...

Yarn调度器和调度算法详解

Yarn调度器和调度算法详解

目前,Hadoop作业调度器主要有三种:FIFO、容量(Capacity Scheduler)和公平(Fair Scheduler)。Apache Hadoop3.1.3默认的资源调度器是C...

PG常用命令

1、连库相关#连库 $ psql -h <hostname or ip> -p <端口> [数据库名称] [用户名称] #连库并执行命令 $ psql -h <ho...

Python 装饰器

1、闭包自由变量:未在本地作用域中定义的变量。例如定义在内层函数外的外层函数的作用域中的变量。闭包:就是一个概念,出现在嵌套函数中,指的是内层函数引用到了外层函数的自由变量,就形成了闭包。很多语言都有...

ntp服务配置

ntp服务配置

安装:yum -y install ntp服务命令systemctl enable ntpd 开机启动systemctl start ntpd 启动服务systemctl stop ntpd 停止服务...

Debezium部署以及同步之DB2数据到Kafka的同步

Debezium部署以及同步之DB2数据到Kafka的同步

因为Debezium依赖于kafka之上,所以我们先部署kafka和zookeeper(忽略)。1 环境介绍Debezium1.9版本 Db2 11.5版本  附官网:http...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。