2014-12-04 58 views
2

我在本地系統上安裝了apache cassandra以進行測試。使用1個系統(1個節點),我可以在數據庫中讀/寫和查詢。我添加了另一個節點並創建了一個集羣。現在,我在我的系統上寫入的數據將在其他節點上進行復制,反之亦然,但不會複製出現在我的系統上的添加新節點的數據。儘管密鑰空間和表格存在於新節點上,但它們是空的。在將新節點添加到羣集時,我做錯了什麼?Cassandra集羣舊數據未複製到新節點

+0

新節點是否位於不同的數據中心? – mildewey 2014-12-04 20:05:39

+0

不在同一個數據中心。我已經使用SimpleStrategy作爲複製策略。在羣集中添加節點後,無論寫入操作在其他節點上是否可見,但添加新節點之前的數據都不存在,即使存在密鑰空間和表格也是如此。 – Ashish 2014-12-07 10:49:12

+0

好的,基於此,我的答案如下。 – mildewey 2014-12-08 21:06:49

回答

1

我最好的猜測是你關閉了auto_bootstrap(默認爲ON)。從文檔:

auto_bootstrap (默認:true)此設置已從默認配置中刪除。它使新的(非種子)節點自動將正確的數據遷移到自己。初始化一個沒有數據的新集羣時,添加auto_bootstrap:false。

解決此問題的最簡單方法是在節點上運行修復程序,以確保它獲取缺少的任何數據。

http://www.datastax.com/documentation/cassandra/2.0/cassandra/operations/ops_repair_nodes_c.html

+0

我在Cassandra.yaml文件中找不到auto_bootstrap選項。也許它已從最新版本的配置文件中刪除。我發現,由於默認情況下auto_bootstrap已關閉,所以數據未被複制。我在新的節點上運行了修復命令,該節點複製了所有丟失的數據。謝謝你的幫助。乾杯:) – Ashish 2014-12-09 09:48:36

+0

是的,沒錯。該選項在最近的版本中已被刪除,但如果您需要將它添加到未來的節點中,則可以將其添加回去。 – mildewey 2014-12-10 04:50:14

+0

是的。嘿,mildewey我正在用sstableloader嘗試一些東西,你能幫我嗎?我能夠在我的集羣和獨立節點上加載SStables。現在我想用一個單一的sstableloader命令在集羣的不同節點上添加不同的SSTables(即不同的數據),或者我們可以同時說,實際上是爲了檢查在這種情況下能夠獲得的速度。有沒有辦法做到這一點?提前致謝。 – Ashish 2014-12-10 07:07:40

0

如果你有正確的種子和複製設置。但數據仍然沒有被複制到新的數據中心。請使用-full執行nodetool repair選項將數據複製到新的數據中心節點。

相關問題