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

Posted

技术标签:

【中文标题】跨多台服务器复制sqlite数据库的方法【英文标题】:Method to replicate sqlite database across multiple servers 【发布时间】:2013-04-08 14:36:55 【问题描述】:

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

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

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

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

提前致谢。

【问题讨论】:

不考虑竞争条件或其他类型的冲突? 【参考方案1】:

这里有一些选项:

LiteReplica:

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

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

LiteSync:

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

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

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

AergoLite:

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

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

【讨论】:

这对多对一有效吗?意思是我有很多来源(相同的布局/表格)到一个奴隶? 不,它适用于单个主机。它不会在单个数据库上合并来自多个源的数据,但您可以为每个源保留一个单独的副本。【参考方案2】:

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

https://github.com/rqlite/rqlite

【讨论】:

rqlite 是否提供 JSON1 扩展?【参考方案3】:

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

【讨论】:

显然它只在非常有限的条件下支持SQLite(例如使用Delphi?!)【参考方案4】:

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

【讨论】:

有没有办法同步不同的文件托管 SQLite 数据库?

以上是关于跨多台服务器复制sqlite数据库的方法的主要内容,如果未能解决你的问题,请参考以下文章

Android SQLit数据库学习

Sqlit--学习教程(建立数据库表)

我应该在 Visual Studio 项目的哪个位置复制 SQLite 数据库,是不是需要从那里复制它?

Sqlit--学习教程(命令)

C#使用Linq to Sqlite

如何在 Android sqlite 中使用准备好的语句? [复制]