2017-10-09 1 views
0

現在、data_file_directoriesプロパティの変更によりデータが欠落しています。data_file_directoriesの変更後のテーブルのマージ

これは2つのエラーの問題です。

まず、別のマウントに/var/lib/cassandra/dataのデータがあり、すべて正常でした。

(2.1から3.9まで)のアップグレード後、コンフィグレーション時にエラーが発生し、data_file_directories[/var/lib/cassandra/data1, /var/lib/cassandra/data2]に変更しました。

/varディレクトリがいっぱいになるまで、エラーが気づかれなかったようです。これで問題が発見され、nodetool removenodeの後にクラスタが復帰しましたが、データが2ヶ月間欠けていました。

data1data2dataにマージすることが可能かどうかを知りたいと思います。

使用すると、data1data2をデータストレージとして使用することはできませんので、nodetool snapshotを使用することはできません。それが何であれ、あなたの助けのための

どうもありがとう;)

答えて

1

あなたは、あなたがこれらのディレクトリを使用して停止するように設定を更新し、古いsstablesは異なるディレクトリにあったと言って、今でているように聞こえます更新された設定では、そこに書き込まれたデータにアクセスできなくなり、そのデータを使用したいと考えています。

利用可能なスータブルがある場合は、現在のdata_files_directoriesにコピーして、nodetool refreshでサーバにロードできます。

ただし、これは危険性がないため、削除されたデータを復活させる可能性があります。同じ世代(ファイル名の数値ID)のファイルを上書きしないように注意する必要があります。

0

ありがとうございましたJeff ...私はそれを試しましたが、それは最後に失敗しました。私が何かを逃したかどうかは分かりません。

とにかく、私はsstableloaderを使用するように提案され、やっているように見えました。それが役立つことIfever、私はそのすべての世話をしようとする小さなスクリプトを書いた:

#!/bin/sh 

DATADIRS=/var/lib/cassandra/data1 
KEYSPACES="keyspace1 keyspace2" 
NODES=192.168.10.21,192.168.10.22 

backup=1 
exec_cmd="" 
test_mode=0 

while [ "$#" != "0" ] ; do 
    case ${1} in 

    -nb|-nobackup|--nb|--no-backup) 
     backup=0 
     ;; 

    -t|-test|--t|--test) 
     exec_cmd=echo 
     test_mode=1 
     ;; 

    -x) 
     set -x 
     ;; 

    *) 
     echo Unknown option ${1}, ignoring it. 
     ;; 

    esac 

    shift 
done 

echo Started at : `date` 

for keyspace in ${KEYSPACES} ; do 

    for datadir in ${DATADIRS} ; do 

     # Create backup dir if needed. 

     if [ "${backup}" = "1" ] ; then 
      ${exec_cmd} mkdir -p ~/cassandra/`basename ${datadir}`/${keyspace} 
     fi 

     # Get the list of tables. 

     kstables=`find ${datadir}/${keyspace} -maxdepth 1 -mindepth 1 -type d` 

     # Now load tabled within active cassandra nodes. 

     for d in ${kstables} ; do 
      echo $d : `date` 
      # Cannot use exec_cmd because of the pipe in the command. 
      if [ "${test_mode}" = "1" ] ; then 
       echo nice -n 10 sstableloader -d ${NODES} $d \> /dev/null 
      else 
       ${exec_cmd} nice -n 10 sstableloader -d ${NODES} $d >/dev/null 
      fi 

      # Backup table dir if needed 

      if [ "${backup}" = "1" ] ; then 
       ${exec_cmd} mv $d ~/cassandra/data1/${keyspace} 
      else 
       ${exec_cmd} rm -rf $d 
      fi 
     done 
    done 
done 

echo Finished at : `date` 

希望これは

+0

を助け、 'sstableloader'のために正常に動作する、ということに注意してくださいリスンアドレスとブロードキャストアドレスしてくださいあなたのcassandraの.yamlは同一でなければなりません。 –

関連する問題