- Moved it to a real project on launchpad (http://launchpad.net/rabbitreplication)
- Store transaction log position on master so that a transaction is never sent twice over the wire.
- Major internal refactorings, start using google guice for IoC
- Make the transport pluggable, it should now be easy to write your own transport and swap out rabbitmq, JMS anyone?
- Alot more configurations for rabbitmq, see example config
- Download binaries here (or check out code: bzr branch lp:rabbitreplication)
- Unzip on master
- Edit master.properties to reflect your environment (hope the config vars are self-explanatory, let me know if there are any problems)
- Start the master: java -jar replication.jar master.properties
- Unzip on slave
- Edit slave.properties
- Start the slave: java -jar replication.jar slave.properties
- Watch changes replicate, report issues to me (email@example.com)
I'm thinking about using this code to build a framework for replicating changes from Drizzle into other storage forms, for example Hadoop/hbase or Cassandra. My thinking is that it could be useful for moving data that is very hot into a faster storage without changing your application too much. This might need business logic implemented on the "slave" (saying for example that this column should be stored and this should be ignored), and that is what I'm thinking could be built quite nicely using a framework (a DSL could be handy).
Please let me know if this has been done somewhere or if it is a stupid idea!