MySQL之二进制日志
文章目录
- MySQL之二进制日志
- 1.二进制日志介绍
- 2.二进制日志作用
- 3.二进制日志文件讲解
- 4.二进制日志记录格式
- 5.查看二进制日志
- 6.删除二进制文件
- 7.演示(查看二进制日志)
- 8.演示(删除二进制文件)
注:本文是以windos mysql v8.0.25、Linux mysql v8.0.26 进行讲解
MySQL之二进制日志
1.二进制日志介绍
二进制日志(BINLOG)记录了所有的 DDL(数据定义语言)语句和 DML(数据操纵语言)语句,但不包括数据查询(SELECT、SHOW)语句。
在MySQL8版本中,默认二进制日志是开启着
2.二进制日志作用
作用:①. 灾难时的数据恢复;②. MySQL的主从复制。
3.二进制日志文件讲解
参数说明:
log_bin_basename:当前数据库服务器的binlog日志的基础名称(前缀),具体的binlog文件名需要再该basename的基础上加上编号(编号从000001开始),第一个文件写满了或者日志格式发生变更之后会再次开启一个新的文件000002来写日志
log_bin_index:binlog的索引文件,里面记录了当前服务器关联的binlog文件有哪些
show variables like '%log_bin%';
windos下查看:
Linux/Docker下查看:
4.二进制日志记录格式
MySQL服务器中提供了多种格式来记录二进制日志,具体格式及特点如下:
Row记得是某一行比如update前update后的数据,但STATEMENT记录的仅仅是SQL语句
注:>如果我们需要配置二进制日志的格式,Linux/Docker的话只需要在 /etc/my.cnf 中配置 binlog_format 参数即可。
MySQL 的 Binlog 有几种录入格式,分别有什么区别
有三种格式,statement,row 和 mixed。
1.statement 模式下,每一条会修改数据的 SQL 都会记录在 Binlog 中。不需要记录每一行的变化,减少了 Binlog 日志量,节约了 IO,提高性能。由于sql 的执行是有上下文的,因此在保存的时候需要保存相关的信息,同时还有一些使用了函数之类的语句无法被记录复制
2.row 级别下,不记录 SQL 语句上下文相关信息,仅保存哪条记录被修改。记录单元为每一行的改动,基本是可以全部记下来但是由于很多操作,会导致大量行的改动(比如 alter table),因此这种模式的文件保存的信息太多,日志量太大
3.mixed,一种折中的方案,普通操作使用 statement 记录,当无法使用statement 的时候使用 row;此外,新版的MySQL中对row级别也做了一些优化,当表结构发生变化的时候,会记录语句而不是逐行记录.
show variables like '%binlog_format%';
5.查看二进制日志
由于日志是以二进制方式存储的,不能直接读取,需要通过二进制日志查询工具 mysqlbinlog 来查看,具体语法:
参数选项:
-d 指定数据库名称,只列出指定的数据库相关操作。
-o 忽略掉日志中的前n行命令。
-v 将行事件(数据变更)重构为SQL语句
-vv 将行事件(数据变更)重构为SQL语句,并输出注释信息
mysqlbinlog [ 参数选项 ] logfilename
6.删除二进制文件
对于比较繁忙的业务系统,每天生成的binlog数据巨大,如果长时间不清除,将会占用大量磁盘空间。可以通过以下几种方式清理日志:
也可以在mysql的配置文件中配置二进制日志的过期时间,设置了之后,二进制日志过期会自动删除
show variables like '%binlog_expire_logs_seconds%';-- 查看默认清理时间,单位是秒,发现是30天
7.演示(查看二进制日志)
现在我们更新了3行数据
进行查看,我们只需要看binglog.000002文件的最后几行就行了,但是通过以下的方式是看不到的,根本看不懂,因为基于行的格式来查看的话必须得重构成sql语句才行
mysqlbinlog binglog.000002
可以清楚的看到:
@1、@2代表的是第1个字段、第二个字段,where是指更新前的数据的样子,SET是更新之后的数据的样子
mysqlbinlog -v binglog.000002
修改mysql的配置文件,把row修改成STATEMENT
重新启动mysql服务,重新启动后发现又生成了一个新的binlog.000003文件
再执行一次更新
再次进行查看,此时不需要加-v,因为STATEMENT格式的它本身存的就是sql语句
8.演示(删除二进制文件)
删除000002之前的,然后发现000001没有了
全部删除,从000001开始
MySQL之二进制日志相关推荐
- mysql 二进制日志在哪_如何通过Mysql的二进制日志恢复数据库数据
经常有网站管理员因为各种原因和操作,导致网站数据误删,而且又没有做网站备份,结果不知所措,甚至给网站运营和盈利带来负面影响.所以本文我们将和大家一起分享学习下如何通过Mysql的二机制日志(binlo ...
- mysql使用二进制日志恢复数据
本文来说下如何使用mysql使用二进制日志恢复数据,再window的环境下. 文章目录 开启二进制日志 重启mysql服务 配置信息 开启二进制日志 在mysqld的配置节点下添加如下配置 log_b ...
- 4、MySQL使用二进制日志还原数据库
二进制日志中记录了用户对数据库更改的所有操作,如 INSERT 语句.UPDATE 语句.CREATE 语句等.如果数据库因为操作不当或其它原因丢失了数据,可以通过二进制日志来查看在一定时间段内用户的 ...
- mysql 恢复 二进制,mysql通过二进制日志恢复数据库
一.打开主配置文件 添加以下参数 [root@db1 ~]# vim /etc/my.cnf server_id=6 # 服务id log_bin=/data/binlog/mysql-bin # ...
- MySQL使用二进制日志恢复数据库
一.二进制日志简介 MySQL有不同类型的日志,其中二进制文件记录了所有对数据库的修改,如果数据库因为操作不当或其他原因丢失了数据,可以通过二进制文件恢复. 在my.ini文件中设置了log-bin, ...
- mysql 主从二进制日志_Mysql-8 配置主从复制(基于二进制日志)
1. 实验环境 System IP Host CentOS 7.4.1708 192.168.100.101 master CentOS 7.4.1708 192.168.100.102 slave ...
- 订阅mysql的二进制日志_MySQL二进制日志
一.二进制日志(The Binary Log) 1.简介 包含所有更新了的数据或者已经潜在更新了的数据(比如一条没有匹配任何行的delete语句) 包含所有更新语句执行时间的信息 不记录没有修改数据的 ...
- mysql导出二进制日志_使用mysqlbinlog提取二进制日志
MySQL binlog日志记录了MySQL数据库从启用日志以来所有对当前数据库的变更.binlog日志属于二进制文件,我们可以从binlog提取出来生成可阅读的SQL语句来重建当前数据库以及根据需要 ...
- mysql 刷新二进制日志_使用binlog日志恢复MySQL数据库删除数据的方法
binlog日志简介: binlog 就是binary log,二进制日志文件,这个文件记录了MySQL所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间. b ...
最新文章
- 借助 Evolution Linux 的帮助来轻松安装 Arch Linux
- Python八种数据导入方法,你掌握了吗?
- windows 下 latex graphviz 字体设置
- 【Siddhi】Siddhi 组件架构
- 【干货】2021年视频号商业化产品能力介绍:招商、推广、变现-腾讯.pdf(附下载链接)...
- python2 爬虫value_53. Python 爬虫(2)
- python中 return self的作用
- 数学建模学习之模糊评价法
- 严选chat_拔草 | 网易严选的零食,真的“严选”了吗?
- MATLAB伽罗域是什么,利用伽罗华域的运算来计算生成矩阵
- Excel冻结窗格纪要
- 原来这个世界还有这么纯洁的爱情!
- 设计模式10——状态模式
- pc端vue登录如何调用软键盘_vue.js怎样隐藏软键盘
- Java面试问题集锦
- Oracle11g导入DMP文件并导出为CSV文件过程全纪录
- RFID定位之隧道人员定位系统解决方案--新导智能
- 摆的频率公式_频率与转速的公式
- php上传 io err,【Dz上传附件】解决Discuz Server(IO)Error问题
- 谋杀案和杨辉三角改进版