简介
二进制日志是MySQL服务器用来记录数据修改事件的,比如INSERT、UPDATE、DELETE等会导致数据发生变化的语句,SELECT语句不会被记录在内。MySQL必须先执行完一条语句才能知道它是否修改了数据,因此写入二进制日志文件的时间是语句执行完成的时间。写入顺序是按语句执行完成的先后顺序,事务中的语句会先被缓存起来,成功提交后才会被写入,回滚则不会被写入。非事务的存储引擎,所有的修改会立刻写入到二进制日志中。
二进制日志顾名思义不是文本而是一种更有效率的二进制格式,它比文本占用更少的空间,但是可读性就很差了,必须使用mysqlbinlog工具才能转换为可读的文本。二进制日志主要用于数据库备份和故障时恢复数据,配置MySQL主从复制必须启用二进制日志。
二进制日志索引文件中会列出所有二进制日志文件,此文件是文本的因此可以直接查看,文件的最后一行就是当前正在使用的二进制日志文件。
 
启用和关闭
show variables like 'log_bin' 可以查看当前数据库是否已经启用了二进制日志,ON表示启用,OFF表示未启用。show variables like 'log_bin_basename' 返回二进制日志基本文件名,show variables like 'log_bin_index' 返回二进制日志索引文件名。
在MySQL配置文件中,[mysqld]下配置 log_bin 即可开启二进制日志,此时默认使用HOSTNAME-bin作为二进制日志的基本文件名,基本文件名加上一组顺序编号000001、000002...就是二进制日志文件名了,例如localhost-bin.000001。每次启动服务器、执行刷新日志命令(flush logs)以及二进制日志文件到达最大长度的时候,服务器会按顺序号生成下一个二进制日志文件,参数max_binlog_size决定了二进制日志最大长度。log_bin=xx指定了二进制日志基本文件名为xx。默认二进制日志索引文件名是二进制日志基本文件名加上.index,参数 log_bin_index可以指定二进制日志索引文件名,如果指定值没有扩展名,默认会加.index。
关闭二进制日志只要删除相应配置即可。flush logs会关闭当前二进制日志文件并重新创建一个。
 
格式
二进制日志的格式有STATEMENT、ROW、MIXED,参数binlog_format 决定了使用何种格式。
STATEMENT表示基于语句的格式,就是记录执行的语句,优点是减少了日志量,但是还必须记录执行语句时相关上下文信息,这很容易导致主从复制时语句执行出错。
ROW表示基于行的格式,优点是不用再记录执行语句时的上下文,缺点是增加了记录量,每一条被修改过的行都要被记录,本来只要记录执行时的update语句,现在要记录所有被修改的行的update语句。
MIXED是以上两种混合使用,由MySQL决定何时使用哪一种。
 
查看
使用mysqlbinlog工具,这个工具一般在MySQL安装目录的bin目录下。执行如下语句
mysqlbinlog -vv --base64-output=decode-rows localhost-bin.000001,也可以重定向到外部文件中 mysqlbinlog -vv --base64-output=decode-rows localhost-bin.000001 >000001.txt。

MySQL 5.7二进制日志的更多相关文章

  1. MySQL和Mariadb二进制日志binlog详解

    Mariadb/mysql提供了4中不同的日志,分别是错误日志(error.log).普通日志(general log).慢日志(slow log)以及二进制日志(binlog).错误日志记录了系统启 ...

  2. MySQL复制(二):二进制日志、二进制日志的结构和内容

    通常只有即将执行完毕的语句才会写入到二进制日志中.但是一些特殊情况:语句附加的信息或直接代替语句被写入. 二进制日志记录的内容 作用:记录数据库中表的更变,用于复制和PITP(即时恢复) 基于语句SB ...

  3. mysql运维-二进制日志BINARY LOG清理

       1.1 方法1:PURGE MASTER LOGS     语法: PURGE { BINARY | MASTER } LOGS { TO 'log_name' | BEFORE datetim ...

  4. MySQL系列(五)--二进制日志对主从复制的影响

    MySQL复制是基于主库上的二进制日志来完成,复制是异步的,可能存在延迟 MySQL日志分为: 1.服务层日志:二进制日志.通用日志.慢查日志 2.存储引擎层日志:innodb中重做日志和回滚日志 二 ...

  5. MySQL二进制日志总结

    二进制日志简单介绍 MySQL的二进制日志(binary log)是一个二进制文件,主要用于记录修改数据或有可能引起数据变更的MySQL语句.二进制日志(binary log)中记录了对MySQL数据 ...

  6. MySQL二进制日志备份和恢复详解

    原文链接:http://www.showerlee.com/archives/681 ****经实践,该教程ok,特在此分享**** 基本概念 定义: 二进制日志包含了所有更新了数据或者已经潜在更新了 ...

  7. MySQL中基于mysqldump和二进制日志log-bin进行逻辑备份以及基于时间点的还原

    本文出处:http://www.cnblogs.com/wy123/p/6956464.html 本文仅模拟使用mysqldump和log-bin二进制日志进行简单测试,仅作为个人学习笔记,可能离实际 ...

  8. mysql二进制日志详解

    一.什么是二进制日志 二进制日志主要记录mysql数据库的变化,二进制日志包含所有更新了数据或者潜在更新了数据(如没有匹配到任何行的delete语句),语句以时间的形式保存,描述了数据的更改.二进制日 ...

  9. MySQL二进制日志功能介绍

    二进制日志记录所有更新数据的SQL语句,其中也包含可能更新数据的SQL语句,例如DELETE语句执行过程中无匹配的行.二进制日志中还包含了与执行SQL语句相关的内容,例如SQL语句执行的时间.错误代码 ...

随机推荐

  1. [PyTorch 学习笔记] 2.1 DataLoader 与 DataSet

    thumbnail: https://image.zhangxiann.com/jeison-higuita-W19AQY42rUk-unsplash.jpg toc: true date: 2020 ...

  2. webpack(从上篇博客中拿出来的)

    插件配置: emmet: vscode内置了这个,但是没有开启,要在设置里面"emmet.triggerExpansionOnTab": true, vscoed-icons插件: ...

  3. 快速解决Ubuntu/linux 环境下QT生成没有可执行文件(application/x-executable)

    快速解决Ubuntu/linux 环境下QT生成没有可执行文件(application/x-executable)(转载)   问题描述 与windows环境下不同,linux选择debug构建时并不 ...

  4. Unity 内嵌网页

    uniwebview 官网 http://uniwebview.onevcat.com/reference/class_uni_web_view.html http://uniwebview.onev ...

  5. uniapp 获取元素高度 距离顶部高度等

    let _this=this let height="" const query = uni.createSelectorQuery() query.select('#u-drop ...

  6. Vue-router的用法与使用步骤

    Vue-router的使用步骤: Vue Router的使用步骤还是比较清晰的,按照步骤一步一步就能完成路由操作 A.导入js文件 B.添加路由链接 C.添加路由占位符(最后路由展示的组件就会在占位符 ...

  7. 使用代码生成工具快速生成基于ABP框架的Vue+Element的前端界面

    世界上唯一不变的东西就是变化,我们通过总结变化的规律,以规律来应付变化,一切事情处理起来事半功倍.我们在开发后端服务代码,前端界面代码的时候,界面都是依照一定的规律进行变化的,我们通过抽取数据库信息, ...

  8. C#程序执行时设置刷新等待

    背景 C#在进行某些调用操作时需要隐藏背景,等待刷新. 步骤 1.前端设置 <!--Loading Mask Region--> <div> <div id=" ...

  9. linux基础一(目录结构)

    一.linux目录结构 1.根目录/下 bin:用户二进制文件,常用命令都在此目录下 sbin;这个目录下的linux命令通常由系统管理员使用 etc:包含所有程序所需的配置文件,以及服务的启动文件 ...

  10. jmeter进行MySQL压测

    jmeter怎么对数据库进行压测 目录 jmeter怎么对数据库进行压测 点击测试计划,再点击"浏览",把JDBC驱动添加进来: 然后添加配置元件 再添加一个采样器:JDBC re ...