rqlite is a lightweight, user-friendly, distributed relational database. It’s written in Go, employs Raft for distributed consensus, and uses SQLite as its storage engine.
The newly released rqlite 9.2 introduces a major improvement to startup performance – nodes can now resume from where they left off, instead of rebuilding their state from scratch on every restart. This change means that even if a node manages gigabytes of SQLite data, it can come back online almost instantly, with startup time no longer proportional to dataset size.
In this post, I’ll explore why this change matters, how it was implemented on top of the existing Raft system and SQLite WAL, and what it says about rqlite’s evolution.
Continue reading “Balancing SQLite’s WAL, SYNCHRONOUS=OFF, and fsync for fast rqlite recovery”