scylladb集群管理

2022-05-25 00:00:00 数据 集群 删除 节点 配置

一.创建集群

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

相关文章