LiteFS基于 FUSE 的文件系統(tǒng)
LiteFS 是一個(gè)基于 FUSE 的文件系統(tǒng),用于跨機(jī)器集群復(fù)制 SQLite 數(shù)據(jù)庫(kù)。它作為一個(gè) passthrough 文件系統(tǒng),攔截對(duì) SQLite 數(shù)據(jù)庫(kù)的寫入,以檢測(cè)事務(wù)邊界并記錄 LTX 文件中每個(gè)事務(wù)級(jí)別的更改。
該項(xiàng)目正在積極維護(hù),但目前處于 alpha 狀態(tài)。文件系統(tǒng)和復(fù)制功能正常,但需要測(cè)試和強(qiáng)化才能使其投入生產(chǎn)。該存儲(chǔ)庫(kù)是開源的,旨在收集有關(guān)如何更好地進(jìn)行 SQLite 復(fù)制的反饋和想法。
LiteFS 系統(tǒng)由 3 個(gè)主要部分組成:
- FUSE 文件系統(tǒng):攔截文件系統(tǒng)調(diào)用以記錄事務(wù)。
- Leader選舉:目前由 Consul 使用會(huì)話實(shí)現(xiàn)
- HTTP 服務(wù)器:為副本節(jié)點(diǎn)提供 API 以接收更改。
LiteFS 旨在跨集群中的臨時(shí)節(jié)點(diǎn)提供簡(jiǎn)單、實(shí)時(shí)、異步的復(fù)制。與更簡(jiǎn)單的災(zāi)難恢復(fù)工具(如Litestream)和更復(fù)雜但高度一致的工具(如 rqlite )相比,這種方法需要權(quán)衡取舍。
與任何異步復(fù)制系統(tǒng)一樣,有一個(gè)時(shí)間窗口,事務(wù)僅在主節(jié)點(diǎn)上是持久的,并且沒有被復(fù)制到副本節(jié)點(diǎn)。主節(jié)點(diǎn)上的災(zāi)難性崩潰將導(dǎo)致這些事務(wù)丟失。通常,這個(gè)窗口是亞秒級(jí)的,因?yàn)槭聞?wù)可以快速地從主節(jié)點(diǎn)轉(zhuǎn)移到副本節(jié)點(diǎn)。
LiteFS 的未來版本計(jì)劃同步復(fù)制和有時(shí)間限制的異步復(fù)制。
