2012-04-17 7 views
0

mysql 백엔드가있는 PHP 응용 프로그램을 실행하는 사이트가 몇 개 있습니다. 그들은 100 % 인터넷 연결 시간이 없을 수도 있기 때문에 모두 별도의 서버에서 실행됩니다.여러 데이터베이스를 동기화 상태로 유지하는 방법

현재 모든 레코드에 대해 수정 된 날짜 시간을 저장하고 있습니다. 레코드를 삭제 된 것으로 표시하는 플래그는 물론입니다. 동기화로 인해, 삭제 된 모든 레코드가 추적을 위해 필요하므로 삭제를 동기화 할 수 있습니다.

모든 사이트는 동기화 시점을 추적합니다.

문제는 모든 사이트에서 삽입 및 업데이트가 이루어지는 것입니다. 그래서 사이트가 잠시 동안 연결이 끊어지면. 다른 모든 사이트의 데이터 동기화에 문제가 발생합니다.

모든 사이트를 동기화 상태로 유지하는 방법에 대한 아이디어가 있으십니까?

동기화를 수행하는 현재 프로그램은 PHP로 작성되었습니다. 모든 테이블을 반복하고 마지막 동기화 이후 수정 된 레코드를 확인합니다.

+0

복제를 배제 했습니까? http://dev.mysql.com/doc/refman/5.0/en/replication.html – Marvo

+0

[mysql replication] (http://dev.mysql.com/doc/refman/)을 설정할 수없는 경우 5.0/ko/replication-howto.html), 데이터 복사에 적합한 복제본을 작성하는 스크립트는 유일한 접근 방법입니다. 애플리케이션 디자인을 전반적으로 살펴보고 데이터베이스 오류를 견딜 수있을만큼 강력하게 만들 수있는 방법을 확인해야합니다. – ghoti

+0

다중 마스터가 있으므로 복제가 작동하지 않습니다. 또한 데이터베이스가 이런 식으로 설계된 이유는 인터넷 오류를 허용하는 데 있습니다. 잘못된 인터넷 링크를 통해 여러 사이트를 복제하면 일부 업데이트가 잘못된 순서로 실행되는 경향이 있습니다. – iWantSimpleLife

답변

0

문제가 해결되었습니다. 다소간. 레코드가 마지막으로 수정 된 시점을 추적하는 것 외에도 현재 레코드가 현재 서버에서 작성/수정 된 시점을 추적합니다. 이것은 실제로 2 타임 스탬프가 있음을 의미합니다. 하나는 실제 수정 된 시간을 추적하고, 하나는이 변경이이 서버에 복사 된 시점을 추적합니다. 나는 레코드가 복사 된 시간을 기준으로 레코드를 동기화합니다.

관련 문제