zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

【文档】四、Mysql Binlog事件含义详解

mysql事件文档 详解 含义 Binlog
2023-09-27 14:27:09 时间
UNKNOWN_EVENT

这个事件类型应该永远不会出现。它从不会写入binlog中。如果binlog中的事件没法被识别成其他已知事件,他被当做UNKNOWN_EVENT。

START_EVENT_V3

在binlog文件最开始的符号事件(在Mysql的4.0和4.1版本中,这个事件只会在服务启动时,写到第一个binlog文件中)。这个事件在3.23到4.1版本中使用,在5.0版本中被FORMAT_DESCRIPTION_EVENT代替。

QUERY_EVENT

当更新操作完成时写入。

STOP_EVENT

当mysqld停止时写入。

ROTATE_EVENT

当mysqld切换一个新的binlog文件时写入。当FLUSH LOGS命令执行或者当前的binlog文件太大时,这个事件会出现。binlog文件的最大值由max_binlog_size定义。

INTVAR_EVENT

当一个语句使用到AUTO_INCREMENT列时,或者LAST_INSERT_ID()函数时写入。在这个语句的其他事件之前写入。这个只在QUERY_EVENT之前写入,并且在基于行的日志中不会使用。这个事件是以下面两种子类型的方式写入的

INSERT_ID_EVENT表示下个语句中使用到的自增列。

LAST_INSERT_ID_EVENT表示下个语句中用到的LAST_INSERT_ID()函数。

LOAD_EVENT

在Mysql 3.23中用于LOAD DATA INFILE语句中。

SLAVE_EVENT

没使用过。

CREATE_FILE_EVENT

在Mysql 4.0和4.1版本中用于LOAD DATA INFILE语句。

APPEND_BLOCK_EVENT

在Myql 4.0中用于LOAD DATA INFILE语句。

EXEC_LOAD_EVENT

在Mysql 4.0和4.1中用于LOAD DATA INFILE语句。

DELETE_FILE_EVENT

在Myql 4.0中用于LOAD DATA INFILE语句。

NEW_LOAD_EVENT

在Mysql 4.0和4.1中用于LOAD DATA INFILE语句。

RAND_EVENT

当一个语句使用RAND()函数时写入。在这个语句的所有其他事件之前。表示在下个语句中使用RAND()生成随机数用到的种子值。这个只在QUERY_EVENT之前写入,并且在基于行的日志中不记录。

USER_VAR_EVENT

一个语句中使用到user变量时写入。在这个语句的所有事件之前。表示在下个语句中使用到的user变量值。这个只在QUERY_EVENT之前写入,并且在基于行的日志中不记录。

FORMAT_DESCRIPTION_EVENT

每个binlog文件开头的符号事件。用于Mysql 5.0版本,替代START_EVENT_V3。

XID_EVENT

在支持XA事务的存储引擎中,事务提交时产生。普通的事务是这样实现的:发送一个包含BEGIN语句的QUERY_EVENT和一个包含COMMIT语句的QUERY_EVENT(或者当事务回滚时的ROLLBACK语句)

BEGIN_LOAD_QUERY_EVENT

用于Mysql 5.0中LOAD DATA INFILE语句。

EXECUTE_LOAD_QUERY_EVENT

用于Mysql 5.0中LOAD DATA INFILE语句。

TABLE_MAP_EVENT

用于基于行日志记录。这个事件在每个行操作事件之前。他把表定义映射为一个数字,表定义包含库名和表名,还有列的定义。这个事件的目的是当master和slave的同一张表有不同的定义时,允许进行主从复制。属于同一个事务的行操作事件会被按顺序放到一个组中,在这种情况下,每个事件序列组以TABLE_MAP_EVENT事件开头,每张表的序列组有一个。

PRE_GA_WRITE_ROWS_EVENT

WRITE_ROWS_EVENT的废弃版本

PRE_GA_UPDATE_ROWS_EVENT

UPDATE_ROWS_EVENT的废弃版本

PRE_GA_DELETE_ROWS_EVENT

DELETE_ROWS_EVENT的废弃版本

WRITE_ROWS_EVENT

用于基于行的日志记录方式,这个事件记录了单表的行插入。

UPDATE_ROWS_EVENT

用于基于行的日志记录方式,这个事件记录了单表的行更新。

DELETE_ROWS_EVENT

用于基于行的日志记录方式,这个事件记录了单表的行删除。

INCIDENT_EVENT

用于记录master上发生的非常规事件。这个事件会通知slave,master发生了一些会导致数据不一致的事件。

HEARTBEAT_LOG_EVENT

master发送给slave的事件,让slave知道master还活着。不写入日志文件。


Mysql误删,恢复数据,binlog闪回,宝塔面板 binlog是二进制日志文件,用来记录Mysql内部对数据库的改动(只记录对数据的修改操作),主要用于数据库的主从复制以及增量恢复。 当我们搭建mysql主从复制的时候,两个实例之间也是通过binlog来完成数据的备份同步。 所以有这种根据binlog得到执行sql语句、闪回sql语句,我们只需要利用根据分析binlog,然后就可以找到准确的数据改动sql,并得到闪回sql,检查无误后执行就可以恢复数据了
MySQL 日志之 binlog 格式 → 关于 MySQL 默认隔离级别的探讨 背景问题 再讲 binlog 之前,我们先来回顾下主流关系型数据库的默认隔离级别,是默认隔离级别,不是事务有哪几种隔离级别,别会错题意了 1、Oracle、SQL Server 的默认隔离级别是什么,MySQL 的呢 ? 2、为什么 MySQL 的默认隔离级别是 RR ?
mysql中的undo log、redo log 、binlog大致概要 undo log(回滚日志)、redo log(重做日志) 、binlog (归档日志)undo log,事务的原子性,用于事务回滚和MVCC(存储层,记录查询类)redo log,事务的持久性,用于服务器宕机故障恢复(存储层,记录查询类)binlog,用于数据备份和主从复制(服务层,记录更新修改类)日志区别undo log事务开始前的数据值redo log事务完成后的数据值。