2016-08-02 2 views
0

거기에 몇 가지 비슷한 질문이 있지만 나는 아직도 이것에 대해 혼란 스러워요. 이 메커니즘 (한 클러스터에서 다른 클러스터로 데이터 복사)이 필요하기 때문에 좀 더 명확한 설명을 원합니다.카산드라 - 한 클러스터에서 다른 클러스터로 sstable 스냅 샷 복사

매우 간단한 시나리오를 가정 해 봅시다. 한 카산드라 클러스터 (C1)에서 다른 카산드라 클러스터 (C2)로 테이블을 복사하고 싶습니다. 복사하고있는 테이블을 "항목"이라고합니다.

각 클러스터의 노드 수가 동일하다고 가정 해 봅시다 (클러스터의 소스 노드와 대상 노드는 각각 4 개입니다). 중요하지 않은지 확실하지 않습니다.

트릭을 수행하기 위해 스냅 샷과 sstableloader를 사용하려고합니다. 스냅 샷을 생성하고 대상 테이블 디렉토리 C2에 N1 (클러스터 1 노드 1 .../myspace/item-xxxxxx/스냅 샷/######) 스냅 샷 파일을 복사 할 수있었습니다. N1 (클러스터 2 노드 1 : .../myspace/item-xxxxxx). sstableloader를 사용하여 데이터를로드하고 nodetool 복구를 실행했습니다. 완전한. 유일한 문제는로드 된 스냅 샷이 소스 노드 중 하나에서만 발생한 것이므로 데이터의 일부 ("1k 행 중 약 485 개") 만 "복원"했습니다. 그래서 나는 C1 : N2에서 C2 : N1로 스냅 샷을 다시 복사하여로드 할 것입니다. 문제는 모든 테이블 파일이 이미 C2 : N1에 있다는 것입니다. C1 : N2의 스냅 샷 파일을 C2 : N1의 테이블 디렉토리에 복사하면 이미 존재하는 파일들을 날려 버릴 것입니다. 모든 4 개의 대상 노드를 검사하지는 않았지만 대상의 노드 2를 검사했고 이미 데이터 파일이있는 항목 테이블 디렉터리가 이미있었습니다. 대상의 모든 노드가 데이터 파일을 가지고 있다고 추측하고 있으므로 다른 3 개의 소스 노드 스냅 샷 파일을 sstableload하는 방법에 익숙해졌습니다.

길게 짧습니다 (가능한 경우) : 대상 클러스터에 여러 원본 스냅 샷 파일 (원본 클러스터의 각 호스트에서 하나씩)을로드하려면 어떻게해야합니까? 그리고 문제를 복잡하게하는 것은 소스와 타겟 클러스터가 다른 수의 노드를 가지고 있다면 문제가 될 것입니다 (타겟에 노드를 줄이는 것이 잠재적으로 더 큰 문제가 될 것이라고 생각합니다).

내 의견으로는 여기에 실제로 필요한 것은 SOURCE 클러스터에서 ssableloader를 실행하고 대상 클러스터로 데이터를 스트리밍하도록하는 방법입니다. 인생을 훨씬 쉽게 만들어 줄 것이라고 생각합니다.

미리 감사드립니다.

- 짐

답변

1

당신이 그 (것)들을 함께 반 통합 할 수 있습니다 보인다 two options for bulk loading있다. 대부분은 "수동으로 복사하는 것"메커니즘을 말하는 것이고 복원 성능이 최우선 순위가 아니면 문제가되지 않을 수도 있습니다. sstable 로더를 사용하는 것은 다르지만 그렇게 할 필요는 없습니다.

sstableloader 도구는 노드에 연결하고 해당 노드 클러스터의 모든 노드를 찾은 다음 연결을 사용하여 메타 데이터/검색을 작성합니다. 적절한 토큰 범위에서 대상 클러스터에 선택한 스 타일을 분할/스트리밍합니다 (복구가 필요 없습니다). 소스 클러스터 노드에서 sstableloader를 실행하여 대상 클러스터를 가리키면 sstables를 직접 복사 할 필요가 없습니다 (다른 DC에있는 경우 조금 더 빠를 수도 있음). 당신이 OpsCenter 다음 단계의 자동화가 GUI https://docs.datastax.com/en/opscenter/5.2/opsc/online_help/services/opscBackupCloneCluster.html

+0

와 함께 당신을 위해 할 수있는 경우

그래서 sstableloader "-d IP"를 실행합니다. 이 작업을 마치면 대상 IP이고 목표 노드 중 하나에서 실행하고 스냅 샷을 사용하여 데이터를로드합니다. 어쩌면 그것이 내가 잘못 될지도 모릅니다. 원본 클러스터에서 실행할 수 있다고 했잖아요. "-d SourceIP"를 넣었습니까? 그렇다면 연결 대상 클러스터 IP는 어디에 지정해야합니까? –

+0

'-d'는 대상 클러스터에있는 노드 중 하나 일 것입니다.어디서나 도구를 실행할 수 있습니다. –

+0

응답 해 주셔서 감사합니다. 이 문제에 대한 지식이 부족해서 죄송합니다.하지만 소스 클러스터를 어떻게 지정 하시겠습니까? 원본 클러스터에서 실행하면됩니까? 즉, 대상 클러스터에서 sstableloader를 실행할 수 없다는 것입니다 (소스 IP를 지정하지 않기 때문에). –

관련 문제