cassandra迁移表数据
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文件的路径(最新的表)
等集群所有节点都执行完毕,表数据的迁移就完成了。