2013-11-15 513 views
4

我們有兩個cassandra集羣,第一個擁有舊數據,第二個擁有新數據。將數據從cassandra遷移到cassandra

現在我們要將舊數據從第一個羣集移動或複製到第二個羣集。什麼是最好的方式來做到這一點,以及如何做到這一點?

我們正在使用DSE 3.1.4。

+1

做這些集羣配置相同的密鑰空間?什麼是複製?你想要在兩個羣集之間複製的所有數據還是僅保留在第二個羣集上? – RussS

+0

必須更改keysapce的名稱,並且第一個羣集具有一個主鍵,而我們需要複製數據的第二個羣集具有複合主鍵。 – Ram

回答

3

您可以嘗試的一種工具是COPY TO/FROM cqlsh命令。

在舊集羣中的一個節點,你可以使用COPY FROM:

cqlsh> COPY myTable (col1, col2, col3, col4) TO 'temp.csv' 

然後一個節點上的新羣集(複製過該文件之後),你會複製的數據CSV文件導入卡桑德拉:

cqlsh> COPY myTable (col1, col2, col3, col4) FROM 'temp.csv' 

這裏是關於COPY命令一些更多的文檔。

請注意,對於僅包含幾百萬行或更少行的表,建議使用COPY TO/FROM。對於更大的數據集,你應該看看:

+0

對不起,我忘了提到,我在新集羣中有不同的模式(添加一個複合主鍵)。這是否仍然有效? – Ram

+0

我有350GB的數據會更快嗎? – Ram

+0

如果架構不同,您可以指定您想要映射每列的方式;所以沒關係。 350GB全是一張桌子嗎?如果是這樣,可以嘗試使用COPY,但我認爲Bulk Loader可能是您最好的選擇。 – Aaron

2

有一個名爲/ usr/bin/sstableloader的工具用於在羣集之間複製數據。雖然當我在幾個月前使用它時,我遇到了錯誤並改爲使用this。但是自從很久以前,sstableloader可能已經被修復了。

相關問題