scylladb通过扩缩容节点迁移数据

广大2年前技术文章1731

环境: Scyllsdb版本:4.2


一、上线新节点

1、确认集群状态和检查配置

· 首先确认集群各节点状态是Up Normal (UN),

[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、配置参数

配置文件默认位于/etc/scylla

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服务

systemctl start scylla-server

5、验证集群状态

节点状态UN,代表数据节点状态正常。

[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、状态检查

确保删除节点的状态为节点状态为:UN

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


相关文章

Docker Engine - Containerd

Docker Engine - Containerd

1、背景Docker 崛起很久以前,Docker 强势崛起,以 “镜像” 这个大招席卷全球,对其他技术进行致命的降维打击,使其毫无招架之力,就连 Google 也不例外。Google 为了不被拍死在沙...

Redis 主从同步

Redis 主从同步

前言在分布式系统中为了解决单点问题,通常会把数据复制到多个副本部署到其它机器,满足故障恢复和负载均衡需求。Redis 也提供了复制功能,实现相同数据多个 Redis 副本。本篇文章介绍如何配置 Red...

K8S中 CNI 插件的解读

K8S中 CNI 插件的解读

一.CNI是什么首先我们介绍一下什么是 CNI,它的全称是 Container Network Interface,即容器网络的 API 接口。它是 K8s 中标准的一个调用网络实现的接口。Kubel...

MySQL运维实战之Clone插件(10.2)Clone插件原理

MySQL运维实战之Clone插件(10.2)Clone插件原理

clone插件实现clone操作主要分为几个阶段:1、初始阶段。初始阶段,会开启页面跟踪(Page Tracking)。开启页面跟踪后,修改过的页面的编号会被记录下来。页面的修改可分为两个阶段:首先在...

ranger对接hbase

ranger对接hbase

前提:本文是基于集群中已经部署了ranger组件和hbase组件的情况下,增加ranger对hbase组件的对接。安装部署1、ranger-hbase插件安装使用ranger2.3版本对接插件。将插件...

SonarQube 代码质量平台

SonarQube 代码质量平台

官网:https://www.sonarqube.org/SonarQube 是一个开源的代码质量管理系统。可以对代码进行自动审查,检测代码中的错误、漏洞和代码味道。它可以与您现有的工作流程集成,以实...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。