cassandra的遷移表數據有2種方式,以keyspace名為mydb,table名為user為例子:
方法一:copy命令。
這種方式適合數據量較小的情況。
1.進入cqlsh,輸入命令:COPY mydb.user TO '/usr/usr.scv';
2.找到剛剛生成的usr.scv文件,復制到需要遷移的服務器上
3.在遷移的數據中表user(表結構相同),然后輸入 COPY mydb.user FROM '/usr/user.scv'; 注:這里鍵空間可以不同
到這里第一種方式就結束了,這種方式適合數據量較小的情況。
方法二:sstableloader
sstableloader提供了一種可以跨集群遷移數據的方案,參考資料 http://docs.datastax.com/en/cassandra/3.0/cassandra/tools/toolsBulkloader.html。
使用這種方式,需要在遷移的數據庫中建相同的鍵空間和表結構。
使用命令:./sstableloader -d 192.168.3.90 -u cassandra -pw cassandra -t 100 /var/lib/cassandra/data/mydb/user-77470310dc9111e6b83b3767ed5523d2/
-d:遷移的服務器IP;-u:遷移集群的用戶名;-pw:遷移集群的用戶密碼;-t:限制流量; 最后的是被遷移集群儲存數據的目錄(/.../keyspace_name/table_name)。
注:
1.如果集群有多個節點,每個節點都需要執行上面的命令
2.有些時候一張表會有多個目錄
如上圖這種情況最后的路徑要選擇目錄下含有.db文件的路徑(最新的表)
等集群所有節點都執行完畢,表數據的遷移就完成了。