MySQL--binlog--介绍/用法
原文网址:MySQL--binlog--介绍/用法_IT利刃出鞘的博客-CSDN博客
简介
本文介绍MySQL的binlog。
binlog是什么
- binlog是记录所有数据库表结构变更(例如CREATE、ALTER TABLE…)以及表数据修改(INSERT、UPDATE、DELETE…)的二进制日志。
- binlog不会记录SELECT和SHOW这类操作,因为这类操作对数据本身并没有修改,但你可以通过查询通用日志来查看MySQL执行过的所有语句。
binlog用途
三个用途,分别为恢复、复制、审计(出自《MySQL技术内幕 InnoDB存储引擎》)。
- 恢复(recovery):某些数据的恢复需要二进制日志,例如,在一个数据库全备文件恢复后,用户可以通过二进制日志进行point-iii-time的恢复。
- 复制(replication):其原理与恢复类似,通过复制和执行二进制日志使一台远程的MySQL数据库(一般称为slave或standby)与一台MySQL数据库(一般称为master或primary)进行实时同步。
- 审计(audit):用户可以通过二进制日志中的信息来进行审计,判断是否有对数据库进行注入的攻击。
binlog格式
格式 |
定义 |
优点 |
缺点 |
row |
记录的是行数据的变更。(默认格式) |
非常清楚的记录每条数据详细的变更细节。 |
binlog日志会非常大,mysql主从同步时,会产生大量磁盘IO |
statement |
记录的是修改数据的sql |
不需要记录每一行的变化,日志文件小,节约IO,可提高性能 |
准确性差,对一些系统函数不能准确复制或者不能复制,如now(),uuid()等 |
mixed |
statement与row的结合: 一般的语句修改使用statement格式保存binlog,statement无法完成主从复制的操作(如一些函数),则采用row格式保存binlog。 |
row与statement的折中。 |
有可能发生主从不一致问题 |
业内目前推荐使用的是row模式,准确性高,虽然说文件大,但是现在有SSD和万兆光纤网络,这些磁盘IO和网络IO都是可以接受的。
不推荐使用mixed模式,因为有可能主从不一致,如下:假设master有两条记录,而slave只有一条记录。
当在master上更新一条从库不存在的记录时,也就是id=2的记录,你会发现master是可以执行成功的。而slave拿到这个SQL后,也会照常执行,不报任何异常,只是更新操作不影响行数而已。并且你执行命令show slave status,查看输出,你会发现没有异常。但是,如果你是row模式,由于这行根本不存在,是会报1062错误的。
binlog命令
开启binlog的方法
法1:set logbin='on';
法2:修改配置文件
[mysqld] # 这一行必须有,否则会出错
#log_bin
log-bin = mysql-bin #开启binlog
binlog-format = ROW #选择row模式
server_id = 12345 #配置mysql replication需要定义,不能和canal的slaveId重复
binlog相关命令
命令
作用
mysqlbinlog [options] log-files
查看binlog文件
show variables like 'binlog_format';
查看mysql的binlog模式
show variables like 'log_bin';
查看mysql是否开启binlog同步功能。默认是关闭的
show binary logs
获取binlog文件日志列表
show master status
查看当前正在写入的binlog文件
show master logs
查看master上的binlog文件
show binlog events
查看第一个binlog文件内容
show binlog events 'mysql-bin.000002'
查看指定binlog文件内容, 如:查看mysql-bin.000002文件内容
mysqlbinlog选项及含义
选项
含义
—help,-?
显示帮助消息并退出。
—database=db_name,-d db_name
只列出该数据库的条目(只用本地日志)。
-force-read,-f
使用该选项,如果mysqlbinlog读它不能识别的二进制日志事件,它会打印警告,忽略该事件并继续。没有该选项,如果mysqlbinlog读到此类事件则停止。
-hexdump,-H
在注释中显示日志的十六进制转储。该输出可以帮助复制过程中的调试。在MySQL 5.1.2中添加了该选项。
-host=host_name,-h host_name
获取给定主机上的MySQL服务器的二进制日志。
-local-load=path,-l path
为指定目录中的LOAD DATA INFILE预处理本地临时文件。
-offset=N,-o N
跳过前N个条目。
-password[=password],-p[password]
当连接服务器时使用的密码。如果使用短选项形式(-p),选项和 密码之间不能有空格。如果在命令行中-password或-p选项后面没有 密码值,则提示输入一个密码。
-port=port_num,-P port_num
用于连接远程服务器的TCP/IP端口号。
-position=N,-j N
不赞成使用,应使用-start-position。
-protocol={TCP | SOCKET | PIPE | -position
使用的连接协议。
-read-from-remote-server,-R
从MySQL服务器读二进制日志。如果未给出该选项,任何连接参数选项将被忽略。这些选项是-host、-password、-port、-protocol、-socket和-user。
-result-file=name, -r name
将输出指向给定的文件。
-short-form,-s
只显示日志中包含的语句,不显示其它信息。
-socket=path,-S path
用于连接的套接字文件。
-start-datetime=datetime
从二进制日志中第1个日期时间等于或晚于datetime参量的事件开始读取。datetime值相对于运行mysqlbinlog的机器上的本地时区。该值格式应符合DATETIME或TIMESTAMP数据类型。例如:shell> mysqlbinlog -start-datetime=”2004-12-25 11:25:56″ binlog.000003该选项可以帮助点对点恢复。
-stop-datetime=datetime
从二进制日志中第1个日期时间等于或晚于datetime参量的事件起停止读。关于datetime值的描述参见-start-datetime选项。该选项可以帮助及时恢复。
-start-position=N
从二进制日志中第1个位置等于N参量时的事件开始读。
-stop-position=N
从二进制日志中第1个位置等于和大于N参量时的事件起停止读。
-to-last-logs,-t
在MySQL服务器中请求的二进制日志的结尾处不停止,而是继续打印直到最后一个二进制日志的结尾。如果将输出发送给同一台MySQL服务器,会导致无限循环。该选项要求-read-from-remote-server。
-disable-logs-bin,-D
禁用二进制日志。如果使用-to-last-logs选项将输出发送给同一台MySQL服务器,可以避免无限循环。该选项在崩溃恢复时也很有用,可以避免复制已经记录的语句。注释:该选项要求有SUPER权限。
-user=user_name,-u user_name
连接远程服务器时使用的MySQL用户名。
-version,-V
显示版本信息并退出。还可以使用-var_name=value选项设置下面的变量:open_files_limit指定要保留的打开的文件描述符的数量。
其他网址
什么是 binlog_数据库_茅坤宝骏氹的博客-CSDN博客
mysqlbinlog用法详细说明_数据库_JBBOY的专栏-CSDN博客
MySQL--binlog--介绍/用法相关推荐
- MySQL Binlog 介绍
Binlog 简介 MySQL中一般有以下几种日志: 日志类型 写入日志的信息 错误日志 记录在启动,运行或停止mysqld时遇到的问题 通用查询日志 记录建立的客户端连接和执行的语句 二进制日志 记 ...
- MySQL Binlog 解析工具 Maxwell 详解
maxwell 简介 Maxwell是一个能实时读取MySQL二进制日志binlog,并生成 JSON 格式的消息,作为生产者发送给 Kafka,Kinesis.RabbitMQ.Redis.Goog ...
- MySQL Binlog三种格式介绍及分析
一.Mysql Binlog格式介绍 Mysql binlog日志有三种格式,分别为Statement,MiXED,以及ROW! 1.Statement:每一条会修改数据的sql都会记录在binlog ...
- mysql binlog update_mysql binlog 简单介绍与基于binlog数据恢复
mysql binlog 简单介绍与基于binlog数据恢复 通过备份文件恢复 binlog(本节重点) binlog 二进制日志文件 show variables like 'log_bin'; 二 ...
- [转载]MySQL exists的用法介绍
原文摘自:http://www.cnblogs.com/glory-jzx/archive/2012/07/19/2599215.html MySQL exists的用法介绍 有一个查询如下: 1 S ...
- Mysql Binlog三种格式详细介绍
binlog 的不同模式有什么区别呢? 1.Statement:每一条会修改数据的sql都会记录在binlog中. 优点:不需要记录每一行的变化,减少了binlog日志量,节约了IO,提高性能.(相比 ...
- mysql binlog mixed_MySQL Binlog三种格式介绍及分析
MySQL binlog日志有三种格式,分别为Statement,MiXED,以及ROW! 1.Statement:每一条会修改数据的sql都会记录在binlog中. 优点:不需要记录每一行的变化, ...
- mysql回滚用法_Mysql误操作后利用binlog2sql快速回滚的方法详解
前言 在日常工作或者学习中,操作数据库时候难免会因为"大意"而误操作,需要快速恢复的话通过备份来恢复是不太可能的,下面这篇文章主要给大家介绍关于Mysql误操作后利用binlog2 ...
- mysql binlog查看工具_【使用 Rust 写 Parser】4. 解析 binlog
系列所有文章 PrivateRookie:[使用 Rust 写 Parser]1. 初识 nomzhuanlan.zhihu.com PrivateRookie:[使用 Rust 写 Parser] ...
- 17.1 MySQL主从介绍 17.2 准备工作 17.3 配置主 17.4 配置从 17.5 测试主从同步
2019独角兽企业重金招聘Python工程师标准>>> 第十七章 MySQL主从配置 17.1 MySQL主从介绍 MySQL主从又叫做Replication.AB复制.简单讲就是A ...
最新文章
- shell命令查阅端口信息_短小强大的8个Linux命令,分分钟帮你提高工作效率!
- 主成分分析(Principle Component Analysis)PCA的核心思想是什么?PCA算法的优缺点?增量PCA模型, 随机PCA, 模型、 核化PCA分别是什么?使用时如何选择?
- 基于linuxunix高性能web服务器架构思路分析
- 【 C 】KR C 与 ANSI C的区别(KR C,ANSI C,C89,C90,C99)(C11)
- 使用Git命令时出现fatal: this operation must be run in a work tree提示,该如何解决
- 学习笔记之Java程序设计实用教程
- Windows 下的批处理脚本基础——炫酷命令提示符窗口(让窗口变成你喜欢的样子)
- 127.0.0.1 myz.php,附录 – 1.0升级到2.0注意事项 - GatewayWorker 2.x 3.x 手册
- Caffe傻瓜系列(10):draw_net.py绘制caffe net结构
- linux7mysql集群_linux下mysql集群搭建
- BP神经网络设计方法
- 证监会行业分类代码对照表(2001+2012年)
- Java调用webservice
- 【托业】【新托业TOEIC新题型真题】学习笔记7-题库二-P1~4
- 解决resetFields报错 underfined
- C语言,枚举法求两个数的最大公约数
- 第二章:Java面向对象:抽象(abstract)类、模板方法设计模式、接口(interface)、关键字-implements(实现)、代理模式
- 前端人应该知道的 Centos/Docker/Nginx/Node/Jenkins 的基本操作
- VIN码识别-汽修行业新技术
- 正负数原码、反码、补码以及位运算
热门文章
- 常见的运营商网络安全问题
- 二维码生成器微信小程序源码
- 26 | Superscalar和VLIW:如何让CPU的吞吐率超过1?
- 2019杭电多校三 C. Yukikaze and Demons (点分治)
- Word文档标题自动增加序号
- 山西等保测评机构项目测评收费价格标准参考
- 【图像处理】PS曲线工具matlab实现 交互自定义灰度映射(Gray Level Transformation)附代码链接
- android隐藏其他应用图标,【Android】隐藏app图标以及隐式启动其他APP
- WIN10 修改用户下文件夹的名称
- voip 网络电话快速搭建