二进制日志(binlog)

梦莱2年前技术文章629

一、简介

二进制日志(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)。(双一之一)

相关文章

Kafka指标性能分析

Kafka指标性能分析

1)      根据group组查看消费情况(数值不准,仅可参考)根据之前的分析,只有driver的consumer会提交offset,因此通过./k...

MySQL运维实战(4.6) SQL_MODE之NO_BACKSLASH_ESCAPES

设置NO_BACKSLASH_ESCAPES后,反斜杠(\)不作为转义符。不设置NO_BACKSLASH_ESCAPES时,反斜杠(\)用来转义后一个字符mysql> create&n...

手动模拟 CNI 网络中 host-gw 模式互通

手动模拟 CNI 网络中 host-gw 模式互通

在Kubernetes中,CNI的作用就是让两台Node节点之间的Pod能够互相通信,其中有封包的方式,也有路由转发的方式,host-gw就是路由转发的方式。host-gw 模式介绍host-gw模式...

SQL Server优化入门系列(四)——  找到Top SQL

SQL Server优化入门系列(四)—— 找到Top SQL

说明从会话信息中我们可以查看实例当前正在运行的SQL、当前被Block的SQL。但是如果要查看过去一段时间执行的SQL,我们有几个选择1、通过外部SQL审计平台记录所有SQL。2、通过SQL Serv...

分布式存储-GlusterFS

分布式存储-GlusterFS

一、分布式存储介绍我们知道NAS是远程通过网络共享目录, SAN是远程通过网络共享块设备。那么分布式存储你可以看作拥有多台存储服务器连接起来的存储输出端。把这多台存储服务器的存储合起来做成一个整体再通...

 大数据集群监控配置操作指导(四)Spark监控使用jmx

大数据集群监控配置操作指导(四)Spark监控使用jmx

graphite_exporter方式Graphite 来收集度量标准,Grafana 则用于构建仪表板,首先,需要配置 Spark 以将 metrics 报告到 Graphite。prometheu...

发表评论    

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