ha
Highly available leaderless SQLite cluster powered by embedded NATS JetStream server.
Installation
Install from source
go install github.com/litesql/ha@latest
Usage
- Create an sqlite database:
sqlite3 mydatabase.db 'CREATE TABLE users (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT);'
- Start the first ha node
ha mydatabase.db
- Start an another ha node
ha --port 8081 --pg-port 5433 --nats-port 0 --replication-url nats://localhost:4222 mydatabase.db
- Insert some data using HTTP client
curl -d '[{"sql": "INSERT INTO users(name) VALUES('\''HA user'\'')"}]' \
http://localhost:8080
- Or use a PostgreSQL client
PGPASSWORD="ha" psql -h localhost -U ha
INSERT INTO users(name) VALUES('HA user from PostgreSQL Wire Protocol');
SELECT * FROM users;
- Connect to another server and check the values
PGPASSWORD="ha" psql -h localhost -U ha -p 5433
SELECT * FROM users;
Backup database
curl -O -J http://localhost:8080
Local Read Replicas
- Use ha-sync SQLite extension to create local embedded replicas from a remote HA database.