什么是MySQL binlog

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是MySQL binlog相关的知识,希望对你有一定的参考价值。

二进制日志(binlog)是 mysql 日志结构中重要的部分;记录了数据的更改操作,用于数据恢复、数据复制以及审计。然而在众多实际场景中经常发生高并发引起 binlog 暴涨的问题将挂载点空间占满以及主从网络带宽成为瓶颈时主从延时过大。8.0.20 版本推出 binlog 压缩功能,有效缓解甚至解决此类问题。

特性描述MySQL 从 8.0.20 开始集成 ZSTD 算法,开启压缩功能后;以事务为单位进行压缩写入二进制日志文件,降低原文件占用的磁盘空间。压缩后的事务以压缩状态有效负载在复制流中发送到从库(MGR 架构中为组 member)或客户端(例如 mysqlbinlog)。
参考技术A 可以最大化的降低数据被删除的风险,这就相当于你数据库的一个备份,可以通过binlog把数据恢复

mysql binlog 日志恢复数据

首先:开启binlog日志

server-id=1
log-bin=mysql-bin
binlog_format=MIXED

 binlog_format有三种格式:

1)只有sql语句STATEMENT,

   

 

 

  你不知道源数据内容是什么,不好恢复

2)ROW模式

 这种会记录下源数据内容是什么,记录的日志很多,io大,影响性能,比如在在alter table时,会产生大量的日志数据,

 优点是有源数据,好恢复

 

 

 3 两者结合的MIXED模式(默认)

查看日志保存的天数

show variables like \'%expire_logs_days%\';

  把binlog日志转化成sql日志命令是

/usr/local/mysql/bin/mysqlbinlog -v mysql-bin.000023

 /usr/loca/mysql这个为mysql的根目录

直接打开看binlog日志不方便看,源数据看上去是乱码,要用mysqlbinlog -v “日志文件”,转换一下

myql-bin.000023为bin日志文件

./mysqlbinlog --no-defaults --database=test --start-datetime="2020-11-23 14:50:00" --stop-datetime="2020-11-23 15:59:00" /usr/local/mysql/var/mysql-bin.000023   |more

 以上命令是用mysqlbinlog命令来刷选出日志,上面的查test库,时间点之间的日志记录

 

以上是关于什么是MySQL binlog的主要内容,如果未能解决你的问题,请参考以下文章

mysql-5.7.17 binlog查询

Mysql数据库之Binlog日志使用总结

Mysql数据库之Binlog日志使用总结

(转)Mysql数据库之Binlog日志使用总结

Binlog 的三个业务应用场景

Binlog 的三个业务应用场景