我们正在运行Percona服务器5.7.36.39.1和相应版本的mysqlbinlog。
我使用show master status;和/或--verbose选项对binlog文件和位置运行mysqlbinlog,但没有看到基于https://dev.mysql.com/doc/refman/5.7/en/mysqlbinlog-row-events.html的预期伪SQL输出。
(注:我审查了联卢观察团的实际产出)
# mysqlbinlog --base64-output=DECODE-ROWS --verbose --start-position 56871313 --stop-position 56871313
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
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*/;# mysqlbinlog --verbose --start-position 56871313 --stop-position 56871313 /pdisk1/mysql/replication/master-bin.019473
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#220211 16:23:41 server id 176422933 end_log_pos 123 CRC32 0x8ffe454f Start: binlog v 4, server v 5.7.36-39-log created 220211 16:23:41
BINLOG '
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXX
'/*!*/;
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文件中,我确实看到了其他binlog语句的伪SQL。
如果有人能为我指出正确的方向来解码这份BINLOG声明,我将不胜感激!
谢谢!
发布于 2023-02-03 21:04:14
这很可能是因为二进制日志格式设置为MIXED。在这种情况下,一些语句可以记录在基于语句的格式中,而其他语句可以以基于行的格式登录,而只有后者才允许输出伪SQL语句。
https://dba.stackexchange.com/questions/307368
复制相似问题