web-dev-qa-db-ja.com

複数のサーバー間でSQLiteデータベースを複製する方法

分散して動作するアプリケーションを開発しています。分散サーバー間で共有する必要があるSQLiteデータベースがあります。私がserverAにいて、sqlite行を変更した場合、この変更は他のサーバーにも即座に反映される必要がありますが、サーバーがオフラインでオンラインになった場合は、他のすべてのサーバーと同じ情報を更新する必要があります。

小さなSQLiteデータベースでHAサービスを開発しようとしています。

MongoDBやReThinkDBのようなものを考えています。レプリケーションが正常に機能し、サーバーのデータをオンラインで独立して持っているためです。

サーバー間でデータを共有するためのライブラリまたは他のSQL方法論はありますか?

前もって感謝します。

24
ManuParra

Raftコンセンサスプロトコルを使用してSQLiteデータベースを複製しました。あなたはここでシステムを見つけることができます:

https://github.com/rqlite/rqlite

12
Philip O'Toole

LiteReplica を使用できます。

単一のマスター(書き込み可能なノード)と1つ以上のレプリカ(読み取り専用ノード)を使用するSQLite3データベースのマスタースレーブレプリケーションをサポートしています。

デバイスがオフラインになってからオンラインになった場合、セカンダリ/スレーブデータベースはプライマリ/マスターデータベースで増分的に更新されます。

または LiteSync

マルチマスターレプリケーションを実装しているため、デバイスがオフラインの場合でも、任意のノードのデータベースに書き込むことができます。

どちらの場合も、次のように変更されたURIを使用してデータベースを開きます。

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

開示:私は両方のソリューションの作成者です

6
Bernardo Ramos

アプリケーションに SymmetricDS を埋め込むことで、SQLiteデータベースを同期できます。たまに接続するクライアントをサポートするため、サーバーがオンラインになったときに変更をキャプチャして同期します。複数の異なるデータベースプラットフォームをサポートし、ライブラリまたはスタンドアロンサービスとして使用できます。

4
Eric Long

CopyCat を使用することもできます。これは、SQLiteおよびその他のいくつかのデータベースタイプをサポートします。

1
jonneve