2015-01-21 11 views
0

데이터베이스 동기화 :MarkLogic 우리는 다음과 같은 요구 사항을 만족하는 솔루션을 찾고

    우리의 클라이언트가 하나의 ML 데이터베이스와 그들이 우리에게 어떤 액세스를 제공하지 않더라도 우리는 쿼리가 읽을 실행할 수있다
  1. 을 지연없이 동기화를 사용하여 해당 데이터베이스의 다른 ML 데이터베이스 인스턴스를 생성하려고합니다.
  2. 쿼리 또는 업데이트와 같은 작업을 수행하려는 경우이 복제 데이터베이스에서 을 수행합니다. http://docs.marklogic.com/guide/admin/backup_restore
  3. 유연한 복제 (사용 콘텐츠 처리 프레임 워크) http://docs.marklogic.com/guide/flexrep/rep_intro
  4. /

    1. 데이터베이스 백업 (보관 또는 저널없이) 복원 :

    몇 가지 지침이 이러한 작업을 수행 할 수 있습니다 있습니다

  5. 데이터베이스 복제 http://docs.marklogic.com/guide/database-replication/dbrep_intro
  6. 포레스트 백 http://docs.marklogic.com/guide/admin/forests#id_76303
  7. XQSync (응용 프로그램 수준의 동기화 도구) (대신 전체 데이터베이스 단지 숲의) http://marklogic.github.io/xqsync/tutorial.html

는하지만, 우리는 하나 우리의 경우에 적합하다, 그것을 완성 할 수 없습니다/복원까지. 가장 좋은 솔루션을 제안 해주십시오.

+1

약 2 : 'master 데이터베이스를 방해하지 않고' '지연없이'를 의미합니까? 아니면 지체없이 동기화 상태에 있다는 것을 의미합니까? – grtjn

답변

3

개발 서버를 설정하고 프로덕션에서 데이터를 복사하려는 것처럼 들립니다. 당신은 (당신이 개발하는 필요합니까? 생산 응용 프로그램이 데이터베이스를 업데이트합니까?)

  • 프로덕션 서버에서 자주 업데이트가 필요한지 여부를 프로덕션 서버
  • 에 미치는 영향을 고려해야한다
  • 당신이 필요로 할 모든 데이터 또는 하위 집합?

특히 자주 업데이트되는 경우 데이터베이스 관리자에게 scheduled regular backups이있을 가능성이 있습니다. 그렇다고 가정하면 제품 서버에 영향을주지 않고 해당 백업 사본 하나를 얻을 수 있어야합니다. 그래서 나의 첫 제안은 # 1이 될 것입니다. 관리자가 만든 것처럼 자주 dev 서버를 이러한 백업으로 업데이트 할 수 있습니다. 데이터베이스 백업을 사용하려면 두 서버가 동일한 플랫폼에서 실행되어야합니다. 이렇게하면 모든 프로덕션 데이터를 얻을 수 있습니다.

반면에 dev 서버가 프로덕션 서버에서 자주 업데이트를받는 것이 중요하다면 # 2 유연한 복제 또는 # 3 데이터베이스 복제가 작업을 완료하게됩니다. 이러한 것들은 프로덕션 서버에서 더 많은 작업을 필요로하고 아마도 개발자가 원하는 것을 원하지 않을 수도 있지만 그것이 선택 사항이라는 것을 이해하십시오. prod 서버에 미치는 영향은 prod에서 데이터베이스 업데이트 빈도에 따라 달라집니다. 둘 중 어느 것이 자극에 더 큰 영향을 줄지는 모르겠다. 이렇게하면 모든 데이터를 얻을 수 있거나 하위 집합을 가져올 수 있습니다.

마지막으로, 자주 (자주 발생하는) 업데이트가 필요없고 관리자가 백업을 수행하지 않거나 prod와 dev가 다른 플랫폼 (Windows/Linux/Mac)에서 실행중인 경우 실행할 수 있습니다 근무 시간 외 XQSync. 매개 변수를 혼합하면 데이터가 잘못된 방향으로 전송 될 수 있으므로이 작업을 신중하게 수행 할 것입니다. 디렉터리, 컬렉션 또는 사용자 지정 쿼리를 기반으로 데이터의 하위 집합을 가져 오도록 구성 할 수 있습니다.

관련 참고 사항 :이 전략은 각각 데이터 복사에 관한 것이지만 데이터베이스 구성을 복사하는 것은 아닙니다. 그러면 다른 접근법이 필요할 것입니다. Roxy Deployer을 사용하여 설정을 git/svn/whatever에 유지하고 모든 환경에서 동일한 방식으로 구성을 부트 스트랩 할 수 있습니다. MarkLogic 제공 구성 관리자를 사용하여 프로덕션 환경의 스냅 샷을 만들고 (이를 위해 관리자가 필요합니다) 개발 환경으로 가져올 수 있습니다.

제안 된 시작 지점 : 구성이 일치하는지 확인한 다음 관리자가 수행중인 백업을 사용하십시오. 이는 생산 시스템에 미치는 영향이 가장 적고 위험이 가장 적습니다. 그것이 귀하의 필요를 충족시키지 못하면 다른 전략 중 하나를 살펴보십시오.

2

이것은 개발 환경이나 테스트 환경처럼 들립니다. 이러한 환경에서 복제는 일반적으로 자동으로 수행 될 필요가 없습니다. 데이터베이스 백업에서 복원하는 것으로 충분합니다. 로컬 복사본을 자유롭게 사용하여 쿼리 및 업데이트를 실행할 수 있습니다. 그런 다음 언제든지 새로운 백업을 복원 할 수 있습니다. 그러면 최신 백업으로 모든 내용을 덮어 씁니다.

복제가 진행 중이고 자동이어야하는 경우 복제가 필요합니다. 그러나 이는 데이터베이스 사본에서 갱신 사항을 실행하는 것과 충돌합니다. MarkLogic 복제는 단일 마스터이므로 두 데이터베이스를 마스터 데이터베이스와 진리의 원본으로 받아들이지 않고 두 데이터베이스를 동기화 할 수 없습니다.

데이터베이스 복제는 전체 데이터베이스를 동기화 상태로 유지하는 가장 효율적인 방법입니다. 데이터베이스 복제본은 읽기 전용 쿼리를 실행할 수 있지만 업데이트는 실행할 수 없습니다. 복사본에서 업데이트를 실행하려는 경우에도 데이터베이스 복제를 사용 중지 할 수 있습니다. 그런 다음 복제를 다시 켜고 로컬 변경 사항을 덮어 씁니다.

유연한 복제는 덜 효율적이지만 더 유연합니다. 당신은 지역의 변화를 자유롭게 할 수 있습니다. master 데이터베이스에서 업데이트하면 변경 내용을 덮어 쓰므로 복사본을 마스터와 동기화 상태로 유지할 수 있습니다.

관련 문제