2017-06-03 40 views
0

我最近開始在Cassandra上工作,一切都很好的記錄和易於理解。SSTable多個目錄

但是我無法找到任何答案以下問題:

Cassandra的數據目錄(/ var/lib中/卡桑德拉/數據/ KS)爲什麼有相同的SSTable多個子目錄? 爲什麼要創建新目錄?

[[email protected] 2017-06-03--19-46-14 cassandra $] ls -l /var/lib/cassandra/data/ks 
 
total 8 
 
drwxr-xr-x. 3 root root 4096 Jun 3 19:46 events-4f35e2c0482911e79119511599d22fe7 
 
drwxr-xr-x. 3 root root 4096 Jun 3 19:41 events-7a34c34047f411e7aee3b9dc2549db1c 
 

 
[[email protected] 2017-06-03--19-46-10 cassandra $] tree 
 
. 
 
├── events-4f35e2c0482911e79119511599d22fe7 
 
│   ├── ks-events-ka-4-CompressionInfo.db 
 
│   ├── ks-events-ka-4-Data.db 
 
│   ├── ks-events-ka-4-Digest.sha1 
 
│   ├── ks-events-ka-4-Filter.db 
 
│   ├── ks-events-ka-4-Index.db 
 
│   ├── ks-events-ka-4-Statistics.db 
 
│   ├── ks-events-ka-4-Summary.db 
 
│   ├── ks-events-ka-4-TOC.txt 
 
│   └── snapshots 
 
└── events-7a34c34047f411e7aee3b9dc2549db1c 
 
    └── snapshots 
 
     └── 1496472654574-device_log 
 
      └── manifest.json 
 

 
5 directories, 9 files

我注意到,潮紅或壓實不創建新的目錄。它只是添加/壓縮最新的SSTable目錄

回答

1

當您刪除表格時,默認情況下Cassandra會採用快照來防止數據丟失(如果它是意外的)。在你的情況下,事件7a34c34047f411e7aee3b9dc2549db1c是舊錶,它只有快照目錄。

負責該動作的Cassandra.yaml參數如下

auto_snapshot(默認值:true)啓用或禁用的快照 是否密鑰空間截短或表的滴之前取得的數據的。 爲防止數據丟失,強烈建議使用默認設置。 如果設置爲false,則將丟失截斷或丟棄數據。

請記住在生產環境中清理較舊的錶快照,否則它可能很容易堆積在數據目錄大小上。

+0

這有幫助。謝謝! 但是,當刪除密鑰空間時,不應該清除相應的sstable目錄 –

+1

顯然它並不是因爲auto_snapshot設置爲true。因此,刪除密鑰空間會導致該密鑰空間內所有表的快照。如果整個密鑰空間sstable目錄被丟棄,你只是丟失了安全閥。因此,爲了我們的安全,Keyspace drop不會丟失目錄。嘗試將auto_snapshot設置爲FALSE,然後刪除keyspace,它將刪除目錄。 **但是猜猜它是否危險!** – dilsingi

+0

另外,需要注意的是auto_snapshot:false不會刪除SSTable目錄。這隻意味着如果刪除密鑰空間,不要爲我的SSTables快照 –

0

如果你刪除一個密鑰空間(與我的情況一樣),它不會從文件系統中刪除密鑰空間目錄(/ var/lib/cassandra/data/ks)(auto_snapshot :真正)。這就是我仍然看到舊的目錄/ s的原因。

0

在cassandra中,當您刪除一個表時,它的目錄仍保留在KeySpace目錄中。 就你而言,看起來你創建了一張表,其中包含之前丟棄的表的名稱。因爲你有一個帶有兩個目錄的表,其中一個目錄是無用的,你可以rm -rf目錄或運行nodetool clearsnapshot。