14

분산 된 방식으로 작동하는 응용 프로그램을 개발 중이며 분산 된 서버간에 공유해야하는 SQLite 데이터베이스가 있습니다. serverA에 있고 sqlite 행을 변경하면이 변경 사항은 즉시 다른 서버에 있어야하지만 서버가 오프라인 상태 였고 온라인 상태가되면 다른 모든 서버와 동일한 정보를 업데이트해야합니다.여러 서버에 sqlite 데이터베이스를 복제하는 방법

작은 SQLite 데이터베이스로 HA 서비스를 개발하려고합니다.

MongoDB 또는 ReThinkDB와 같은 복제가 제대로 작동하고 데이터를 독립적으로 서버에 보관할 수 있다고 생각합니다.

서버간에 데이터를 공유하는 라이브러리 또는 다른 SQL 방법론이 있습니까? 사전에

감사합니다.

+0

없음 고려 사항 모두에

우리는 다음과 같이 수정 된 URI를 사용하여 데이터베이스를 열? – Ekevoo

답변

7

내 SQLite 데이터베이스를 복제하기 위해 Raft 합의 프로토콜을 사용했습니다.

https://github.com/otoolep/rqlite

+0

은 rqlite에서 사용할 수있는 JSON1 확장 프로그램입니까? –

2

응용 프로그램에 SymmetricDS을 삽입하여 SQLite 데이터베이스를 동기화 할 수 있습니다. 간혹 연결된 클라이언트를 지원하기 때문에 서버가 온라인 상태가되면 변경 사항을 캡처하고 동기화합니다. 여러 데이터베이스 플랫폼을 지원하며 라이브러리 또는 독립 실행 형 서비스로 사용할 수 있습니다.

+0

분기 된 파일 호스트 SQLite 데이터베이스를 동기화하는 방법이 있습니까? – neuviemeporte

1

CopyCat을 사용할 수도 있습니다.이 유형은 SQLite와 몇 가지 다른 데이터베이스 유형을 지원합니다.

+0

매우 제한된 조건에서만 SQLite를 지원합니다 (예 : Delphi ?!) – Michael

5

사용할 수 litereplica :

그것은 sqlite3를의 하나의 마스터 (쓰기 가능한 노드)를 사용하여 데이터베이스와 하나 또는 여러 복제본에 대한 마스터 - 슬레이브 복제를 (지원 읽기 현재 시스템을 찾을 수 있습니다 노드 만).

오프라인으로 전환 한 다음 온라인 상태가되면 보조/슬레이브 dbs가 주/마스터로 점진적으로 업데이트됩니다.

또는 litesync : 우리는 장치가 오프라인 인 경우에도, 모든 노드에서 DB에 쓸 수 있도록 멀티 마스터 복제를 구현

. 경쟁 조건 또는 충돌의 다른 유형에 대한

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

이 작업은 다 대일 작업이 가능합니까? 하나의 슬레이브에 많은 소스 (동일한 레이아웃/테이블)가 있습니까? – Tacitus86

+1

아니요, 단일 마스터에서 작동합니다. 하나의 db에 여러 소스의 데이터를 병합하지 않지만 각 소스마다 별도의 복제본을 보관할 수 있습니다. –