cassandra auto bootstrap

cassandra의 환경 설정에 보면 auto_bootstrap 값이 있습니다.
auto_bootstrap 값이 true이면 Cassandra 데몬이 최초 실행될 때 자신에게 할당된 token(자동 할당 또는 환경설정에 임의로 지정) 값의 범위에 해당하는 데이터를 주변의 서버로부터 가져오는 기능을 수행합니다. 데이터가 많은 경우 이 시간이 몇시간 소요될 수도 있습니다.
문제는 bootstrap 과정은 데몬이 최초 한번 실행될때만 수행하고 일단 데몬이 실행되었으면 데몬을 재시작해도 bootstrap을 하지 않습니다. 최초 시작시 bootstrap을 false로 한 후  재시작시에는 bootstrap을 true로 해도 bootstrap 과정은 실행하지 않습니다.
이것 때문에 다음과 같은 문제가 발생할 가능성이 있습니다.

1. Cassandra 서버를 여러대에 실행(초기 클러스터 구축)
2. 데이터 입력(운영중)
3. 신규 Cassandra 서버 추가
   실수로 auto_bootstrap을 false로 해서 실행
4. ring 정보에 정상 up 상태 확인
5. 데이터 입력
   신규로 추가된 Cassandra 서버에도 데이터가 저장됨

이 상태가 되면 기존에 입력되어 있는 데이터 중 새로 추가된 서버의 token 범위에 있는 데이터는 모두 조회되지 않고 null을 반환합니다.
 bootstrap을 다시하게 하는 방법은 data, commitlog 디렉토리를 모두 지우고 bootstrap을 true로 지정하고 재시작하는 방법뿐인것 같습니다. 이렇게 되면 5번에 입력된 데이터는 모두 지워지게 됩니다.
소스 코드 레벨에서 확인 중인데 이런 상황을 예방하거나 이 상황에서 데이터를 모두 살릴 수 있는 방법이 없을까요? 운영중에 대략 난감한 상황이 발생할 수도 있다는 생각이 드네요…
 

Comments