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 destory
replica 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 |
+------------+----------+--------------+-------------------------+-------------------------+

更详细的使用方式请参考:https://docs.cnosdb.com/docs/manage/replica_manage

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,589评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,615评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,933评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,976评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,999评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,775评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,474评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,359评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,854评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,007评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,146评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,826评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,484评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,029评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,153评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,420评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,107评论 2 356

推荐阅读更多精彩内容