二进制日志(binlog)

梦莱2年前技术文章752

一、简介

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

相关文章

SQL Server优化入门系列(五)—— SQL Server的执行计划

SQL Server优化入门系列(五)—— SQL Server的执行计划

定位到TOP SQL后,怎么优化呢?我们需要分析SQL的执行计划,制定相应的优化策略。这篇文章中,我们将介绍查看SQL Server执行计划的几种方法。本文测试案例中使用了AdventureWorks...

REPMGR-PG高可用搭建(一)

REPMGR-PG高可用搭建(一)

PG高可用对比数据库复制的术语和定义这些术语和定义应该有助于讨论复制。在与其他Postgres开发人员进行了大量讨论之后,我编译了它们,但是这些定义应该是普遍可用的,并且也应该适用于其他RDBMS。复...

Linux下的IO统计工具:iostat,iotop

Linux下的IO统计工具:iostat,iotop

iostat      监视系统输入输出设备和CPU的使用情况。iostat命令 被用于监视系统输入输出设备和CPU的使用情况。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmst...

CDN下载文件报错

CDN下载文件报错

一、问题现象通过域名下载文件,下载到100M左右的时候,会提示下载错误,无法继续下载。二、解决思路业务链路:域名解析到cdn---slb--后端服务器。首先需要判断问题出在哪一层,再看这一层是否有什么...

CDH实操--集成 freeipa

CDH实操--集成 freeipa

1 概述环境准备: 1)安装cdh6.2.1 2)安装FreeIPA,server和client(在所有cdh节点)2 集成2.1 krb5.conf修改注释:default_ccache_nam...

Linux SSSD同步大量AD用户缓慢

Linux SSSD同步大量AD用户缓慢

1、背景在使用AD + sssd (ad作为ldap)同步用户,其中AD中存在10000+ 用户,同步时,用户信息获取缓慢,导致cdh的namenode 的rpc 队列打高,服务不正常。id 用户达到...

发表评论    

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