二进制日志(binlog)

梦莱2年前技术文章701

一、简介

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

相关文章

helm安装部署trino对接hive(一)

helm安装部署trino对接hive(一)

前提:本文前提是基于hive组件已经提前安装的情况下,安装部署好trino容器之后进行对hive组件的对接。helm trino地址:https://artifacthub.io/packages/h...

Flinksql Kafka 接收流数据并打印到控制台

Flinksql Kafka 接收流数据并打印到控制台

本文目的使用Flink SQL创建一个流处理作业,将来自Kafka主题"dahua_picrecord"的数据写入到另一个表”print_table”控制台中。使用sql-client前 需要启动ya...

CDP实操--配置RangerKMS 并基于Navigator Trustee Server存储KMS密钥

CDP实操--配置RangerKMS 并基于Navigator Trustee Server存储KMS密钥

1.1添加用于部署KMS的服务器到集群从集群host页面里添加两台服务器用于部署rangerkms选择kms-1和kms-2两台服务器等待parcel分发到新加服务器上并自动完成激活 等待host i...

Hadoop集群小文件合并优化建议指导

Hadoop集群小文件合并优化建议指导

1 综述1.1 综述本指导书旨在指导大数据集群使用者在大数据集群小文件较多的情况下,针对小文件进行优化处理,有效减小集群文件对象数目,减缓namenode所承载的压力,减少mapreduce任务扫描文...

Elasticsearch如何使用内存

ES作为一个JAVA程序,其对内存的使用和管理依赖底层JVM。因而设置内存时需要遵从JAVA的普适原则,如-xmx和-xms设置为相同值等。在JVM的基础上,ES对内存的使用可按功能分为以下几大部分:...

PostgreSQL 命令行工具介绍

前言psql 是 PostgreSQL 自带的命令行交互客户端工具,类似于 MySQL 的 mysql -u -p 不过相当于 MySQL 的命令行工具 psql 功能更丰富些,例如单击 tab 自动...

发表评论    

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