1. 20

I’ve been working Marmot on making a multi-master replica for SQLite. Unlike rqlite (which requires single master and everyone to communicate to that single master); or litestream (which is meant for backup, copying page level changes, and then using CLI to reconstruct those changes). Marmot aims to be a simple tool, that will let you replicate your changes across various nodes, without requiring you to change your code. That means if you have a site that you are running on top of SQLite, and want to spin-up another node to scale horizontally. Now you can do it by running marmot on those nodes and just connecting them together. Unlike rqlite which will require you to talk to single master node, or litestream requiring some sort of periodic DB restore mechanism, each node will just talk to the other node and replicate the change.

Have you used it?

I’ve been using this on a pretty high traffic, read heavy website now for few weeks now as I developed features on Marmot (with 1 of node restarting and seamlessly catching up to all the changes). While it’s too early, I will like to open it up to community, and see if somebody will be willing to try and help me improve documentation, and fix issues.

Code and Download

You can get checkout source code here or directly download latest version. As I continue to improve, and features like copy all rows on boot before joining cluster, and control panel; I would love to hear stories on if you are able to use it successfully in production (Please use it for ephemeral storage scenarios first to get comfortable).

  1.  

  2. 2

    How does it relate to https://github.com/canonical/dqlite/?

    1. 1

      Custom protocol to communicate with DB. It’s same category as rqlite but worst because now you have to implement protocol as well.