거기에 몇 가지 비슷한 질문이 있지만 나는 아직도 이것에 대해 혼란 스러워요. 이 메커니즘 (한 클러스터에서 다른 클러스터로 데이터 복사)이 필요하기 때문에 좀 더 명확한 설명을 원합니다.카산드라 - 한 클러스터에서 다른 클러스터로 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를 실행하고 대상 클러스터로 데이터를 스트리밍하도록하는 방법입니다. 인생을 훨씬 쉽게 만들어 줄 것이라고 생각합니다.
미리 감사드립니다.
- 짐
와 함께 당신을 위해 할 수있는 경우
그래서 sstableloader "-d IP"를 실행합니다. 이 작업을 마치면 대상 IP이고 목표 노드 중 하나에서 실행하고 스냅 샷을 사용하여 데이터를로드합니다. 어쩌면 그것이 내가 잘못 될지도 모릅니다. 원본 클러스터에서 실행할 수 있다고 했잖아요. "-d SourceIP"를 넣었습니까? 그렇다면 연결 대상 클러스터 IP는 어디에 지정해야합니까? –
'-d'는 대상 클러스터에있는 노드 중 하나 일 것입니다.어디서나 도구를 실행할 수 있습니다. –
응답 해 주셔서 감사합니다. 이 문제에 대한 지식이 부족해서 죄송합니다.하지만 소스 클러스터를 어떻게 지정 하시겠습니까? 원본 클러스터에서 실행하면됩니까? 즉, 대상 클러스터에서 sstableloader를 실행할 수 없다는 것입니다 (소스 IP를 지정하지 않기 때문에). –