我的一个从属 mysql 实例包含几个不寻常的二进制日志文件
- mysql-bin.023896 250.01MB 2023-10-11 08:30:06.478997000(最后修改)
- mysql-bin.023897 2.27GB 2023-10-11 11:27:23.128550000
- mysql-bin.023898 15.67MB 2023-10-11 11:27:23.261558000
- mysql-bin.023899 281Bytes 2023-10-11 11:27:24.967536000
- mysql-bin.023900 250.01MB 2023-10-11 12:26:16.466269000
通常我的意思是大小应该是250MB(max_binlog_size是250MB),但是mysql-bin.023897
包含2.27GB,而后一个是15.67MB,那么下一个mysql-bin.023899
就小得离谱,它的大小只有数百字节......
的内容mysql-bin.023899
什么也没说,只是mysql会将二进制日志记录到mysql-bin.023900
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#231011 3:25:16 server id 1630115779 end_log_pos 123 CRC32 0x29f40f84 Start: binlog v 4, server v 5.7.26-log created 231011 3:25:16
BINLOG '
HKUlZQ/DlylhdwAAAHsAAAAAAAQANS43LjI2LWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAEzgNAAgAEgAEBAQEEgAAXwAEGggAAAAICAgCAAAACgoKKioAEjQA
AYQP9Ck=
'/*!*/;
# at 123
#231011 3:25:16 server id 1630115779 end_log_pos 234 CRC32 0x0acbf66f Previous-GTIDs
# ac711cc5-2cff-11ed-82c4-5c6f69e9b080:1-7268,
# ef8421a8-2cf4-11ed-9afa-5c6f69e75ed0:117-1391824263
# at 234
#231011 3:25:16 server id 1630115779 end_log_pos 281 CRC32 0x23f57343 Rotate to mysql-bin.023900 pos: 4
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
DELIMITER ;
# End of log file
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
问题
为什么binlog大小突然增长到2.27GB,随后又缩小到15.67MB,281Bytes?mysql-bin.023897的内容显示它包含一个大事务,这可能是根本原因吗?
MySQL 在 mysql-bin.023899 中只记录一次旋转事件并跳转到下一个 binlog 文件不是很愚蠢吗?MySQL 为什么要这样做?