2016-10-18 6 views
1

は私がnode1上カサンドラ容器内複製因子3は、私はカサンドラ3.7コンテナ内に設置し、kubernetes によって管理されているすべての時間

で鍵空間のcathy1を作成し、私はキースペースcathy1を作成したデータを復元しない復元します以下のように:

CREATE KEYSPACE cathy1 WITH replication = {'class':'SimpleStrategy', 'replication_factor' : 3}; 

CREATE TABLE cathy1.employees(emp_id int PRIMARY KEY,emp_name text); 
INSERT INTO cathy1.employees(emp_id,emp_name) VALUES (1,'cathy'); 
INSERT INTO cathy1.employees(emp_id,emp_name) VALUES (2,'jon'); 

ので、各ノードはデータ

の100%を所有している私は、各ノードにcqlsh -f list_tablesを実行します

私はノード2上で実行
emp_id | emp_name 
--------+---------- 
     1 | cathy 
     2 |  jon 
(2 rows) 

:私はこれを含むcassandra/data/cathy1/employees* /snapshots下のディレクトリmycathy1-node2を参照してください

nodetool snapshot -t mycathy1-node2 cathy1 

-rw-r--r-- 1 root root 32 Oct 18 20:27 manifest.json 
-rw-r--r-- 2 root root 43 Oct 18 20:22 mb-12-big-CompressionInfo.db 
-rw-r--r-- 2 root root 96 Oct 18 20:22 mb-12-big-Data.db 
-rw-r--r-- 2 root root 9 Oct 18 20:22 mb-12-big-Digest.crc32 
-rw-r--r-- 2 root root 16 Oct 18 20:22 mb-12-big-Filter.db 
-rw-r--r-- 2 root root 32 Oct 18 20:22 mb-12-big-Index.db 
-rw-r--r-- 2 root root 4610 Oct 18 20:23 mb-12-big-Statistics.db 
-rw-r--r-- 2 root root 56 Oct 18 20:22 mb-12-big-Summary.db 
-rw-r--r-- 2 root root 92 Oct 18 20:22 mb-12-big-TOC.txt 

その後、私はテーブル

cqlsh -e "truncate cathy1.employees" 
を切り捨てます

emp_id | emp_name 
--------+---------- 
(0 rows) 

私はノード2の修復を実行します。

その瞬間、任意のノード
cassandra/data/cathy1/employees*下のファイルがないスナップショットのみのディレクトリには、私は、各ノード上でcqlsh -f list_tablesを実行

まま:

nodetool repair cathy1 

が正常
を終了

emp_id | emp_name 
--------+---------- 
(0 rows) 

私はnodetool repair cathy1

を実行して、まだデータ表示があります:そして、まだノード2

cd cassandra/data/employees* 
cp ./snapshots/mycathy1-node2/* . 

-rw-r--r-- 1 root root 32 Oct 18 20:34 manifest.json 
-rw-r--r-- 1 root root 43 Oct 18 20:34 mb-12-big-CompressionInfo.db 
-rw-r--r-- 1 root root 96 Oct 18 20:34 mb-12-big-Data.db 
-rw-r--r-- 1 root root 9 Oct 18 20:34 mb-12-big-Digest.crc32 
-rw-r--r-- 1 root root 16 Oct 18 20:34 mb-12-big-Filter.db 
-rw-r--r-- 1 root root 32 Oct 18 20:34 mb-12-big-Index.db 
-rw-r--r-- 1 root root 4610 Oct 18 20:34 mb-12-big-Statistics.db 
-rw-r--r-- 1 root root 56 Oct 18 20:34 mb-12-big-Summary.db 
-rw-r--r-- 1 root root 92 Oct 18 20:34 mb-12-big-TOC.txt 
drwxr-xr-x 16 root root 4096 Oct 18 20:29 snapshots 

に続いて、私は、各ノード上でcqlsh -f list_tablesを実行nodetool refresh employees
を実行します! !!!!

Pending Flushes: 0 <br> 
      Table: employees <br> 
      Space used (live): 4954 <br> 
      Space used (total): 4954 <br> 
      Space used by snapshots (total): 59873 <br> 
      Off heap memory used (total): 32 <br> 
      SSTable Compression Ratio: 0.75 <br> 
      **Number of keys (estimate): 4** <br> 

統計がテーブル内の4つのキーcqlsh

と、まだデータがない目に見えるcathy1.employees

nodetool flush cathy1 

があると言う場合でも、それはなぜですか?

答えて

0

スナップショットファイルをコピーしたディレクトリにsstableloaderを実行する必要があります。

sstableloader -d <node_ip> -u cassandra -pw cassandra <directory_location> 

注:現在のディレクトリは、あなたのスナップショットファイルをコピーしたディレクトリである場合、あなたはフィールドdirectory_locationで何を配置する必要はありません。 sstableloaderの詳細については

https://docs.datastax.com/en/cassandra/2.0/cassandra/tools/toolsBulkloader_t.html

+0

は、なぜ私はsstableloaderを実行する必要がありますか?ドキュメンテーションによると、nodetool refreshは同じことをします。 –

+0

表の従業員のためにcfstatsのキーが表示されるのはなぜですか?*は選択されていません。 –

+0

データのバックアップと復元には、さまざまな方法があります。スナップショットを作成することなくデータをバックアップおよび復元することができます(COPY TO CSVおよびCOPY FROM CSV)。私にとっては、sstableloaderの助けを借りて、スナップショットを使ってデータを正常にバックアップおよび復元しました。それはうまく動作します。 –

関連する問題