两款方案详解,企业线下数据库迁移至云上ScyllaDB(2)

云掣YunChe6个月前技术文章427

方案二

通过在集群中添加新数据中心的方式,进行数据迁移。然后下线集群老的数据中心。

1. 集群添加新数据中心

1.1. 先决条件

  • 收集现有集群信息:

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 authenticator
cat /etc/scylla/scylla.yaml | grep -E "listen_address|rpc_address"
scylla --version
  • 应用程序配置检查更改:

在所有客户机应用程序上,将一致性级别切换为LOCAL_* (LOCAL_ONE、LOCAL_QUORUM等),以防止协调器访问要添加的数据中心。同时应用修改配置不访问集群新的数据中心。

  • 常用一致性级别解析:

ANY: -写操作必须写到集群中至少一个副本。读操作等待至少一个副本的响应。它以最低的一致性提供了最高的可用性。

QUORUM:当大多数副本响应即可。如果RF=3,则有2个副本响应。QUORUM可以使用公式(n/2 +1)计算,其中n是复制因子。

ONE:如果一个副本响应即刻。

LOCAL_ONE:本地数据中心至少有一个副本响应。

LOCAL_QUORUM:本地数据中心的副本仲裁响应。

ALL:写操作必须写入集群中的所有副本,读操作等待所有副本的响应。提供最低的可用性和最高的一致性。

1.2. 现有集群单数据中心配置修改

1.2.1. 现有数据中心配置是单数据中心,需要修改参数配置支持多数据中心,每个节点都需要更改

--endpoint_snitch默认配置为SimpleSnitch,不支持多数据中心,需要修改为GossipingPropertyFileSnitch

vi /etc/scylla/scylla.yaml
endpoint_snitch: GossipingPropertyFileSnitch


--根据实际配置数据中心名称和机架名称

vi /etc/scylla/cassandra-rackdc.properties
dc=my_data_center
rack=my_rack
prefer_local=true

1.2.2. 重启服务生效参数

每个节点轮流重启生效。

systemctl restart scylla-server

1.3. 集群新数据中心部署

新数据中心每个新节点进行Scylladb部署,参考文档。

https://www.Scylladb.com/download/?platform=ubuntu-18.04&version=scylla-4.2#open-source

1.4. 配置参数

配置文件默认位于/etc/scylla,新数据中心每个节点都要配置。

1.4.1. scylla.yaml

各参数和现有集群修改后一致。

seeds--该参数加入新数据中心新节点ip作为种子节点,保证后续下线节点时候,集群可用。

auto_bootstrap - 默认情况下,此参数设置为 true,它允许新节点自动将数据迁移到自己。

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

1.4.2. cassandra-rackdc.properties

设置集群新数据中心的dc和rack参数。

vi /etc/scylla/cassandra-rackdc.properties 

dc=my_data_center   --设置数据中心名称
rack=my_rack        --设置机架名称
prefer_local=true

1.5. 启动scylla服务

新数据中心添加所有新节点操作。

systemctl start scylla-server

1.6. 验证新数据中心是否加到集群中

nodetool  -h ::FFFF:127.0.0.1 status

1.7. 更改所有业务keyspace的复制策略

--查看所有的keyspaces
[root@172-16-121-151 ~]#  cqlsh 172.16.121.151
Connected to dtstack at 172.16.121.151:9042.
[cqlsh 5.0.1 | Cassandra 3.0.8 | CQL spec 3.3.1 | Native protocol v4]
Use HELP for help.
cqlsh> describe keyspaces;

案例:
更改前:
cqlsh> desc test;
CREATE KEYSPACE test WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'}  AND durable_writes = true;


更改为多中心多副本:
ALTER KEYSPACE test WITH replication = {'class':'NetworkTopologyStrategy', 'my_data_center' : '3', 'my_data_center1' : '3'}; 

更改后:
cqlsh> desc test;
CREATE KEYSPACE test WITH replication = {'class': 'NetworkTopologyStrategy', 'my_data_center': '3', 'my_data_center1': '3'}  AND durable_writes = true;

1.8. 新数据中心所有节点运行节点重建

在新数据中心的每个节点上运行nodeool rebuild,并在rebuild命令中指定现有的数据中心名称。确保刚刚添加到集群的新节点将识别集群中的现有数据中心。

nodetool -h ::FFFF:127.0.0.1  rebuild --my_data_center

1.9. 运行数据修复

在所有节点运行数据修复。

nodetool -h ::FFFF:127.0.0.1 repair -pr

1.10. 等待数据同步完成,业务选择时间切换连接集群新数据中心

2. 下线老数据中心

2.1. 在要下线的老数据中心所有节点运行数据修复

在要下线的老数据中心所有节点运行数据修复。

nodetool -h ::FFFF:127.0.0.1 repair -pr

2.2. 更改所有业务keyspace的复制策略不再写入老的数据中心

--查看所有的keyspaces
[root@172-16-121-151 ~]#  cqlsh 172.16.121.151
Connected to dtstack at 172.16.121.151:9042.
[cqlsh 5.0.1 | Cassandra 3.0.8 | CQL spec 3.3.1 | Native protocol v4]
Use HELP for help.
cqlsh> describe keyspaces;

案例:
更改前:
cqlsh> desc test;
CREATE KEYSPACE test WITH replication = {'class': 'NetworkTopologyStrategy', 'my_data_center': '3', 'my_data_center1': '3'}  AND durable_writes = true;


更改为新中心多副本:
ALTER KEYSPACE test WITH replication = {'class':'NetworkTopologyStrategy', 'my_data_center1' : '3'}; 

更改后:
cqlsh> desc test;
CREATE KEYSPACE test WITH replication = {'class': 'NetworkTopologyStrategy', 'my_data_center1': '3'}  AND durable_writes = true;

2.3. 删除节点

此步骤参考方案一的下线节点即可。

主要步骤:
nodetool -h ::FFFF:127.0.0.1 decommission

总结

云掣专注于可观测运维,致力解决企业上云难、用云难、管云难三大问题。作为企业级云服务提供商,云掣帮助企业更高效、更安全的使用云。全面提升企业的运维效率和稳定性,助力企业完成云时代的数字化转型,满足客户在数据库管理和云迁移方面的多样化需求!

想了解或咨询更多有关云掣产品、服务、客户案例的朋友,戳我进入云掣官网


相关文章

image.png

KVM网络配置

一、创建桥接网络1、创建桥接网卡br0(相当于vmnet1桥接器)cd /etc/sysconfig/network-scripts/cp ifcfg-ens33 ifcfg-br02、修改br0参数...

MySQL 8.0 新特性:Instant Add Column

MySQL 8.0 新特性:Instant Add Column

一、前言MySQL 8.0 支持 “快速加列” 功能,既添加字段时可以支持 “INSTANT” 快速完成。通过只修改数据字典的方法来实现大表快速加列,避免之前加列操作必须做的数据拷贝,从而大幅缩小大表...

通过Nodeport方式暴露集群

通过Nodeport方式暴露集群

一、原理图二、通过deployment部署双副本nginx,两个Pod[root@172-16-121-211 ~]# cat nginx-delpayment01.yml apiVersion: a...

借助cwRsync工具迁移

借助cwRsync工具迁移

服务端安装服务端软件如下,会自动在系统内创建一个系统用户,用户名为:xxx  ,密码为:xxx查看系统用户,会发现自动创建了如下用户:修改配置文件:rsyncd.confuse chroot = fa...

Flink部署

安装前准备1.1. 添加环境变量vi /etc/profile export FLINK_HOME=/opt/flinkexport PATH=$PATH:$FLINK_HOME/bin source...

Helm部署

Helm部署

1、helm介绍在没使用helm之前,向Kubernetes部署应用,需要依次部署deployment、svc等,步骤教繁琐,况且随着很多项目微服务化,复杂的应用在容器中部署以及管理显得较为复杂,he...

发表评论    

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