(点击
上方公众号
,可快速关注)
来源:zhaohui
codingo.xyz/index.php/2017/11/13/mysql-events/
如有好文章投稿,请点击 → 这里了解详情
前言
上一篇
MySql Binlog初识
,对Binlog的参数,格式以及个别事件做了详细介绍,但是Binlog事件数量比较多,上篇文章中没有对所有事件进行介绍;本文将对Binlog的事件进行简单说明,必要的时候通过SQL触发相关的事件,以下基于Mysql5.5,5.0以前的版本不考虑。
Binlog事件
1.UNKNOWN_EVENT
此事件从不会被触发,也不会被写入binlog中;发生在当读取binlog时,不能被识别其他任何事件,那被视为UNKNOWN_EVENT。
2.START_EVENT_V3
每个binlog文件开始的时候写入的事件,此事件被用在MySQL3.23 – 4.1,MYSQL5.0以后已经被FORMAT_DESCRIPTION_EVENT取代。
3.QUERY_EVENT
执行更新语句时会生成此事件,包括:create,insert,update,delete;
手动触发:
4.STOP_EVENT
当mysqld停止时生成此事件
可以手动停止mysql,生成的事件:
5.ROTATE_EVENT
当mysqld切换到新的binlog文件生成此事件,切换到新的binlog文件可以通过执行flush logs命令或者binlog文件大于max_binlog_size参数配置的大小;
手动触发:
6.INTVAR_EVENT
当sql语句中使用了AUTO_INCREMENT的字段或者LAST_INSERT_ID()函数;此事件没有被用在binlog_format为ROW模式的情况下。
btest表中的id为AUTO_INCREMENT,所以产生了INTVAR_EVENT
7.LOAD_EVENT
执行LOAD DATA INFILE 语句时产生此事件,在MySQL 3.23版本中使用;
8.SLAVE_EVENT
未使用的
9.CREATE_FILE_EVENT
执行LOAD DATA INFILE 语句时产生此事件,在MySQL4.0和4.1版本中使用;
10.APPEND_BLOCK_EVENT
执行LOAD DATA INFILE 语句时产生此事件,在MySQL4.0版本中使用;
11.EXEC_LOAD_EVENT
执行LOAD DATA INFILE 语句时产生此事件,在MySQL4.0和4.1版本中使用;
12.DELETE_FILE_EVENT
执行LOAD DATA INFILE 语句时产生此事件,在MySQL4.0版本中使用;
13.NEW_LOAD_EVENT
执行LOAD DATA INFILE 语句时产生此事件,在MySQL4.0和4.1版本中使用;
14.RAND_EVENT
执行包含RAND()函数的语句产生此事件,此事件没有被用在binlog_format为ROW模式的情况下;
15.USER_VAR_EVENT
执行包含了用户变量的语句产生此事件,此事件没有被用在binlog_format为ROW模式的情况下;
16.FORMAT_DESCRIPTION_EVENT
描述事件,被写在每个binlog文件的开始位置,用在MySQL5.0以后的版本中,代替了START_EVENT_V3
17.XID_EVENT
支持XA的存储引擎才有,本地测试的数据库存储引擎是innodb,所有上面出现了XID_EVENT;innodb事务提交产生了QUERY_EVENT的BEGIN声明,QUERY_EVENT以及COMMIT声明,
如果是myIsam存储引擎也会有BEGIN和COMMIT声明,只是COMMIT类型不是XID_EVENT;
18.BEGIN_LOAD_QUERY_EVENT和EXECUTE_LOAD_QUERY_EVENT
执行LOAD DATA INFILE 语句时产生此事件,在MySQL5.0版本中使用;
mysql
>
LOAD DATA
INFILE
"D:/btest.sql"
INTO TABLE
test
.
btest FIELDS TERMINATED
BY
','
;
Query
OK
,
1
row affected
(
0.11
sec
)
Records
:
1
Deleted
:
0
Skipped
:
0
Warnings
:
0
mysql
>
show binlog events
in
'bin-log.000003'
;
+----------------+------+--------------------+-----------+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
Log_name
|
Pos
|
Event_type
|
Server_id
|
End_log_pos
|
Info
|
+----------------+------+--------------------+-----------+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
......
|
|
bin
-
log
.
000003
|
896
|
Query
|
1
|
964
|
BEGIN
|
|
bin
-
log
.
000003
|
964
|
Begin_load_query
|
1
|
1008
|
;
file_id
=
3
;
block_len
=
21
|
|
bin
-
log
.
000003
|
1008
|
Execute_load_query
|
1
|
1237
|
use
`
test
`;
LOAD DATA
INFILE
'D:/btest.sql'
INTO
TABLE
`
btest
`
FIELDS TERMINATED
BY
','
ENCLOSED
BY
''
ESCAPED
BY
'\\'
LINES TERMINATED
BY
'\n'
(`
id
`,
`
age