写点什么

CnosDB 2.4.2:从 vnode 到 replicas 的演变

作者:CnosDB
  • 2024-11-24
    北京
  • 本文字数:2443 字

    阅读完需:约 8 分钟

CnosDB 2.4.2:从 vnode 到 replicas 的演变

概述

在 CnosDB 的早期版本中,副本的管理是基于 vnode(虚拟节点)机制。vnode 的设计使得每个虚拟节点可以独立存储数据分片,多个 vnode 组合成一个副本集。这种方式虽然在一定程度上提升了系统的可用性,但缺乏明确的主从关系,导致在数据一致性和故障恢复方面存在一定的挑战。

从 vnode 到 replicas 的转变

1. 主从概念的引入

随着 CnosDB 的发展,用户对数据一致性和高可用性的需求不断提升。引入主从副本后,副本之间的关系变得更加明确。每个副本都有一个主节点和多个从节点,主节点负责数据的写入和更新,从节点负责数据的读取和备份。这一结构不仅提高了数据的一致性,还简化了故障恢复过程。

2. 简化管理

在采用 replicas 管理副本后,用户可以更方便地进行副本的管理。通过简单的命令,用户能够轻松地迁移、删除和查看副本状态,而无需考虑 vnode 的复杂性。这样,运维人员可以将更多精力集中在运维层面,而不是底层的管理细节。

3. 性能提升

新的副本管理机制还带来了性能上的优化。由于主从关系的明确,CnosDB 能够更高效地进行数据同步和负载均衡,减少了数据迁移的时间和资源消耗,从而提升了整体的响应速度和吞吐量。

如何进行副本管理

在 CnosDB 2.4.2 中,用户可以通过以下步骤进行副本管理:

1. 查看副本状态

用户可以通过查询命令查看副本相关信息,以确保数据的健康性和可用性:


SHOW REPLICAS;
复制代码


以上命令将返回如下内容:


+------------+----------+--------------+-------------------------+-------------------------+| replica_id | location | database     | start_time              | end_time                |+------------+----------+--------------+-------------------------+-------------------------+| 2          | 1001*    | usage_schema | 2023-12-19 00:00:00 UTC | 2024-12-18 00:00:00 UTC || 5          | 1001*    | my_db        | 2022-11-02 23:00:00 UTC | 2022-11-03 07:20:00 UTC |+------------+----------+--------------+-------------------------+-------------------------+
复制代码

2. 增加副本

用户可以使用简单的命令给复制组增加一个副本,例如:


REPLICAS ADD replica_id 5 node_id 2001;
复制代码


执行完后将在2001节点上新增一个副本,如下:


+------------+------------+--------------+-------------------------+-------------------------+| replica_id | location   | database     | start_time              | end_time                |+------------+------------+--------------+-------------------------+-------------------------+| 2          | 1001*      | usage_schema | 2023-12-19 00:00:00 UTC | 2024-12-18 00:00:00 UTC || 5          | 1001*,2001 | my_db        | 2022-11-02 23:00:00 UTC | 2022-11-03 07:20:00 UTC |+------------+------------+--------------+-------------------------+-------------------------+
复制代码


备注:标识符 * 表示其为副本的主节点

3. 提升节点为主

如果想改变副本的角色,比如将一个 Follower 变更为 Leader,可以通过 replica promote 进行。replica promote 提升一个从节点为主节点,这在更换机器等运维过程中可能会用到,如下所示:


my_db ❯ replica promote replica_id 5 node_id 2001;Query took 0.854 seconds.
my_db ❯ show replicas;+------------+------------+--------------+-------------------------+-------------------------+| replica_id | location | database | start_time | end_time |+------------+------------+--------------+-------------------------+-------------------------+| 2 | 1001* | usage_schema | 2023-12-19 00:00:00 UTC | 2024-12-18 00:00:00 UTC || 5 | 1001,2001* | my_db | 2022-11-02 23:00:00 UTC | 2022-11-03 07:20:00 UTC |+------------+------------+--------------+-------------------------+-------------------------+Query took 0.010 seconds.
复制代码


提升复制组 5 在 2001 节点为主节点;主节点变成 2001,1001 降为从节点

4. 删除副本

如果需要删除某个副本,可以使用:replica remove


my_db ❯ replica remove replica_id 5 node_id 2001;Query took 0.036 seconds.
my_db ❯ show replicas;+------------+----------+--------------+-------------------------+-------------------------+| replica_id | location | database | start_time | end_time |+------------+----------+--------------+-------------------------+-------------------------+| 2 | 1001* | usage_schema | 2023-12-19 00:00:00 UTC | 2024-12-18 00:00:00 UTC || 5 | 1001* | my_db | 2022-11-02 23:00:00 UTC | 2022-11-03 07:20:00 UTC |+------------+----------+--------------+-------------------------+-------------------------+Query took 0.011 seconds.
复制代码


如果只有一个副本不允许删除,可以通过下面的销毁复制组达到删除目的

5.销毁复制组

销毁整个复制组可以通过命令:replica destoryreplica destory 销毁整个复制组,如下所示:


my_db ❯ replica destory replica_id 5;Query took 0.027 seconds.
my_db ❯ show replicas;+------------+----------+--------------+-------------------------+-------------------------+| replica_id | location | database | start_time | end_time |+------------+----------+--------------+-------------------------+-------------------------+| 2 | 1001* | usage_schema | 2023-12-19 00:00:00 UTC | 2024-12-18 00:00:00 UTC |+------------+----------+--------------+-------------------------+-------------------------+
复制代码


发布于: 2024-11-24阅读数: 3
用户头像

CnosDB

关注

还未添加个人签名 2022-04-18 加入

打造高性能、高压缩比、高可用的分布式云原生时间序列数据库,引领世界迈向万物智联 欢迎关注 https://www.cnosdb.com

评论

发布
暂无评论
CnosDB 2.4.2:从 vnode 到 replicas 的演变_大数据_CnosDB_InfoQ写作社区