문제

내 질문은 매우 비슷합니다 이 하나. 그러나 나는 MySQL에 있고 내가 찾을 수있는 "가장 낮은 기술"솔루션을 찾고 있습니다.

상황은 동일한 데이터가 있어야하는 2 개의 데이터베이스가 있지만 주로 서로 연락 할 수 없을 때 업데이트됩니다. 나는 그것들을 잘 동기화 할 수있는 일종의 클러스터링 또는 마스터/슬레이브가 있다고 생각합니다. 그러나 제 경우에는 이것이 제가 사용하기위한 스크래치 DB이기 때문에 큰 과잉입니다.

이것을하는 좋은 방법은 무엇입니까?

내 현재의 접근 방식은 그중 하나에 페더레이션 테이블을 갖는 것이며, 종종 삽입/선택으로 와이어 위에 데이터를 다른 사람에게 넣는 것입니다. 기본 키와 그렇지 않은 것을 다루려고 약간 복잡해집니다. (insert ignore 올바르게 작동하지 않는 것 같습니다)

추신 : 전송할 행을 선택하는 쿼리를 쉽게 빌드 할 수 있습니다.

도움이 되었습니까?

해결책 2

내 현재 솔루션입니다

  • 대상 상자에 테이블을 잡는 소스 상자에 페더레이션 테이블을 설정합니다.
  • 업데이트 할 행을 선택하는 소스 상자에서보기를 설정합니다 (연합 테이블의 결합으로)
  • 소스 상자의보기를 잡는 대상 상자에 다른 연합 테이블을 설정하십시오.
  • an INSERT...SELECT...ON DUPLICATE UPDATE 대상 상자에서 당기기를 실행합니다.

나는 단지 소스 테이블을 잡고 한 번으로 모든 것을 할 수 있다고 생각하지만, 내가보고있는 쿼리 로그를 기반으로 약 20k 쿼리가 실행되거나 약 100-300MB로 끝날 것이라고 생각합니다. 일이 어떻게 발생하는지에 따라 데이터 전송. 상기 설정된 설정은 약 4 개의 쿼리와 실제로 필요한 것보다 전송되지 않은 데이터가 거의 없습니다.

다른 팁

MySQL의 내장 된 복제는 설정하기가 매우 쉽고 DBS가 대부분 분리 된 경우에도 잘 작동합니다. 나는 이것을 구성하는 것이 어떤 사용자 정의 솔루션보다 훨씬 간단하다고 말하고 싶습니다.

보다 http://www.howtoforge.com/mysql_database_replication 지침을 위해서는 10-15 분 안에 일어나야하며 다시 생각할 필요가 없습니다.

내가 볼 수있는 유일한 단점은 그것이 비동기식이라는 것입니다. 모든 변경 사항을 얻는 지정된 마스터가 있어야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top