The slave ActiveMQ broker in a JDBC Master/Slave set up requires that the lock table be of the type InnoDB. MyISAM table can lead to real problems including effectively brining your database down where the only way out would be to kill the slave or reboot your database. For a description of the bug, see here. Basically, you must ensure that the default table creation for your mysql is set to InnoDB, or after you start ActiveMQ, alter its tables in the database (your other options is to modify the ActiveMQ org.apache.activemq.store.jdbc.Statements class and rebuild ActiveMQ).
By default MySQL will create MyISAM based tables. You can alter a table type so that its storage engine is set to InnoDB. For ActiveMQ, you’ll need to alter the three tables that it creates:
ALTER TABLE ACTIVEMQ_LOCK ENGINE = InnoDB; ALTER TABLE ACTIVEMQ_ACKS ENGINE = InnoDB; ALTER TABLE ACTIVEMQ_MSGS ENGINE = InnoDB;
June 25, 2009 at 4:08 pm |
It took while but the AMQ folks have fixed this issue. I got an e-mail of the fix this morning.
January 2, 2012 at 10:31 pm |
c++ and mysql…
[...]ActiveMQ 5.0 JDBC Master/Slave requires InnoDB table « n o t e 1 9 . c o m[...]…