文档中心MogDBMogDB StackUqbar
v2.0

文档:v2.0

支持的版本:

其他版本:

集群缩容

通过一系列操作,在原有集群上,减少数据库节点。

目的

出于业务,成本,资源分配,风险等因素的考虑,满足用户对集群水平缩容的需求,PTK 为用户提供了一键缩容的功能。

缩容命令

ptk cluster -n <CLUSTER_NAME> scale-in [-H|--host HOST] [-i|--id ID] [--skip-clear-user] [--skip-clear-db] [--force]

缩容前后的拓扑样例

一主N备M级联

假设原集群拓扑结构为:

         standby1 -- cascade_standby1, cascade_standby2
        /
primary
        \
         standby2 -- cascade_standby3

使用缩容命令删除 standy2 后,结构变更为:

         standby1 -- cascade_standby1, cascade_standby2
        /         \
primary            \
                    \
         standby2    cascade_standby3

说明:此时 standby2 不在集群中,同时原 standby2 下游节点的 upstream 变更为 standby1

PTK 逻辑:若缩容目标节点角色为 standby,若该节点有下游节点且还有其他 standby 节点,则会将缩容节点的所有下游节点 upstream 指向其余的 standby 节点。

一主一备一级联

假设原集群拓扑结构为:

primary -- standby -- cascade_standby

使用缩容命令删除 standy 后,结构变更为:

primary  standby  cascade_standby

说明:此时3个节点直接没有任何关联,均独立。

QA

集群可以扩容吗?

可以。参考扩容文档

一直执行缩容,可以将集群缩为空吗?

不可以。缩容之后,集群最少会有一个可用的数据节点。

若想得到一个空集群,可参考创建一个空集群,或参考抛弃节点

缩容能直接缩主节点吗?

不可以。缩容后至少会有一个节点存活,该节点为主节点。

若想缩主节点所在的服务器节点,该如何处理?

可考虑使用如下步骤完成:

  1. 使用 switchover 命令切换主备。
  2. 缩容原主节点所在的节点(现备所在的节点)

对于带 CM 组件的集群,可以缩容吗?若可以,有限制吗?

可以。

限制:缩容后的集群数据库节点至少为2个节点。CM 节点至少为2个节点,因为 CM 的仲裁机制需至少保证2节点。

补充:带 CM 组件的集群缩容时,对即将缩容的目标节点,会缩容该节点上的数据库节点和 CM 节点。

--skip-clear-db 有什么用?何时应该使用它?

作用:PTK 在对目标节点缩容时,默认会杀掉该节点上的数据库进程,并清除 DB 的相关文件,重新对剩余节点重写 postgresql.conf 文件中的复制流信息。而 --skip-clear-db 的作用则是跳过清除 DB 相关文件这一步操作。

何时使用:想保留数据节点的信息时使用。

--skip-clear-user 有什么用?何时应该使用它?

作用:PTK 在对目标节点缩容时,一般情况下会删除掉该节点下的数据库用户。

何时使用:不想删除目标节点的数据库用户时使用。

--force 有什么用?何时应该使用它?

作用:可能存在的情况是待缩容节点由于特殊原因无法正常链接,在执行缩容流程时进行的一些检查不能通过,导致不能缩容就抛出错误。--force 的作用则是跳过这些检查。

何时使用:在某些节点链接不上时继续执行缩容任务。

若当前集群有 CM 组件,且安装了 VIP,缩容后会有影响吗?

无影响。PTK 针对已经安装了 VIP 的集群,在缩容后会重新刷新 CM-VIP,以保证 CM-VIP 的基本信息正确。

Copyright © 2011-2024 www.enmotech.com All rights reserved.