版权声明:本文为博主原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1415469
点击上方“业余草”,选择“置顶公众号”
第一时间获取技术干货和业界资讯!
一个系统,不仅要有好的代码,还要有优秀的日志记录。方便我们在出错时进行排查问题。
其实,写日志这件事,不仅是你在开发时会写。MySQL 也会写,binlog 就是 MySQL 中,我们常常会用到的日志文件了。它能帮助我们恢复数据,备份数据,是我们的好帮手。
如果你不懂 binlog,你看前面我的微信群里就有网友发生过惨案《难以置信,群里网友翻车,数据库被黑客删除!》。以及我的同事,在过年前 2 天发生惨案《泪奔,同事执行 update 语句没有添加 where 条件!》。这个时候,你就知道 binlog 是有多重要了!
binlog 日志由配置文件的 log-bin 选项负责启用,Mysql 会把用户对所有数据库的内容和结构的修改记入 xxx-bin.n 文件,而不会记录 SELECT 和没有实际更新的 UPDATE 语句。xxx 默认是 mysql-bin,可以自己修改。
当 MySQL 数据库停止或重启时,服务器会把日志文件记入下一个日志文件,Mysql 会在重启时生成一个新的 binlog 日志文件,文件序号递增,此外,如果日志文件超过 max_binlog_size 系统变量配置的上限时,也会生成新的日志文件,默认 100M。
在 my.cnf 或 my.ini 中的 mysqld 下增加下面的配置:
其中:log-bin 若不显示指定存储目录,则默认存储在 mysql 的 data 目录下;binlog_format 的几种格式:(STATEMENT,ROW 和 MIXED)。
当 Mysql 启动后会产生 mysql-bin.* 这样的文件,每次你启动服务器或刷新日志时该数字则增加。如果当前的日志大小达到max_binlog_size,mysql 自动创建新的二进制日志。如果你正使用大的事务,二进制日志还会超过 max_binlog_size:事务全写入一个二进制日志中,绝对不要写入不同的二进制日志中。
另外还有两个配置需要注意:
此外 mysqladmin flush-logs 也可以刷新 binary log。没执行一次,生成一个 binlog 文件。
查看 binlog 开启情况的语句如下:
mysql 的 binlog 是一个二进制的文件,你打开后,可能就是 0 和 1。通常我们可以使用 mysqlbinlog 命令打开 binlog 文件,方便我们查看。
执行上面这个语句后,部分显示的内容摘录如下:
几个重要的元素介绍如下:
常用的和 binlog 日志相关的语句整理如下:
如果你有权限访问生产环境,你就可以确定你们公司生产环境是否开启了 binlog,一般的我猜都开启了。这几天太忙了,一年 366 篇原创的目标真不容易啊。
你再主动一点点
我们就有故事了