scylladb通过扩缩容节点迁移数据
环境: Scyllsdb版本:4.2
一、上线新节点
1、确认集群状态和检查配置
[root@172-16-121-153 scylla]# nodetool -h ::FFFF:127.0.0.1 status
Datacenter: my_data_center
==========================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns Host ID Rack
UN 172.16.121.151 37.05 MB 256 ? dfb03e20-6c5c-4360-b1d5-0735369b61fb my_rack
UN 172.16.121.152 36.98 MB 256 ? ff2beda1-1253-419b-a2e5-415f072ba25c my_rack
UN 172.16.121.153 36.56 MB 256 ? 8efc9e61-2316-4a65-9de5-e2edb2af4eca my_rack
检查配置脚本:
cat /etc/scylla/scylla.yaml | grep cluster_name
cat /etc/scylla/scylla.yaml | grep seeds:
cat /etc/scylla/scylla.yaml | grep endpoint_snitch
cat /etc/scylla/scylla.yaml | grep -E "listen_address|rpc_address"
scylla --version
集群名称
[root@172-16-121-152 scylla]# cat /etc/scylla/scylla.yaml | grep cluster_name
cluster_name: 'dtstack'
种子节点配置:
[root@172-16-121-152 scylla]# cat /etc/scylla/scylla.yaml | grep seeds:
- seeds: "172.16.121.151"
告密者策略:
[root@172-16-121-152 scylla]# cat /etc/scylla/scylla.yaml | grep endpoint_snitch
#endpoint_snitch: SimpleSnitch
endpoint_snitch: GossipingPropertyFileSnitch
scylla版本:
[root@172-16-121-152 scylla]# scylla --version
4.2.4-0.20210302.0ac069fdc
2、部署scylladb
参考:https://yunche.pro/blog/?id=147
3.1 scylla.yaml
各参数和现有集群一致,seeds节点加入新节点ip,保证后续下线节点时候,集群可用。
vi /etc/scylla/scylla.yaml
cluster_name: 'dtstack' --集群名称
listen_address: 172.16.121.154 --本节点ip
rpc_address: 172.16.121.154 --本节点ip
seed_provider:
- class_name: org.apache.cassandra.locator.SimpleSeedProvider
parameters:
- seeds: "172.16.121.151,172.16.121.154"
endpoint_snitch: GossipingPropertyFileSnitch
3.2 cassandra-rackdc.properties
vi /etc/scylla/cassandra-rackdc.properties
dc=my_data_center --设置数据中心名称
rack=my_rack --设置机架名称
4、启动scylla服务
5、验证集群状态
[root@172-16-121-154 lib]# nodetool -h ::FFFF:127.0.0.1 status
Datacenter: my_data_center
==========================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns Host ID Rack
UN 172.16.121.151 37.06 MB 256 ? dfb03e20-6c5c-4360-b1d5-0735369b61fb my_rack
UN 172.16.121.152 36.99 MB 256 ? ff2beda1-1253-419b-a2e5-415f072ba25c my_rack
UN 172.16.121.153 36.57 MB 256 ? 8efc9e61-2316-4a65-9de5-e2edb2af4eca my_rack
UN 172.16.121.154 30.65 MB 256 ? 4f8e0b46-3115-4415-a2c1-60a458859f1d my_rack
Note: Non-system keyspaces don't have the same replication settings, effective ownership information is meaningless
6、查看网络传输和数据同步进度
nodetool -h ::FFFF:127.0.0.1 netstats
· 等待数据传输完成,按照上面的1-6步骤依次添加足够所需的新节点。
7、清理数据
等待新节点数据同步完成后,业务低峰期,依次在除新节点外的节点删除不再属于该节点key
nodetool -h ::FFFF:127.0.0.1 cleanup
8、业务切换连接地址到新节点,安排时间进行下线节点
二、下线节点
1、状态检查
nodetool -h ::FFFF:127.0.0.1 status
2、删除节点
nodetool -h ::FFFF:127.0.0.1 decommission
3、验证集群状态
--观察下线数据传输进度
iftop
nodetool -h ::FFFF:127.0.0.1 netstats
--传输完成后验证集群状态
nodetool -h ::FFFF:127.0.0.1 status
4、数据删除
从集群中删除节点时,不会自动删除其数据。您需要手动删除数据以确保它不再计入该节点上的负载。使用以下命令删除数据(此步骤可以不执行)
sudo rm -rf /var/lib/scylla/data
sudo find /var/lib/scylla/commitlog -type f -delete
sudo find /var/lib/scylla/hints -type f -delete
sudo find /var/lib/scylla/view_hints -type f -delete