OB通过减少unit_num方式缩容时,是如何确定要下线的机器的?

看教程上面缩容的步骤,
直接修改unit_num之后,ob自动启动“rebalance”过程,将待下线机器上面的分区迁移到zone内其他机器上。
复制完成后,ob自动切换服务,并删除待下线机器上面的分区数据。
执行delete server删除机器,完成下线。
停止observer进程。

我不明白的是,ob是如何判断待下线的机器是哪一台呢?又或者这个步骤中漏掉了"alter system stop server"这样的操作?还有就是ob又如何确定分区该迁往哪个(些)server的?

可以参考下下面文档,该举例架构为2-2-2,减少unit_num缩容至1-1-1。同一个zone内一个 Unit 只能分布在一台observer上,即减少多少unit就是需要下线多少 observer。之后需执行命令,从集群中删除各 Zone 中的 1台 OBServer,架构变为1-1-1.
这边建议缩容在ocp上操作,尽量避免黑屏操作。
https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000357847

ob判断待下线可以通过集群的状态管理和心跳机制。
可参考下OceanBase 数据库-OceanBase文档中心
OceanBase分布式数据库-海量数据 笔笔算数