这篇是速记,基于TDengine 2.6版,详情建议看官方文档:数据节点管理
TDengine集群版通过虚拟节点(vgroup)实现database的负载均衡和水平扩展,每个物理节点(dnode)可以包含多个vgroup。每个database由多个table组成,这些table根据创建顺序被分布到不同的vgroup。
database1
vgroup1
table1
table2
...
table10
vgroup2
table11
...
table20
table分布到不同vgroup的规则是由taos.cfg
里的minTablesPerVnode
参数和tableIncStepPerVnode
参数控制的,每当database里当前vnode的table数量超过minTablesPerVnode
时就会创建一个新的vgroup。这两个参数的默认值很大,如果database里table的数量不多,建议手工配置减小参数值,否则可能所有数据都分配到同一个物理节点产生数据倾斜。
注意:这两个参数修改后需要重启taosd服务,已经创建好的database需要删除重建才会生效。
[root@taos-1 ~]# tail /etc/taos/taos.cfg
...
minTablesPerVnode 10
tableIncStepPerVnode 10
注意:在tdengine 3.0里minTablesPerVnode和tableIncStepPerVnode这两个参数已经被移除。
TDengine允许指定vgroup的副本数,每个副本是一个vnode
。如果vgroup的副本数大于1,则此vgroup里会包含多个vnode,不同的vnode会被分配到不同的物理节点上。
可以在taos命令行里查看vgroups的情况。如下面的命令可以看到,集群包含3个物理节点,数据库里共有80个表,每10个表共用一个vgroup,这些vgroup比较均匀的分布到3个物理节点上。
[root@taos-1 ~]# taos
taos> use database1;
taos> show dnodes;
id | end_point | vnodes | cores | status | role | create_time | offline reason |
======================================================================================================================================
1 | taos-1:6030 | 61 | 8 | ready | any | 2022-04-03 17:58:10.049 | |
2 | taos-2:6030 | 61 | 8 | ready | any | 2022-04-03 17:58:15.756 | |
3 | taos-3:6030 | 62 | 8 | ready | any | 2022-02-03 17:58:16.287 | |
Query OK, 3 row(s) in set (0.008325s)
taos> show vgroups;
vgId | tables | status | onlines | v1_dnode | v1_status | compacting |
==========================================================================================
536 | 10 | ready | 1 | 3 | leader | 0 |
537 | 10 | ready | 1 | 2 | leader | 0 |
538 | 10 | ready | 1 | 1 | leader | 0 |
539 | 10 | ready | 1 | 3 | leader | 0 |
540 | 10 | ready | 1 | 2 | leader | 0 |
541 | 10 | ready | 1 | 1 | leader | 0 |
542 | 10 | ready | 1 | 3 | leader | 0 |
543 | 10 | ready | 1 | 2 | leader | 0 |
Query OK, 8 row(s) in set (0.005023s)
欢迎转载
请保留原始链接:https://bjzhanghao.com/p/2441
请保留原始链接:https://bjzhanghao.com/p/2441