ActiveMQ中如果使用mysql innodb的同时,开启了binlog,那么在ack消息的时候,日志里就可会报错:java.sql.SQLException: Cannot execute statement: binlogging impossible since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-logging. InnoDB is limited to row-logging when transaction isolation level is READ COMMITTED or READ UNCOMMITTED.
这是因为,mysql默认的binlog_format是STATEMENT,而在READ COMMITTED或READ UNCOMMITTED隔离级别下,innodb只能使用的binlog_format是ROW。
<
                      
                            
                        
                            
                            
                          
                          
                            
                            
当ActiveMQ使用MySQL的InnoDB存储引擎并开启binlog时,可能会遇到'binlogging impossible since BINLOG_FORMAT = STATEMENT'的错误,原因是MySQL默认的binlog_format与InnoDB在READ COMMITTED或READ UNCOMMITTED隔离级别下的限制冲突。解决方案包括:1) 将MySQL的binlog_format设置为ROW,适合单机高性能环境;2) 在activemq.xml中配置transactionIsolation为'4'(TRANSACTION_REPEATABLE_READ),适用于集群和强实时一致性场景,但可能影响性能。
          
                  
                订阅专栏 解锁全文
                
      
          
                
                
                
                
              
                
                
                
                
                
              
                
                
                    
              
            
                  
					258
					
被折叠的  条评论
		 为什么被折叠?
		 
		 
		
    
  
    
  
					
					
					


            