문제

테스트 데이터베이스의 데이터를 사용하는 테스트 서버가 있습니다. 테스트가 완료되면 라이브 데이터베이스로 이동됩니다.

문제는 현재 프로덕션에서 데이터에 의존하는 다른 프로젝트가 있으므로 필요한 테이블에서 데이터를 가져 오는 스크립트를 실행하고 테스트 DB에서 데이터를 삭제하고 라이브 DB에서 데이터를 삽입해야합니다.

이 모델을 개선하는 방법을 알아 내려고 노력했습니다. 데이터가 일주일에 한두 번만 업데이트되기 때문에 (내 부분에 대한 조치없이) 문제는 마이그레이션에서 그리 많지 않습니다. 문제는 마이그레이션이 필요할 때만 발생하는 것입니다. 마이그레이션 스크립트에 라이브 테이블과 테스트 테이블에 대한 빠른 확인이 포함되어 있고 필요한 경우 이동하고 싶습니다. 업데이트가없는 경우 스크립트가 종료됩니다.

이렇게하면 다른 스크립트에 업데이트 스크립트를 포함시킬 수 있으며 데이터가 동기화되어 있는지 걱정할 필요가 없습니다.

타임 스탬프를 사용할 수 없습니다. 우선, 나는 살아있는 쪽의 테이블을 생방송으로 통제 할 수 없으며, 또한 대결을 위해 테이블을 더 많이 대량으로 올리는 것이 약간 어리석은 것처럼 보이기 때문입니다.

나는 "LivedB의 쇼 테이블 상태"를 시도했지만 테이블은 모두 InnoDB이기 때문에 "업데이트 시간"이 없기 때문에 오늘 아침에 "생성 시간"이 있었기 때문에 데이터베이스가 뒷받침된다고 믿게됩니다. 매일 다시 만들어졌습니다.

이 둘 중 어느 것이 더 새롭고 있는지 보여줄 다른 속성이 있습니까? 아마도 "최신 행 날짜"?

도움이 되었습니까?

해결책

요컨대 : 응용 프로그램에서 개발 라이브 업데이트를 일류 업데이트하십시오. 데이터베이스 엔진에 따라 결정을 내릴 수있는 필요한 정보를 제공하는 대신 (업데이트하거나 업데이트하지 않기 위해 ... 그것이 질문입니다), 응용 프로그램의 일부로 구현하십시오. 그렇지 않으면 둥근 페그를 사각형 구멍에 맞추려고합니다.

데이터 모델이 무엇인지 모르고 동기화 모델이 무엇인지 전혀 이해하지 못하면 몇 가지 옵션이 있습니다.

  1. 기본 키를 라이브 데이터베이스 대 테스트 데이터베이스와 일치시킵니다. 테스트> 라이브 ID는 업데이트를 수행하십시오.
  2. 테이블에서 타임 스탬프를 사용하여 업데이트 해야하는지 확인하십시오.
  3. 데이터베이스 테이블 및 수정 날짜 (UTC)의 MD5 해시를 사용하여 테이블이 변경되었는지 확인하십시오.

짧은 이야기 : 데이터베이스 동기화는 매우 어렵습니다. 응용 프로그램에 특정한 솔루션을 구현하십시오. 이상적으로 작동하는 "일반적인"솔루션은 없습니다.

다른 팁

테이블에 자동 분류가있는 경우 최대 자동 확장 값을 비교하여 다른지 확인할 수 있습니다.

그러나 어떤 버전의 MySQL을 사용하고 있습니까?

직접 굴러 가지 않고 데이터베이스를 동기화하기 위해 기존 솔루션을 사용할 수 있습니다. Sqlyog의 SJA에 대해 좋은 소식을 들었습니다 (참조 여기). 나는 그것을 직접 사용한 적이 없지만 다른 프로그램에 깊은 인상을 받았습니다.

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