scylladb集群管理
一.创建集群
1.安装scylladb
2.修改scylla.yaml配置文件,主要需要配置:
cluster_name:集群名称,所有节点相同
seeds:种子节点列表
listen_address:scylladb和集群其他节点进行通信的IP地址
auto_bootstrap:新节点是否自动同步数据到本节点
rpc_address:Thrift、CQL等客户端连接的地址
3.所有节点上启动scylladb。不需要同时启动,非seed节点要在有seed节点启动完成后才能加入集群。
二.新增节点
a).新节点安装scylladb
b).修改scylla.yaml配置文件,主要需要配置:
cluster_name:集群名称,要和要加入的集群的名称相同
seeds:种子节点列表,至少要包含一个可以正常通信的seed节点才可以加入集群
listen_address:scylladb和集群其他节点进行通信的IP地址
auto_bootstrap:新节点是否自动同步数据到本节点
rpc_address:Thrift、CQL等客户端连接的地址
c). 启动scylladb。
PS.
官方文档中说集群中有DOWN的节点时,新节点不能加入集群。
但实际测试可以加入,原因未知。
三.auto_bootstrap说明
a).auto_bootstrap
配置新节点加入时,是否自动迁移数据到本节点。
新加入节点才会执行本操作,如果是旧节点,即使配置成TRUE也没有意义。也就是说,如果一个DOWN的节点重新连接回来,数据是不会自动同步的,只有保存了hint数据的节点才会将掉线期间的数据发送到该节点。
auto_bootstrap默认开启。
b).token
如果设置了auto_bootstrap,将会找一个load大的节点,将其一半的token环区间配置到当前结点上。(看的是较老的cassandra文章,未确认当前版本是否如此,可能是每个虚拟节点都分开这样处理)
如果没有设置auto_bootstrap,则随机生成token,或者使用用户指定的token
四.删除节点
1.删除正常节点
a)删除命令
nodetool decommission -h 192.168.1.244
运行命令后节点将被从集群中删除,但数据将被同步到其他节点上去。测试3节点、2副本、1.57亿条数据,每个节点占用空间14GB左右,decommission耗时为22分钟。
b)节点从集群中被删除后,节点中的数据不会被删除,需要手动删除。如果没有删除数据的话,节点无法作为新节点重新加入到集群。
2.删除down节点
a)删除命令
nodetool removenode e9b26968-8220-4e54-8a78-2255ceb133d7
后面的e9b26968-8220-4e54-8a78-2255ceb133d7是Host ID,可以通过nodetool status获取到。
b)down节点删除后也会进行数据同步,同样的数据耗时约35分钟,应该是因为节点少了,每个节点的压力变大了。这个过程的资源占用很高,CPU几乎占满,io和网络占用有几十MB/s。
五.其他命令
1.nodetool repair
修复整个集群,一般需要定期运行以保证数据同步。
常见有以下情况下可能出现较长时间的不同步:
a)加入新节点,且没有设置auto_bootstrap
b)节点掉线长时间后再上线,hint时长不够
2.nodetool compact
手动进行compaction,将会对本节点中的所有SSTable执行compact,可以减少空间占用
3.nodetool assassinate
删除一个down的节点,且不进行数据迁移
4.nodetool enablebackup
增量备份,机制是创建硬链接到备份目录
————————————————
版权声明:本文为CSDN博主「cocoti」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xuhaitao23/article/details/110804519
相关文章