关于租户缩容的疑问

看官方文档,租户缩容通过调小 Unit Number来实现。现在想请教一下,如果我的一个备份里面有5个节点,对应5个unit number,我缩容的时候将unit number调整为4就减少一个节点。我现在的问题是这个缩容是随机针对备份里面的节点进行缩容的吗?我可以针对某个具体的几点进行缩容吗?比如备份里面的节点编号为1、2、3、4、5,我想将编号为4的节点进行缩容,然后将编号为4的节点从集群里面删除。

可以通过指定unit_group来做到。OceanBase分布式数据库-海量数据 笔笔算数

我在OCP上创建unit,然后针对zone分配unit的时候没有让创建unit_group呀,我在OCP上怎么指定unit_group?

这个值我理解是个自分配的id,你可以查看内部表看看unit的unit_group id。
具体你可以看看这个介绍文档 OceanBase分布式数据库-海量数据 笔笔算数

这个我看过,看完还是不知道要如何操作。

ocp白屏应该不支持这样操作,你是想白屏操作吗

OCP上缩容节点是随机的。
如果需要针对某节点缩容,OCP上也能实现,删除对应observer操作,会自动将unit负载到其他节点,再设置unit_num=4即可。或者手动迁移unit到其他节点(关闭自动负载均衡),再删除observer节点,设置unit_num=4、

这样直接删除observer,如果其它节点上无法承载改observer对应的资源呢?我看官网上说会出现异常。

是的,正常来说节点的数据是按资源进行均衡的,如果你要缩容,缩容节点的unit会均衡到同zone的其他节点上,即使是异构资源的环境,也是按资源来分配数据量,如果其他节点不满足容量,会异常,如果磁盘资源比较紧张,可以看下unit大小均分过去是否满足,建议最终磁盘不超过90%,否则不满足缩容需求的。删observer 和 手动迁移 逻辑是一样的。

文档里提的 unit_number 并非你理解的这个,你这里说的是租户总共有多少个 Unit。文档里的 unit_number 是指租户在每个 Zone 里的 Unit 数量。
在说缩容之前,先说租户的创建和扩容过程。

生产环境最小部署一般是 三节点,集群拓扑:1-1-1 . 一般创建租户的时候也会选择 三个 zone,租户拓扑 也是 1-1-1 . OCP 在新建的时候为每个 zone 里都创建一个资源池(名字不一样)。此时如果集群节点或节点资源没有发生变化的情况下,租户扩容的手段就是扩大每个zone 的资源池的资源单元规格。可以分别扩容到不同规格,只不过生产环境一般不这么做(不标准,人为构造木桶短板)。
当集群增加节点,将拓扑扩容到 2-2-2 或 N-N-N(N>2) 时,租户又多了一新的选择,可以扩容至 M-M-M (1<=M<=N) 。同时资源规格也可以独立变化。这个 M 就是 unit_number 。每个资源池里的 unit_number 也可以不一样,只不过生产环境不这么做,理由同前。

反之,缩容的时候就降低 M 到 M’ ,也就是文档说的调小 unit_number 。缩容时需要考虑剩余的资源是否能承载已有的数据,主要是空间容量方面能否承载。CPU和内存只是影响缩容后的性能。

所以,如果你只是想缩容某个 Zone 里的 unit_number ,倒是可以的。但是,那个zone 里有多个 unit ,你想清理掉某个编号的 unit,OB 后面的版本也是可以的。语法里的 delete unit 就是起这个作用。参考: OceanBase分布式数据库-海量数据 笔笔算数

ALTER RESOURCE POOL pool_name
      UNIT [=] unit_name
    | UNIT_NUM [=] unit_num [DELETE UNIT = (unit_id_list)]
    | ZONE_LIST [=] ('zone_name' [, 'zone_name' ...]);

详细原理也可以参考: 揭秘OceanBase的弹性伸缩和负载均衡原理

租户的缩容是不能通过删除集群节点(observer)实现。那是集群的缩容。当集群的拓扑 是 N-N-N(N>1)的时候,集群才可以直接删除节点,因为 N 大于 1 .删除节点可以只删某个 Zone ,也可以三个 Zone都删除等量的节点。生产环境一般是后者,标准化。

集群删除节点之前要确保集群里租户能被剩下的节点所承载。直接的说 某个租户拓扑是 M-M-M ,集群如果缩容到 N’-N’-N’ 出现 N’< M 的情形,这个缩容从一开始就会报错。所以集群节点大规模缩容之前一般是先做租户缩容。

还有一种情形,如果集群拓扑已经是 1-1-1 ,还想删除节点,这个时候就不是直接删节点,而是要删除zone 了。但是 1-1-1 的情况不允许删除zone,一般是 1-1-1-1-1 要删除zone,这个也叫缩减 副本数。从 五副本降到 三副本。做这个之前也是先要缩减集群里的租户的副本数。这里面看似情形很复杂,实际上也很简单,只要记得:集群节点是承载租户资源的物理容器。 缩容之后要让所有租户可以“有处安家”。
详情可以参考: OceanBase 独立部署高级玩法三:副本数调整 (qq.com)