2011-03-28 4 views

답변

0

내가 아는 한, Riak에는 단일 버킷을 백업하는 자동화 된 솔루션이 없습니다. 단일 실제 노드 백업을 처리하려면 riak-admin 명령 줄 도구를 사용해야합니다. 단일 버킷의 모든 키를 검색하고 빠른 (r = 1) 보안을 원할 경우 낮은 r 값을 사용하여 무언가를 작성할 수 있습니다.

버킷은 논리 네임 스페이스이며 모든 키는 동일한 비트 캐시 구조에 저장됩니다. 이것이 단일 노드를 얻는 유일한 방법은 직접 스트리밍하는 도구를 작성하는 것입니다.

+0

riak-admin 도구를 사용하여 백업하는 데 문제가 있습니다. 백업 속도가 느려서 제대로 복구 할 수 없었습니다. 이것이 현재의 백업 솔루션이라면 가능한 빨리 테스트 할 것을 권합니다! 현재 우리 솔루션은 Riak 노드를 중지하고/var/lib/riak 디렉토리의 스냅 샷을 찍은 다음 노드를 시작합니다. 우리가 스냅 샷 (예 : XFS)을 사용하는 파일 시스템을 사용한다면 우리는 그렇게 할 것입니다.우리는 이것을 시험했으며 아무런 문제가 없었습니다. N.b. 이것은 Bitcask를 사용하고 있다고 가정합니다. –

3

단지 하나의 버킷 Riak에서 어려운 작업이 될 것입니다 백업.

모든 솔루션은 다음 두 단계로 귀결됩니다

  1. 목록 버킷에있는 모든 개체를. Riak 클러스터의 어느 위치에서나 버킷의 "매니페스트"또는 내용 목록이 없기 때문에 이는 까다로운 부분입니다.

  2. 위의 목록에서 해당 개체 각각에 대해 GET을 실행하고 백업 파일에 기록하십시오. 이 부분은 일반적으로 쉽지만 성능을 극대화하려면 GET을 병렬로, 멀티 스레드 방식으로, 그리고 일종의 연결 풀링을 사용하여 확인해야합니다.

모든 개체를 나열하는 한, 세 가지 선택 사항 중 하나가 있습니다.

하나는 HTTP (예 : /buckets/bucket/keys?keys=stream) 또는 프로토콜 버퍼를 통해 버킷에서 스트리밍 목록 키 작업을 수행하는 것입니다. 자세한 내용은 http://docs.basho.com/riak/latest/dev/references/http/list-keys/http://docs.basho.com/riak/latest/dev/references/protocol-buffers/list-keys/을 참조하십시오. 어떠한 상황에서도 스트리밍하지 않는 일반 List 키 작업을 수행해야합니다. (그것은 전체 클러스터를 멈추게 할 것이고, 결국 키 수가 커지면 결국 시간 초과되거나 충돌 할 것입니다.)

2 개는 해당 개체 목록을 가져 오기 위해 보조 색인 (2i) 쿼리를 발행하는 것입니다. 토론 및주의 사항은 http://docs.basho.com/riak/latest/dev/using/2i/을 참조하십시오.

Riak Search을 사용하고 3 개의 페이지 매김 검색어를 통해 모든 개체를 검색 할 수 있습니다. (그러나 Riak Search는 쿼리 결과 제한이 10,000이므로 결과가 이상적이지 않습니다.)

단일 버킷을 백업 할 수있는 독립 실행 형 앱의 예를 보려면 효과적인 병렬 GET과 결합 된 스트리밍 목록 키 방식을 사용하는 시험용 Java 앱인 Riak Data Migrator을 살펴보십시오.