2017-02-06 14 views
1

잠재적 인 시나리오에 대한 질문이 있으며 우리의 가정이 정확한지 알고 싶습니다. (DSE 5.x를 가진 사용 카산드라 3.x를)새로운 cassandra 데이터 센터의 키 공간 동기화

우리는 클러스터에 새 (신선한) 데이터 센터를 추가하기 위해, 우리가 필요로하는 docs에서 배운 임시과 같이 ReplicationFactor을 설정합니다 :

{'class' : 'NetworkTopologyStrategy', 'DC1' : 3, 'DC2' : 0 }

여기서 DC1은 현재 실행중인 데이터 센터이고 DC2는 추가 할 데이터 센터입니다. 이 테스트는 기존 라이브 링의 데이터 스트리밍이 새로운 링에 미치는 영향을 이해하는 데 도움이되었습니다.

이제 가상으로 하나의 DC로 복제 된 키 공간을 복제하여 현재 실행중인 다른 DC에 저장하는 가상 시나리오를 살펴보십시오. 키 스페이스 만들 때

: 그럼

CREATE KEYSPACE Foo WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'US' : 2, 'EU' : 0}; 

을, 비즈니스 요구 사항을 변경할 때 :

ALTER KEYSPACE Foo WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'US' : 2, 'EU' : 2}; 

그것 때문에 0으로 모든 DC를 사용하여 응용 프로그램의 모든 새로운 keyspaces을 정의하는 것이 안전 간주됩니다 값은 어느 시점에서 수정 될 수 있습니다. 또한 복제 요소를 변경하면 키 공간을 다른 데이터 센터로 스트리밍 할 수 있습니다. 또는 nodetool rebuild을 실행해야합니까?

답변

2

허용 된 방법은 단순히 특정 키 공간에서 복제하지 않을 DC의 복제 요인을 정의하지 않는 것입니다. 나는 당신이 그것을했다면 나쁜 일이 일어날 것이라고 생각하지 않지만, 이 아니라고 정의하면은 더 안전한 방법이 될 것이라고 생각합니다.

복제 요소가 키 공간의 스트리밍을 다른 데이터 센터로 스트리밍하기에 충분할 정도로 변경 되었습니까? 아니면 nodetool rebuild를 실행해야합니까?

키 공간에서 복제 요소를 변경하면 해당 키 공간에 대한 모든 향후 쓰기가 새 데이터 센터로 이동합니다. 그러나 기존 데이터가 새 데이터 센터에 복제하려면 nodetool repair 또는 nodetool rebuild이어야합니다.

+0

감사합니다. 답변을 수락합니다. 빠른 사이드 질문입니다. ~ 1TB의 키 공간에서 전체 복제를 수행하는 데 걸리는 시간에 대한 측정 항목이 있습니까? –

+0

@FredericCharette 모든 것은 클러스터의 노드 수와 사용 가능한 네트워크 대역폭에 따라 다릅니다. 그러나 지리적으로 분산되어있는 거대 규모의 클러스터에서는 노드 당 50GB를 각각 약 20 분 동안 부트 스트랩하기 위해 새로운 DC에서 노드를 얻을 수있었습니다. 다행히도 DC간에 빠른 연결이 있으며 그 이상을 수행 할 수 있습니다. – Aaron

+0

굉장, 정보 주셔서 감사합니다! –