深入解读Mysql 二进制日志

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深入解读Mysql 二进制日志相关的知识,希望对你有一定的参考价值。


作者:IT邦德
中国DBA联盟(ACDU)成员,目前从事DBA及程序编程
(Web\\java\\Python)工作,主要服务于生产制造
现拥有 Oracle 11g OCP/OCM、
mysql、Oceanbase(OBCA)认证
分布式TBase\\TDSQL数据库、国产达梦数据库以及红帽子认证
从业8年DBA工作,在数据库领域有丰富的经验

擅长Oracle数据库运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。

深入解读Mysql

一、概述

Binlog 是 MySQL 中一个很重要的日志,记录了对数据库进行变更的操作,
但是不包括 select操作以及 show 操作,
因为这类操作对数据库本身没有没有修改。
如果想记录 select和 show 的话,那就需要开启全查询日志。
另外 binlog 还包括了执行数据库更改操作时间和执行时间等信息。
binlog 是 MySQL Server 层记录的二进制日志文件

mysql> show variables like ‘%log_bin%’;

深入解读Mysql


mysql> flush logs; --滚动日志

mysql> show binary logs;

深入解读Mysql

二、作用

(1 )恢复 recovery 。某些数据的恢复需要二进制日志,在全库文件恢复后,
可以在此基础上通过二进制日志进行 point-to-time 的恢复(mysqldump 全量恢复+binlog增量恢复)。
(2 )复制(replication )。其原理和恢复类似,
通过复制和执行二进制日志使得一台远程的 mysql数据库(slave)于一台 mysql 数据库(master)
进行实时同步。

三、参数配置

注:在 MySQL 5.7.3 及其以后的版本中,
若想开启二进制日志,则必须加上 server_id 参数,如下
[mysqld]
log-bin
server_id=57303317
在 MySQL 8.0

四、重要命令

(1) 查看生成的二进制日志列表:
mysql> show binary logs;
mysql> show master logs;
mysql> show master status; --当前日志
(2) 查看二进制日志记录的事件(event):
mysql> show binlog events; --内容较多,一般不用
mysql> show binlog events in rhel6-bin.000003;
mysql> show binlog events in rhel6-bin.000003 limit 3,5;
(3) 查看二进制日志的具体内容:
root@slave1:/# which mysqlbinlog
root@slave1:~# cd /var/lib/mysql
root@slave1:/var/lib/mysql# mysqlbinlog slave1-bin.000008

深入解读Mysql

(4)清理二进制日志

使用“flush logs;”命令、重启 MySQL、默认日志文件达到 1G 都会重新生成一个新的二进制日志文件。
mysql> PURGE BINARY LOGS TO binlog.000025; #binlog.000025 之前的日志都会被删除
mysql> PURGE BINARY LOGS BEFORE 2020-04-28 23:59:59;
#时间2020-04-28 23:59:59之前的日志都会被删除
mysql> RESET MASTER; #清空历史二进制日志,从 000001 开始重新

深入解读Mysql


本文如有错误或不完善的地方请大家多多指正,留言或 QQ 皆可,

您的批评指正是我写作的最大动力!

以上是关于深入解读Mysql 二进制日志的主要内容,如果未能解决你的问题,请参考以下文章

(4.6)mysql备份还原——深入解析二进制日志binlog二进制格式详解

深入挖崛:mysql主从复制原理

新特性解读 | MySQL 8.0 通用表达式(WITH)深入用法

mysql之 binlog维护详细解析(开启binlog相关参数作用mysqlbinlog解读binlog删除)

(3.14)mysql基础深入——mysql 日志分析工具之pt-querty-digest待完善

一次性搞定 `SHOW SLAVE STATUS` 的解读