[转帖]Mysql binlog 介绍
binlog介绍
1、什么是binlog
binlog是一个二进制格式的文件,用于记录用户对数据库更新的SQL语句信息,例如更改数据库表和更改内容的SQL语句都会记录到binlog里,但是对库表等内容的查询不会记录。
默认情况下,binlog日志是二进制格式的,不能使用查看文本工具的命令(比如,cat,vi等)查看,而使用mysqlbinlog解析查看。
2.binlog的作用
当有数据写入到数据库时,还会同时把更新的SQL语句写入到对应的binlog文件里,这个文件就是上文说的binlog文件。使用mysqldump备份时,只是对一段时间的数据进行全备,但是如果备份后突然发现数据库服务器故障,这个时候就要用到binlog的日志了。
主要作用是用于数据库的主从复制及数据的增量恢复。
1.啥是binlog? 记录数据库增删改,不记录查询的二进制日志. 2.作用:用于数据恢复.
3、如何开启binlog日志功能
在mysql的配置文件my.cnf中,增加log_bin参数即可开启binlog日志,也可以通过赋值来指定binlog日志的文件名,实例如下:
[root@DB02 ~]# grep log_bin /etc/my.cnf log_bin = /application/mysql/logs/dadong-bin # log_bin [root@DB02 ~]# 提示:也可以按“log_bin = /application/mysql/logs/dadong-bin”命名,目录要存在 为什么要刷新binlog?找到全备数据和binlog文件的恢复临界点.
4、 如何配置binlog
[root@db02 ~]# mkdir /application/mysql/logs [root@db02 ~]# chown -R mysql.mysql /application/mysql/logs 开启binlog 编辑/etc/my.cnf [mysqld] log_bin = /application/mysql/logs/dadong-bin 重启:/etc/init.d/mysqld restart [root@db02 ~]# ll /application/mysql/logs/ total 8 -rw-rw---- 1 mysql mysql 120 Jun 21 12:04 dadong-bin.000001 -rw-rw---- 1 mysql mysql 42 Jun 21 12:04 dadong-bin.index 如何刷新 每天晚上0点备份数据库 mysqldump -A -B -F >/opt/$(date +%F).sql [root@db02 ~]# ll /application/mysql/logs/ -rw-rw---- 1 mysql mysql 168 Jun 21 12:06 dadong-bin.000001 -rw-rw---- 1 mysql mysql 168 Jun 21 12:06 dadong-bin.000002 -rw-rw---- 1 mysql mysql 210 Jun 21 12:07 dadong-bin.index 提示:每个库刷新一次.
5、mysql工具mysqlbinlog常用参数
mysqlbinlog命令常用参数 |
参数说明 |
-d ,--database=name |
根据指定库拆分binlog(拆分单表binlog可通过SQL关键字过滤) |
-r ,--result-file=name |
指定解析binlog输出SQL语句的文件 |
-R,--read-from-remote-server |
从mysql服务器读取binlog日志,是下面参数的别名 |
-j,--start-position=# |
读取binlog的起始位置点,#号是具体的位置点 |
--stop-position=# |
读取binlog的停止位置点,#号是具体的位置点 |
--start-datetime=name |
读取binlog的起始位置点,name是具体的时间,格式为:2004-12-25 11:25:26 |
--stop-datetime=name |
读取binlog的停止位置点,name是具体的时间,格式为:2004-12-25 11:25:26 |
--base64-output=decode-rows |
解析row级别binlog日志的方法,例如:mysqlbinlog --base64-output=decode-rows -v mysqlbin.000016 |
例子:
例:mysqlbinlog -d dadong dadong-bin.000001 dadong-bin.000002 -r bin.log ##利用mysqlbinlog解析binlog文件到bin.log中。 利用mysqlbinlog -d参数详解指定库的binlog日志 -d 指定解析dadong数据库, -r 接卸成sql语句,指定生成的文件
mysqlbinlog可以指定-d实现分库导出binlog,如果使用-d参数,那更新数据时,必须有use库名,才能分出指定库的binlog,列如,写入数据库的语句必须采用下面写法:
use daong; insert into test values(1,'dongdong')
6、获取binlog内容
6.1、按照位置截取binlog内容
按照位置截取binlog内容的优点是精确,但是要花费时间选择位置,例如:要截取dadong-bin.000009文件从位置365到位置465的日志,命令如下:
[root@DB02 ~]# mysqlbinlog dadong-bin.000009 --start-position=365 --stop-position=465 -r pos.sql 提示:开始位置必须存在binlog里,结尾位置点可以不存在。 若指定了开始位置,不指定结束位置,则会截取开始处到结尾的binlog日志: mysqlbinlog dadong-bin.000009 --start-position=365 -r pos.sql 若指定了结束位置,不指定开始位置,则截取最开始到最后面的全部binlog日志: mysqlbinlog dadong-bin.000009 --stop-position=465 -r pos.sql 所谓的位置点,就是mysqlbinlog解析文件里的不同行行首的“#at 数字”标识的数据。
例子:
mysqlbinlog dadong-bin.000009 --start-position=365 --stop-position=456 -r pos.sql mysqlbinlog dadong-bin.000005 --start-position=2265 --stop-position=2552 -r pos.sql mysqlbinlog dadong-bin.000009 --start-position=365 --stop-position=456 -r pos.sql mysqlbinlog dadong-bin.000009 --start-position=365 -r pos.sql mysqlbinlog dadong-bin.000009 --stop-position=456 -r pos.sql 截取部分binlog根据pos mysqlbinlog dadong-bin.000009 --start-position=365 --stop-position=456 -r pos.sql mysqlbinlog dadong-bin.000009 --start-position=365 -r pos.sql mysqlbinlog dadong-bin.000009 --stop-position=456 -r pos.sql 截取部分binlog根据时间 mysqlbinlog dadong-bin.000009 --start-datetime='2014-10-16 17:14:15' --stop-datetime='2014-10-16 17:15:15' -r time.sql mysqlbinlog dadong-bin.000009 --start-datetime='2014-10-16 17:14:15' -r time.sql mysqlbinlog dadong-bin.000009 --stop-datetime='2014-10-16 17:15:15' -r time.sql
6.2、按时间位置截取binlog内容
通过时间参数截取部分binlog:--start-datetime=‘2017-10-16 17:14:25’ --stop-datetime=‘2017-10-16 17:18:30’
[转帖]Mysql binlog 介绍的更多相关文章
- MySQL Binlog 介绍
Binlog 简介 MySQL中一般有以下几种日志: 日志类型 写入日志的信息 错误日志 记录在启动,运行或停止mysqld时遇到的问题 通用查询日志 记录建立的客户端连接和执行的语句 二进制日志 记 ...
- MySQL Binlog 解析工具 Maxwell 详解
maxwell 简介 Maxwell是一个能实时读取MySQL二进制日志binlog,并生成 JSON 格式的消息,作为生产者发送给 Kafka,Kinesis.RabbitMQ.Redis.Goog ...
- MySql Binlog 说明 & Canal 集成MySql的更新异常说明 & MySql Binlog 常用命令汇总
文章来源于本人的印象笔记,如出现格式问题可访问该链接查看原文 原创声明:作者:Arnold.zhao 博客园地址:https://www.cnblogs.com/zh94 目录 背景介绍 开启MySq ...
- Mysql Binlog 三种格式介绍及分析
一.Mysql Binlog格式介绍 Mysql binlog日志有三种格式,分别为Statement,MiXED,以及ROW! 1.Statement:每一条会修改数据的sql都会记录在 ...
- MySQL Binlog的介绍
binlog基本定义:二进制日志,也成为二进制日志,记录对数据发生或潜在发生更改的SQL语句,并以二进制的形式保存在磁盘中: 作用:MySQL的作用类似于Oracle的归档日志,可以用来查看数据库的变 ...
- Mysql Binlog三种格式详细介绍
一.MySQL Binlog格式介绍 mysql binlog日志有三种格式,分别为Statement,MiXED,以及ROW! 查看binlog的格式的脚本: 二.binlog 的不同模式有什么区别 ...
- Mysql Binlog三种格式介绍及分析【转】
一.Mysql Binlog格式介绍 Mysql binlog日志有三种格式,分别为Statement,MiXED,以及ROW! 1.Statement:每一条会修改数据的sql都会记录在 ...
- MySQL Binlog三种格式介绍及分析
Mysql binlog日志有三种格式,分别为Statement,MiXED,以及ROW! 1.Statement:每一条会修改数据的sql都会记录在binlog中. 优点:不需要记录每一行的变化,减 ...
- Mysql Binlog日志文件介绍
一.Binlog简介 官方文档参考 https://dev.mysql.com/doc/refman/5.5/en/binary-log.html Binlog(Binary Log) 指数据库的表创 ...
随机推荐
- 彻底搞懂prototype和__proto__
prototype是函数特有的属性,是Function的静态属性:__proto__是对象特有的属性. 因为函数本身是一种对象,所以函数既有prototype属性也有__proto__属性. 当函数使 ...
- 独立看门狗 IWDG
一,独立看门狗 二,独立看门狗的时钟源 独立看门狗拥有自己的时钟源,不依赖PLL时钟输出的分频信号,能够独立运行,这样子的好处就是PLL假如受到干扰, 导致运行异常,独立的看门狗还能正常地进行工作,如 ...
- 牛客练习赛39 B.选点
链接:https://ac.nowcoder.com/acm/contest/368/B 来源:牛客网 题目描述 有一棵n个节点的二叉树,1为根节点,每个节点有一个值wi.现在要选出尽量多的点. 对于 ...
- OpenCV2.4.5 加 Cuda5.0在vs2010下工
想用opencv结合gpu加速处理,想重新编译opencv结合cuda模块无奈总出错 在国外网站上搜到一个cmakelists比较靠谱,项目可以生成,但还没有测试程序把list贴出来 ######## ...
- AGC009C Division into Two
题意 有\(n\)个严格升序的数,请你分成两个集合\(A\)和\(B\),其中一个集合任意两数之差不小于\(x\),另一集合任意两数之差不小于\(y\). 问方案数,集合可以为空. $n \le 10 ...
- 基于OVS命令的VLAN实现
利用mininet创建如下拓扑,要求支持OpenFlow 1.3协议,主机名.交换机名以及端口对应正确 直接在Open vSwitch下发流表,实现如下连通性要求 h1 -- h4互通 h2 -- h ...
- Leetcode题目322.零钱兑换(动态规划-中等)
题目描述: 给定不同面额的硬币 coins 和一个总金额 amount.编写一个函数来计算可以凑成总金额所需的最少的硬币个数.如果没有任何一种硬币组合能组成总金额,返回 -1. 示例 1: 输入: c ...
- 连接Android模拟器
一.如何找到adb? 安装夜神安卓模拟器后,电脑桌面会有“夜神模拟器”的启动图标,鼠标右键--打开文件所在的位置,就会进入***\Nox\bin,默认路径是C:\Program Files (x ...
- spring boot 学习常用网站
springboot的特性 https://www.cnblogs.com/softidea/p/5644750.html 1.自定义banner https://www.cnblogs.com/cc ...
- Mac卸载mysql数据库
mac下的应用程序中一般是无法找到mysql的安装文件进行直接删除的,所以,通常需要打开命令行工具Terminal后,使用如下的命令进行删除: 1 sudo rm /usr/local/mysql2 ...