跨多个服务器复制sqlite数据库的方法

txu3uszq  于 2023-01-02  发布在  SQLite
关注(0)|答案(5)|浏览(349)

我正在开发一个分布式应用程序,我有一个SQLite数据库,必须在分布式服务器之间共享。如果我在serverA,并更改了sqlite行,这个更改必须立即在其他服务器上,但如果一个服务器离线,然后它上线,它必须更新所有信息等于其他服务器。
我正在尝试使用小型SQLite数据库开发HA服务。
我正在考虑像MongoDB或ReThinkDB这样的东西,因为复制工作正常,而且我有独立的服务器在线数据。
是否有库或其他SQL方法可在服务器之间共享数据?

inn6fuwd

inn6fuwd1#

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

pprl5pva

pprl5pva2#

以下是一些选项:
LiteReplica
它支持使用单个主节点(可写节点)和一个或多个副本节点(只读节点)对SQLite3数据库进行主从复制。
如果设备离线,然后又在线,则辅助/从属数据库将使用主/主数据库进行增量更新。
LiteSync
它实现了多主机复制,因此我们可以写入任何节点中的数据库,即使设备离线。
在这两种情况下,我们都使用修改后的URI打开数据库,如下所示:

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

AergoLite
它基于区块链,具有最高级别的安全性。存储不可变的关系数据,由分布式共识保护,资源使用率低。
披露:我是这些解决方案的作者

4zcjmb1e

4zcjmb1e3#

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

k2fxgqgv

k2fxgqgv4#

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

gstyhher

gstyhher5#

土拨鼠看起来不错:
https://github.com/maxpert/marmot
从他们的文档中:

什么和为什么?

Marmot是一个分布式的SQLite复制器,具有无领袖性和最终的一致性。它允许你在容错的NATS Jetstream之上构建节点之间的健壮复制。这意味着如果你正在运行一个基于SQLite的阅读量很大的网站,你应该能够通过添加更多的SQLite复制节点来轻松地扩展它。SQLite可能是最普遍存在的DB,几乎无处不在。Marmot的目标是通过在其上构建一个复制层,使其在服务器端应用程序中更加普遍。

相关问题