2011-03-21 7 views
0

현재 나는이 시나리오, 자신의 윈도우 시스템에 설치 DB를 MySQL의와MySQL의 복제 질문

  1. 여러 데스크톱 클라이언트가있다.
  2. 은보고 목적으로 웹에 호스팅 된 하나의 서버에 동기화해야합니다.
  3. 단방향 동기화 (클라이언트에서 웹으로)가 필요합니다.
  4. 수정 IP없이 표준 adsl을 사용하기 때문에 클라이언트 ip는 항상 변경됩니다.
  5. 각 클라이언트 db는 서버의 하나의 독립 실행 형 데이터베이스 (웹에서 호스팅 됨)에 동기화됩니다.
  6. 이 동기화가 스케줄러에서 실행될 수 있습니까? 한 번에 3 시간마다처럼.

나는 MySQL의 복제를 사용하여 생각하고 있지만, 나는 이것을 설치하는 방법에 대해 몇 가지 질문을 가지고 있습니까? 슬레이브에서 마스터로 설정해야합니까? 또는 마스터 마스터? 서버는보고 용도로만 사용되기 때문에 클라이언트가 마스터가되고 서버는 슬레이브로 간주되지만 많은 수의 MySQL 복제를 확인하면 복제가 슬레이브에서 시작된 것처럼 보입니다. (나는 slave-server 설정에서 master-host = ip와 같은 설정을하고있다.) 이것은 클라이언트의 IP 주소에 대해 확실하지 않은 서버의 목적을 이길 것이다. ...

답변

0

아마도 이것은 내가 언급 한 (슬레이브/마스터/등),하지만 내가 개발중인 응용 프로그램에서 알 수없는/동적 IP의 여러 클라이언트를 먹이 단일 소스와 비슷한 아키텍처가 있습니다. 내 솔루션은 해당 행이 마지막으로 업데이트 된 시간 스탬프가있는 다른 필드를 포함하고 동기화 한 다음 클라이언트가 해당 열에서 MAX에 대한 로컬 데이터베이스를 검색하고이를 변수로 사용하여 모든 행을 반환하는 webservice에 보냅니다. 보다 최근의 타임 스탬프. 그런 다음 클라이언트는 응답 데이터를 구문 분석하고 로컬 데이터베이스에 REPLACES를 수행하여 이전 데이터를 덮어 씁니다.

하나의 세부 사항 (시나리오가 필요하지 않음)은 항목이 삭제되었다는 것을 알려주는 방법입니다. 행이 삭제되고 행이 기본 인 다른 테이블에 항목이 작성되었을 때 id 및 삭제 타임 스탬프가 포함 된 다음 웹 서비스에 해당 테이블의 최신 타임 스탬프가있는 모든 행의 배열이 포함될 수 있습니다.