2016-06-07 3 views
0

나는 실수로 Cassandra 2 상자를 Cassandra 3으로 업그레이드했습니다. 데이터는 그대로 유지되었지만 다른 도구와의 호환성을 위해 다시 Cassandra 2로 가져와야합니다. 여기에 게시 된 How to downgrade Cassandra 3.0.0 -> 2.x?의 게시물을 읽었을 때 수동으로 데이터를 플로팅해야하는 불편을 겪었습니다 (많은 데이터가 아닙니다).Cassandra 2로 다운 그레이드

apt-get dist-upgrade을 사용하여 업그레이드가 실수로 수행되었지만 이후에 아무 것도 수행되지 않았습니다. nodetool을 사용하는 것에 대한 의견이 있습니다. apt-get process의 일부가 아니라면 실행되지 않았습니다. 나는 Cassandra를 관리하는 것에 대해서 0에 대해서 알고 있습니다.

나는 다음과 같은 버전의 새로운 카산드라 2 서버를 구축 한

:

[cqlsh 4.1.1 | Cassandra 2.0.17 | CQL spec 3.1.1 | Thrift protocol 19.39.0] 

카산드라 3 서버 버전에 :

[cqlsh 5.0.1 | Cassandra 3.0.6 | CQL spec 3.4.0 | Native protocol v4] 

내가 모두를 내보내려면 COPY 명령을 사용하여 데이터을 CSV 파일로 변환하고 키 공간에서 DESC을 사용하여 모든 테이블과 해당 헤더 및 유형을 표시합니다. 나는 키 스페이스와 테이블을 다시 나는 DESC 명령에서 만든 .cql 파일을 사용하려고하면

, 그것은 실패

cqlsh -u cassandra -p cassandra -f "mykeyspace.cql" 
mykeyspace.cql:22:Bad Request: Unknown property 'crc_check_chance' 
mykeyspace.cql:40:Bad Request: Unknown property 'crc_check_chance' 
mykeyspace.cql:57:Bad Request: Unknown property 'crc_check_chance' 
... 
내가 cqlsh에 목록을 검색 할 수 있습니다로 키 스페이스를 만드는 나타납니다

하지만 테이블이 없으므로 CSV에서 데이터를 가져올 수 없습니다.

아마도 crc_check_chance가 3.x에서 도입 된 새로운 것이라 생각 했으므로 키 공간을 삭제 한 후 .cql 파일을 다시 실행하려고했지만 다른 옵션에서는 여전히 실패합니다.

이 데이터를 다시 Cassandra 2로 가져 오려면 어떻게해야합니까?

편집 : 여기 내 (현재)에서이 수출에서 하나 개의 테이블 카산드라 3 예는 다음과 같습니다

CREATE TABLE mykeyspace.users (
    username text PRIMARY KEY, 
    first_name text, 
    last_name text, 
    roles set<text> 
) WITH bloom_filter_fp_chance = 0.01 
    AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'} 
    AND comment = '' 
    AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'} 
    AND compression = {'chunk_length_in_kb': '64', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'} 
    AND crc_check_chance = 1.0 
    AND dclocal_read_repair_chance = 0.1 
    AND default_time_to_live = 0 
    AND gc_grace_seconds = 864000 
    AND max_index_interval = 2048 
    AND memtable_flush_period_in_ms = 0 
    AND min_index_interval = 128 
    AND read_repair_chance = 0.0 
    AND speculative_retry = '99PERCENTILE'; 

이 실패,하지만 난 다음 필드를 제거하는 경우,이 테이블 구축 할 것 같다

를 테이블이 생성 되더라도
AND crc_check_chance = 1.0 
    AND min_index_interval = 128 
    AND max_index_interval = 2048 
    AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'} 

는 데이터는 나에게 올바르게 명령을 사용하지 않을 수 있습니다, CSV에서 가져 실패

cqlsh> USE mykeyspace; 
cqlsh:mykeyspace> COPY users FROM '/home/user/cassandra/users.csv'; 
Bad Request: line 1:118 no viable alternative at input ')' 
Aborting import at record #0 (line 1). Previously-inserted values still present. 
+0

당신은 이미 nodetool upgradedesktop을 실행 했습니까? – fromanator

+0

명시 적으로. 또한 apt-get 업그레이드 시퀀스가 ​​포함되어 있는지 알 수 없습니다. – Andrew

답변

1

우연히 apt-get upgrade으로 업그레이드되었는데 자동으로 nodetool upgradesstables을 실행하지 않는 것 같습니다 (수동으로 실행하면 APT를 통해 업데이트 한 후 실행되는 upgrade guide # 9 참조).

그래서 다음을 수행 할 수 있어야한다 :

  1. 필수주의 :
  2. 당신이 apt-cache showpkg cassandra로 다운 그레이드 할 카산드라 버전 찾기 (단지의 경우) 계속하기 전에 백업 클러스터에 대한 데이터를 먼저
  3. 는 카산드라가 이전 버전 이전 버전 sudo apt-get install cassandra=<desired-cassandra-version>
  4. 검증에 바이너리를 다운 그레이드과는
  5. 는 핀 APT에게 작품 r 패키지 버전 apt-mark hold cassandra
+0

나는 이것을 시도해 보았고 apt가 트릭을 설치하는 것처럼 보였지만, cassandra가 시작하지 못하고 노드에서 cqlsh를 사용할 수 없다. – Andrew

+0

APT가 업그레이드 프로세스 (debian upgrade subsection) (http://docs.datastax.com/en/latest-upgrade/upgrade/cassandra/upgradeDebC_t.html#task_ds_rvs_qzr_ck)에서 구성 파일을 덮어 썼을 것이라고 생각합니다. . 따라서 설정 파일이 예상대로 설정되었는지 다시 한 번 확인합니다. – fromanator

+0

나는이 시점에서 해결할 수있을 것이라고 생각합니다. 아마도? 로그에 다음과 같은 에러가 발생합니다 : Cassandra의 새로운 설치와 관련하여 신경 쓰지 않는 데이터를 신경 쓸 필요가 없습니다 :'CassandraDaemon.java:638 - 감지 할 수없는 sstables/var/lib/cassandra/data/mykeyspace ... '로그를 좀 더 읽기 쉽도록 다시 포맷하면 모든 테이블이 엉망이되어 'NEWS.txt를 확인하고 필요한 중간 버전을 모두 업그레이드했는지 확인하십시오.'라는 메시지가 나오게됩니다. 부러진 테이블에 연결할 수 없다면 업그레이드를 실행할 수 있다고 생각하지 않습니다. – Andrew