文章插图
前言【MySql Binlog事件介绍篇】上一篇文件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;
手动触发:
insert into btest values(1,100,'zhaohui'); | bin-log.000001 | 432 | Query | 1 | 536 | use `test`; insert into btest values(1,100,'zhaohui') || bin-log.000001 | 536 | Xid | 1 | 563 | COMMIT /* xid=30 */ 4.STOP_EVENT
当mysqld停止时生成此事件
可以手动停止mysql,生成的事件:
| bin-log.000001 | 563 | Stop | 1 | 582 | 5.ROTATE_EVENT
当mysqld切换到新的binlog文件生成此事件,切换到新的binlog文件可以通过执行flush logs命令或者binlog文件大于max_binlog_size参数配置的大小;
手动触发:
mysql> flush logs;Query OK, 0 rows affected (0.24 sec) mysql> show binlog events in 'bin-log.000002';+----------------+-----+-------------+-----------+-------------+---------------------------------------+| Log_name | Pos | Event_type | Server_id | End_log_pos | Info |+----------------+-----+-------------+-----------+-------------+---------------------------------------+| bin-log.000002 | 4 | Format_desc | 1 | 107 | Server ver: 5.5.29-log, Binlog ver: 4 || bin-log.000002 | 107 | Rotate | 1 | 148 | bin-log.000003;pos=4 |+----------------+-----+-------------+-----------+-------------+---------------------------------------+6.INTVAR_EVENT
当sql语句中使用了AUTO_INCREMENT的字段或者LAST_INSERT_ID()函数;此事件没有被用在binlog_format为ROW模式的情况下 。
insert into btest (age,name)values(100,'zhaohui'); mysql> show binlog events in 'bin-log.000003';+----------------+-----+-------------+-----------+-------------+---------------------------------------------------------------+| Log_name | Pos | Event_type | Server_id | End_log_pos | Info |+----------------+-----+-------------+-----------+-------------+---------------------------------------------------------------+| bin-log.000003 | 4 | Format_desc | 1 | 107 | Server ver: 5.5.29-log, Binlog ver: 4 || bin-log.000003 | 107 | Query | 1 | 175 | BEGIN || bin-log.000003 | 175 | Intvar | 1 | 203 | INSERT_ID=2 || bin-log.000003 | 203 | Query | 1 | 315 | use `test`; insert into btest (age,name)values(100,'zhaohui') || bin-log.000003 | 315 | Xid | 1 | 342 | COMMIT /* xid=32 */ |+----------------+-----+-------------+-----------+-------------+---------------------------------------------------------------+5 rows in set (0.00 sec)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模式的情况下;
mysql> insert into btest (age,name)values(rand(),'zhaohui'); mysql> show binlog events in 'bin-log.000003';+----------------+-----+-------------+-----------+-------------+------------------------------------------------------------------+| Log_name | Pos | Event_type | Server_id | End_log_pos | Info |+----------------+-----+-------------+-----------+-------------+------------------------------------------------------------------+......| bin-log.000003 | 342 | Query | 1 | 410 | BEGIN || bin-log.000003 | 410 | Intvar | 1 | 438 | INSERT_ID=3 || bin-log.000003 | 438 | RAND | 1 | 473 | rand_seed1=223769196,rand_seed2=1013907192 || bin-log.000003 | 473 | Query | 1 | 588 | use `test`; insert into btest (age,name)values(rand(),'zhaohui') || bin-log.000003 | 588 | Xid | 1 | 615 | COMMIT /* xid=48 */ |+----------------+-----+-------------+-----------+-------------+------------------------------------------------------------------+10 rows in set (0.00 sec)
推荐阅读
- MySQL中的这17个关键问题,一定要弄清楚
- 海南鲨鱼袭击事件 蜈支洲岛有鲨鱼吗
- 僵尸先生背后灵异事件 新僵尸先生拍摄期间的灵异事件
- MySQL DBA必读:万字归总表设计与SQL编写技巧
- 详解Mysql数据库不同字符集下迁移方法
- Mysql数据库连接查询
- mysql 数据分析如何实现日报、周报、月报和年报?
- 世界上不可思议的巧合事件 世界上惊人的25个巧合
- MySQL 触发器
- 茶叶的10个奇葩事件 第6个太震惊了