2016-08-02 76 views
0

我知道有幾個類似的問題,但我仍然對此感到困惑。由於需要這種機制(將數據從一個羣集複製到另一個羣集),我正在尋找一些解釋。卡桑德拉 - 從一個集羣複製sstable快照到另一個集羣

讓我們假設一個非常簡單的場景。我想將一個表從一個cassandra集羣(C1)複製到另一個(C2)。我正在複製的表格被稱爲「item」。

我們假設每個羣集的節點數是相同的(每個羣集中的源節點和目標節點都是4)。不確定事情與否。

我正在嘗試使用快照和sstableloader來做伎倆。我已經能夠創建快照,將C1:N1(羣集1節點1 .../myspace/item-xxxxxx/snapshot/######)中的快照文件複製到目標表目錄C2:N1(羣集2節點1:.../myspace/item-xxxxxx)。我用sstableloader來加載數據並運行nodetool修復。完善。唯一的問題是,由於加載的快照僅來自其中一個源節點,我只能「還原」部分數據(大約1k行中的485個)。所以我想我會再次將快照從C1:N2複製到C2:N1並加載它。問題是所有的表文件都已經存在於C2:N1上。如果我將C1:N2中的快照文件複製到C2:N1上的表格目錄,我將刪除已存在的文件。我沒有檢查全部4個目標節點,但是我確實檢查了目標的節點2,並且項目表目錄也已經存在於數據文件中。我猜目標上的所有節點都有數據文件,所以我堅持如何安裝其他3個源節點快照文件。

長話短說(如果可能的話): 我該如何將多個源快照文件(源羣集上每臺主機上的一個源文件)加載到目標羣集?並且使事情複雜化起來,如果源和目標集羣有不同數量的節點(我認爲在目標上擁有更少的節點可能會成爲更大的問題)會有關係嗎?

在我看來,真正需要的是在SOURCE集羣上運行ssableloader並將數據傳輸到目標集羣的方法。我會想,會讓生活變得更容易。

在此先感謝。

-Jim

回答

1

two options for bulk loading,看來你可能有他們的半合併在一起。你主要是指「複製sstables」機制,這是相當手動的,可能不值得麻煩,除非恢復的性能是最優先的。使用sstable加載程序雖然不同,但並不需要。

sstableloader工具將連接到節點,查找該節點集羣中的所有節點並使用該連接來構建元數據/發現。它會將您選擇的sstables拆分/流式傳輸到適當令牌範圍內的目標羣集(您不需要修復)。您可以從源羣集節點運行sstableloader,並將其指向目標羣集,您不需要將sstables複製到自己(儘管它們在不同的DC中可能會快一點)。

如果你有OpsCenter中,這些步驟的自動化可以爲你做一個GUI https://docs.datastax.com/en/opscenter/5.2/opsc/online_help/services/opscBackupCloneCluster.html

+0

所以sstableloader與「-d IP」運行。當我這樣做時,它就是目標IP,並且從一個目標節點運行它(並且我使用快照來加載數據)。也許這就是我出錯的地方。你說我可以從源集羣運行它。我是否放置了「-d SourceIP」?如果是這樣,我在哪裏指定要連接的目標羣集IP? –

+0

'-d'應該是目標集羣中的任何節點。該工具可以從任何地方運行 –

+0

感謝您的迴應。所以對於我缺乏這方面的知識感到抱歉,但是如何指定要連接到的源羣集呢?只需在源羣集上運行它?這就是說,那麼你就不能在目標集羣上運行sstableloader然後正確(因爲我們無處指定源IP)? –

相關問題