RabbitReplication


Replication for hybrid environments - classic replication and replication to NoSQL stores.


WIKI

The wiki contains documentation.

PROJECT MANAGEMENT

The code is open source and hosted at launchpad. To get it, install bzr and type:
bzr branch lp:rabbitreplication. Project bugs and blueprints are also at launchpad.net.

DOWNLOAD

Install by unzipping, editing a config file sample in the config directory and starting like this:
bin/start.sh config/config.properties



Replication to many different data stores

RabbitReplication replicates changes from Drizzle to a variety of data stores, these include:

Marshalling data

It is currently possible to marshall the data inserted in two ways:

Extensible

RabbitReplication is also very extensible, which means that it is very easy to add new stores, new transports and new marshallers.

Overview

  1. Clients perform DML (INSERT, UPDATE, DELETE etc) on the master drizzle database.
  2. Drizzle stores the transaction both in Innodb and in a transaction log.
  3. The RabbitReplication master tails the transaction log, and sends the raw transaction to RabbitMQ
  4. A slave consumes the transaction from RabbitMQ
  5. The transaction is deserialized using protobuf
  6. The transaction is transformed into either a set of JDBC prepared statements, java objects or hashmaps
  7. The transformed data is marshalled using the configured marshaller if we are using java objects
  8. The marshalled, transformed data is persisted in the data store.

Reducing transactions

RabbitReplication can also reduce transactions to enable multi threaded appliers, read about that here

Hudson

Tests are run in Hudson, here.

RabbitReplication example

New commits


New blog posts


New bugs


By Marcus Eriksson, krummas@gmail.com