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

云掣YunChe2个月前技术文章201

方案二

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

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

总结

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

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


相关文章

K8s Pod无法访问SLB地址

K8s Pod无法访问SLB地址

一、问题现象客户反馈172.16.11.220 telnet 47.99.87.129 80 不通,另一台172.16.11.219可以通。二、排查思路172.16.11.220,172.16.11....

em升级&添加节点实践

em升级&添加节点实践

一、扩容前准备 1.格式化磁盘分区并挂载(1)设置gpt分区表          &nbs...

MySQL keepalived配置(一)

一、MySQL数据初始化1.1、创建ha元数据结构:create database myha;  use myha;CREATE TABLE `ha_conf` ( `id` int(11) NOT...

doris数据删除恢复

用户执行命令drop database/table/partition之后,再使用命令recover来恢复整个数据库/表/分区的所有数据。这种修复将会把FE上的数据库/表/分区的结构,从catalog...

离线部署Mysql 8.X

离线部署Mysql 8.X

安装包和环境准备将mysql-8.0.23-el7-x86_64.tar.gz安装包上传至服务器wget https://cdn.mysql.com/archives/mysql-8.0/mysql-...

win2016系统新增辅助网卡无法访问公网

win2016系统新增辅助网卡无法访问公网

问题现象:一台阿里云win2016系统服务器,在主网卡已绑定弹性公网ip之后,再新增了一块辅助网卡,无法访问公网。另外,使用NAT网关做了dnat到辅助网卡的映射。该台服务器网卡信息为:主网卡:172...

发表评论    

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