30

我正在开发一个分布式工作的应用程序,并且我有一个必须在分布式服务器之间共享的 SQLite 数据库。如果我在 serverA 中并更改 sqlite 行,则此更改必须立即在其他服务器中,但如果服务器脱机然后又联机,它必须更新与其他服务器相同的所有信息。

我正在尝试使用小型 SQLite 数据库开发 HA 服务。

我正在考虑使用 MongoDB 或 ReThinkDB 之类的东西,因为复制工作正常,而且我拥有独立的在线服务器数据。

是否有库或其他 SQL 方法可以在服务器之间共享数据?

提前致谢。

4

4 回答 4

18

我使用 Raft 共识协议来复制我的 SQLite 数据库。你可以在这里找到系统:

https://github.com/rqlite/rqlite

于 2014-09-03T17:33:46.473 回答
7

以下是一些选项:

精简版

它支持使用单个主(可写节点)和一个或多个副本(只读节点)的 SQLite3 数据库的主从复制。

如果设备脱机然后又联机,则辅助/从属数据库将逐步更新为主/主数据库。

精简同步

它实现了多主复制,因此我们可以在任何节点上写入数据库,即使设备处于离线状态。

在两者上,我们都使用修改后的 URI 打开数据库,如下所示:

  “file:/path/to/app.db?replica=master&bind=tcp://0.0.0.0:4444”</pre>

艾格莱特

基于区块链,它具有最高级别的安全性。存储不可变的关系数据,由资源使用率低的分布式共识保护。

披露:我是这些解决方案的作者

于 2015-11-15T22:16:20.517 回答
6

您可以通过在应用程序中嵌入SymmetricDS来同步 SQLite 数据库。它支持偶尔连接的客户端,因此它会在服务器上线时捕获更改并同步它们。它支持几种不同的数据库平台,可以用作库或独立服务。

于 2013-04-17T20:52:59.397 回答
1

您还可以使用CopyCat,它支持 SQLite 以及其他一些数据库类型。

于 2014-07-04T15:37:00.007 回答