面试题答案
一键面试- Format_description_event
- 应用场景:记录binlog的格式信息,包括binlog版本、服务器版本、创建时间等。每个binlog文件的开头都会有这个事件,用于告诉读取binlog的工具如何解析后续的事件。例如,在主从复制中,从库通过此事件了解主库binlog的格式,以便正确解析后续日志进行数据同步。
- Query_event
- 应用场景:用于记录在主库上执行的SQL语句。当执行非事务性SQL语句(如DDL语句)时,会以Query_event的形式记录到binlog中。在主从复制中,主库将该事件发送给从库,从库重放此事件来执行相同的SQL操作,确保主从数据一致性。例如,创建数据库、表结构的变更等操作都会以这种事件类型记录。
- Row_event(包括Write_rows_event、Update_rows_event、Delete_rows_event )
- 应用场景:
- Write_rows_event:用于记录插入操作,在基于行模式(ROW)的复制中,当有新数据插入表时,会记录此事件。例如电商系统中订单记录的插入,从库通过重放此事件实现数据同步。
- Update_rows_event:记录数据更新操作,在ROW模式复制下,当表中的数据发生更新时产生此事件。比如用户信息的修改,主库记录该事件,从库重放更新数据。
- Delete_rows_event:记录数据删除操作,在ROW模式下,删除表中数据时会产生此事件。如清理过期的日志记录时,从库通过此事件同步删除操作。
- 应用场景:
- Xid_event
- 应用场景:标记一个事务的结束。在事务性操作中,当所有的事务操作(如一系列的插入、更新、删除等)完成后,会记录一个Xid_event。在主从复制中,从库通过此事件确认事务的完整性,保证事务按顺序正确重放,确保主从数据的一致性。例如银行转账事务完成后,通过此事件标志事务结束并用于主从同步。