返回顶部
首页 > 资讯 > 数据库 >【mysql】binlog日志
  • 537
分享到

【mysql】binlog日志

mysql数据库sql 2023-09-01 08:09:16 537人浏览 薄情痞子
摘要

目录 1.1 基本说明1.2 binlog日志格式1.3 binlog日志查看1.4 binlog日志删除1.5 binlog操作示例 1.1 基本说明 1.

目录

1.1 基本说明
  • 1.全称binary log,二进制日志
  • 2.记录了所有的DDL语句(Data Definition Language数据定义语言)和DML语句(Data Manipulation
    /məˌnɪpjuˈleɪʃn/ Language数据操作语言)
  • 3.不包括数据查询语句(select、show)
  • 4.作用:灾难时的数据恢复;Mysql的主从复制
  • 5.mysql8.0版本,默认二进制日志是开启的
  • 6.使用sql:show variables like ‘%log_bin%’;参数log_bin:ON表示开启;参数log_bin_basename:日志位置
1.2 binlog日志格式
  • 1.statement:基于sql语句的日志记录,记录的是sql语句,对数据进行修改的sql都会记录在日志文件中
  • 2.row:基于行的日志记录,记录的是每一行的数据变更,默认是基于行的日志记录
  • 3.mixed:混合statement和row两种格式,默认采用statement,在某些特殊情况下会自动切换为row进行记录。这些情况是NDB引擎,表的增删改的DML操作会以row格式记录、SQL语句里包含UUID()函数、SQL语句里使用了用户定义函数(UDF)、包含了insert delayed语句、使用了临时表、自增字段被更新
1.3 binlog日志查看
  • 1.日志是以二进制方式存储的,不能直接读取,需要通过二进制日志查询工具mysqlbinlog查看
  • 2.mysqlbinlog -d logfilename 指定数据库名称,只列出指定的数据库相关操作
  • 3.mysqlbinlog -o 忽略掉日志中的前n行命令
  • 4.mysqlbinlog -v 将行事件(数据变更)重构为sql语句
  • 5.mysqlbinlog -vv 将行事件(数据变更)重构为sql语句,并输出注释信息
1.4 binlog日志删除
  • 1.二进制日志长时间不清除会占用大量磁盘空间
  • 2.reset master指令:删除全部binlog日志,删除之后,日志编号,将从binlog.000001重新开始
  • 3.purge master logs to 'binlog.000003’指令:删除000003编号之前的所有日志
  • 4.purge master logs before 'yyyy-mm-dd hh24:mi:ss’指令:删除日志为“yyyy-mm-dd hh24:mi:ss”之前产生的所有日志
  • 5.在mysq的配置文件中配置二进制日志的过期时间,设置之后二进制日志过期会自动删除
  • 6.show variables like ‘%binlog_expire_logs_seconds’;显示当前二进制日志的过期时间,单位秒
1.5 binlog操作示例
  • 1.查询当前日志格式
show variables like '%binlog_fORMat%';

在这里插入图片描述

  • 2.查看是否开启了二进制日志
// 有结果表示已开启,若报错则表示未开启show binary logs;// 开启binlog, 修改C:\ProgramData\MySQL\MySQL Server 8.0的my.init配置文件// 日志文件格式log-bin="DESKTOP-EVRO81H-bin"// 日志格式binlog-format=ROW

在这里插入图片描述

  • 3.查询二进制日志存放位置
show variables like '%log_bin_basename%';

在这里插入图片描述

  • 4.mysqlbinlog命令直接查看日志文件
// 切换到二进制日志文件目录下cd C:\ProgramData\MySQL\MySQL Server 8.0\Data// 查看日志文件mysqlbinlog DESKTOP-EVRO81H-bin.000024// 按row日志格式基本看不懂,所以要加-v参数

在这里插入图片描述

// 能看到一些update语句和insert语句以及表操作的语句mysqlbinlog -v DESKTOP-EVRO81H-bin.000024

在这里插入图片描述

  • 5.设置日志格式为STATEMMENT
// 修改C:\ProgramData\MySQL\MySQL Server 8.0的my.init配置文件,保存后重启// 日志格式binlog-format=STATEMENT
  • 6.执行条insert语句后执行mysqlbinlog命令
// cd C:\ProgramData\MySQL\MySQL Server 8.0\Data// 执行mysqlbinlog DESKTOP-EVRO81H-bin.000025,不需要加-v就能看到insert语句,因为是sql语句mysqlbinlog DESKTOP-EVRO81H-bin.000025

在这里插入图片描述

  • 7.删除binlog日志
// 删除000025之前的日志purge master logs to 'DESKTOP-EVRO81H-bin.000025';

在这里插入图片描述
在这里插入图片描述

// reset master清除所有日志reset master;

在这里插入图片描述

  • 8.查看binlog日志过期时间
// 默认30天过期,在my.int设置binlog_expire_logs_seconds便可调整过期时间show variables like '%binlog_expire%';

在这里插入图片描述

来源地址:https://blog.csdn.net/qq_32088869/article/details/129994921

您可能感兴趣的文档:

--结束END--

本文标题: 【mysql】binlog日志

本文链接: https://www.lsjlt.com/news/387938.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作