0
点赞
收藏
分享

微信扫一扫

深入解读Mysql 二进制日志


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

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

深入解读Mysql 二进制日志_数据库

一、概述

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

mysql> show variables like ‘%log_bin%’;

深入解读Mysql 二进制日志_数据库_02


mysql> flush logs; --滚动日志

mysql> show binary logs;

深入解读Mysql 二进制日志_mysql_03

二、作用

(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 二进制日志_数据库_04

(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 二进制日志_二进制日志_05


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

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


举报

相关推荐

0 条评论