那你说,我不想让MySQL记录那些日志不行吗?肯定行啊!甚至默认情况下,MySQL都不会主动为你记录bin log ,但是话说回来,你不让它写那些日志,它就没有相应的能力给你用。是吧!所以综合来说,写日志还是很香的。
知道了这些,再去学相关的知识点是不是目的性很强了呢?关于undo log、redo log白日梦前面已经和大家分享过了,知无不言的那种分享哈,如果你又有感觉了,欢迎关注我然后去翻看。
对于大部分研发同学来说,肯定听说过bin log。然后却不一定知道binlog在哪里?谁写的?怎么配置binlog?以及binlog有啥用。所以接下来的几篇文章,我们一起看看binlog的二三事,让你更好的理解binlog。
二、什么是bin log?
bin log是MySQL的二进制日志文件,翻译成中文名反到是感觉怪怪的。所以说下面直接称他为binlog。
我们都知道MySQL分为两大部分。上层是MySQL-Server,下层是可插拔的存储引擎。
binlog就是由MySQL的Server层产生。
三、它在哪里?
binlog存放的位置由datadir参数控制。
你可以通过下面的方式查看到它
知道了binlog具体在哪里,你就可以看一眼,如下
目录下有两种文件:mysql-bin.0000XX 和 mysql-bin.index
前者保存着对MySQL更改的逻辑
而后者长下面这样,估计你一看就懂了~
四、bin log的相关配置
一般关于binlog
【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】
的配置都写在MySQL的配置文件中: my.cnf , 以方便启动mysql时直接让这些配置生效
作为了解,你可以大概搂一眼binlog的配置项
[mysqld]
binlog相关配置
指定binlog日志存储的位置
datadir = /home/mysql/mysql/var
规范binlog的命名为 mysql-bin.0000XX
如果加这行配置,binlog文件名为主机名
log-bin = mysql-bin
索引当前所有的binlog
log-bin-index = mysql-bin.index
最大的大小
max_binlog_size = 1G
binlog的sync时机
sync-binlog = 1
binlog的格式
binlog-format = ROW
保留七天的binlog
expire_logs_days = 7
五、binlog 有啥用?
如果说redolog中记录的是偏向物理层面的记录,如:对哪个数据页的那个记录做了什么修改。
那么binlog中记录的是偏向逻辑层面的记录:如:对xxx表中的id=yyy的行做做了什么修改,更改后的值是什么。
binlog不会记录你的 select 、show这类的操作。
你可以在query log中找到曾经执行过的诸如select、show这种仅查询的SQL。
常见的binlog有如下的作用。