深入解读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数据库运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。
一、概述
Binlog 是 MySQL 中一个很重要的日志,记录了对数据库进行变更的操作,
但是不包括 select操作以及 show 操作,
因为这类操作对数据库本身没有没有修改。
如果想记录 select和 show 的话,那就需要开启全查询日志。
另外 binlog 还包括了执行数据库更改操作时间和执行时间等信息。
binlog 是 MySQL Server 层记录的二进制日志文件
mysql> show variables like ‘%log_bin%’;
mysql> flush logs; --滚动日志
mysql> show binary logs;
二、作用
(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
(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 开始重新
本文如有错误或不完善的地方请大家多多指正,留言或 QQ 皆可,
您的批评指正是我写作的最大动力!
以上是关于深入解读Mysql 二进制日志的主要内容,如果未能解决你的问题,请参考以下文章
(4.6)mysql备份还原——深入解析二进制日志binlog二进制格式详解
新特性解读 | MySQL 8.0 通用表达式(WITH)深入用法
mysql之 binlog维护详细解析(开启binlog相关参数作用mysqlbinlog解读binlog删除)