博客
关于我
mysql日志
阅读量:788 次
发布时间:2023-02-12

本文共 1592 字,大约阅读时间需要 5 分钟。

MySQL日志深度解析

1. MySQL日志的重要性

MySQL数据库运行期间会产生多种状态信息,而这些信息的记录与分析对数据库的健康状态、性能优化以及故障排查具有重要意义。这些日志主要包括错误日志、查询日志、慢查询日志、事务日志和二进制日志(binlog)。其中,binlog、redo log和undo log是我们需要重点关注的三种日志类型。

2. 日志的记录方式

从记录方式的角度来看,MySQL日志可以分为逻辑日志和物理日志两种类型:

  • 逻辑日志:记录的是SQL语句的执行过程,简单来说就是数据库操作的命令序列。
  • 物理日志:记录的是数据库数据页的具体变更信息。

需要注意的是,binlog和undo log都属于逻辑日志,而redo log属于物理日志。它们的记录内容和作用有所不同。

3. binlog日志介绍

1. binlog的使用场景
  • 主从复制:在主数据库(Master)端开启binlog后,生成的binlog会被发送到从数据库(Slave)端,Slave端通过重放binlog来实现数据同步。
  • 数据恢复:通过使用mysqlbinlog工具,可以从binlog中恢复数据库数据。
2. binlog的记录方式
  • binlog记录的是数据库执行的写入性操作(如插入、更新、删除等),以二进制文件形式保存在磁盘中。

  • binlog文件的大小可以通过max_binlog_size参数来设置,当达到限制后会新建文件。

  • 对于InnoDB存储引擎,binlog的刷盘时机由sync_binlog参数控制:

    • 0:系统自行决定,通常在事务提交时刷盘。
    • 1:每次事务提交时刷盘。
    • N:每N个事务刷盘。

    建议设置sync_binlog=1以确保数据一致性,但也可以根据性能需求适当调整。

3. binlog的日志格式
  • binlog支持三种日志格式:
    • statment:基于SQL语句的复制,每条修改数据的SQL记录到binlog。
    • row:基于行的复制,记录的是数据行的修改信息。
    • mixed:结合statment和row的优缺点,根据需要选择合适的复制模式。
4. binlog的刷盘机制
  • binlog的刷盘是通过WAL(写前日志)技术实现的,确保高效的日志写入和数据一致性。

4. undo log日志介绍

1. undo log的作用
  • undo log是undo操作日志,主要用于实现数据库事务的原子性。它记录了数据库事务对数据的逻辑变化,支持事务回滚。
  • undo log是MVCC(多版本并发控制)的一部分,确保并发事务的正确执行。

5. redo log日志介绍

1. redo log的作用
  • redo log是InnoDB存储引擎中的物理日志,记录了事务对数据页的具体修改信息。它解决了直接将数据页刷盘带来的性能问题。
  • redo log采用循环写入的方式,文件大小固定,当写满后会回到文件开头继续写。
2. redo log的刷盘机制
  • redo log包含内存缓冲区redo log buffer和磁盘文件redo logfile。
  • 数据写入redo logfile的具体时机由innodb_flush_log_at_trx_commit参数控制:
    • 0:系统自行决定。
    • 1:每次事务提交时刷盘。
    • N:每N个事务刷盘。
3. redo log与binlog的区别
  • binlog是逻辑日志,用于主从复制和数据恢复,但不具备crash-safe能力。
  • redo log是物理日志,具有crash-safe能力,但单独使用无法保证数据一致性。

6. binlog与redo log的协同作用

  • 数据一致性需要binlog和redo log共同保证。binlog记录事务对数据的改变,而redo log记录数据页的具体修改信息。两者结合使用,确保数据库在故障恢复时能够快速恢复到一致状态。

转载地址:http://kndfk.baihongyu.com/

你可能感兴趣的文章
mysql加强(5)~DML 增删改操作和 DQL 查询操作
查看>>
mysql加强(6)~子查询简单介绍、子查询分类
查看>>
mysql加强(7)~事务、事务并发、解决事务并发的方法
查看>>
mysql千万级大数据SQL查询优化
查看>>
MySQL千万级大表优化策略
查看>>
MySQL单实例或多实例启动脚本
查看>>
MySQL压缩包方式安装,傻瓜式教学
查看>>
MySQL原理、设计与应用全面解析
查看>>
MySQL原理简介—1.SQL的执行流程
查看>>
MySQL参数调优详解
查看>>
mysql参考触发条件_MySQL 5.0-触发器(参考)_mysql
查看>>
MySQL及navicat for mysql中文乱码
查看>>
MySqL双机热备份(二)--MysqL主-主复制实现
查看>>
MySql各种查询
查看>>
mysql同主机下 复制一个数据库所有文件到另一个数据库
查看>>
mysql启动以后会自动关闭_驾照虽然是C1,一直是开自动挡的车,会不会以后就不会开手动了?...
查看>>
mysql启动和关闭外键约束的方法(FOREIGN_KEY_CHECKS)
查看>>
Mysql启动失败解决过程
查看>>
MySQL启动失败:Can't start server: Bind on TCP/IP port
查看>>
mysql启动报错
查看>>