文档中心MogDBMogDB StackUqbar
v2.0

文档:v2.0

支持的版本:

其他版本:

集群扩容

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

目的

出于业务,成本,资源分配,风险等因素的考虑,满足用户对集群进行扩容处理。PTK 为用户提供一键扩容。

扩容逻辑

PTK 在扩容时,会将主节点上的应用目录和工具目录等静态文件进行打包,复制到目标机器上后,解压到对应目录下。 然后使用内核工具初始化一个新的数据目录出来,最后将集群的配置按照新集群的拓扑整体刷新。

注意,扩容时采用的是逐个节点扩容的模式,当扩容至某个节点失败时,立即停止继续扩容,按照已完成的集群进行刷新配置。

扩容流程演示

创建扩容需要的配置文件

使用如下命令创建一个扩容的配置文件

ptk template scale-out > scale-out.yaml

此时已创建一个扩容的配置文件 scale-out.yaml,请按需修改该配置文件。

下面对扩容模板内容进行一下介绍:

# 新增的数据库服务器列表,支持的字段和安装时相同
db_servers:
  - host: "replace host ip here"
    # 角色仅支持 "standby" (默认) 或者 "cascade_standby"
    role: standby
    upstream_host: ""
    ssh_option:
      port: 22
      user: root
      password: "encrypted ssh password by ptk"

# CM 组件服务器列表
# 如果扩容前的集群安装了 CM 组件,则需要指定扩容的CM服务器列表,
# 一般情况下 CM 服务器的列表和数据库的相同即可
# 但如果在新的服务器上仅扩容数据库或者仅扩容CM组件,两个列表内的机器列表可以不一致
cm_servers:
  - host: "replace host ip here"

对集群进行扩容操作

执行扩容命令:

ptk cluster -n <CLUSTER_NAME> scale-out -c CONFIG.yaml [--build-from BUILD_FROM_HOST] [--skip-create-user] [--skip-check-os] [--skip-check-distro] [--default-guc] [--skip-rollback] [--skip-gen-ptkc] [--cpu CPU_MODEL] [--not-limit-cm-nodes]

参数说明:

参数名称 参数类型 参数说明
-c String 指定扩容时的配置文件
--build-from String 指定扩容时的 cascade_standby 节点进行 build 的数据来源节点,未指定时默认从主库进行 build
--skip-create-user Bool 对扩容的节点跳过创建用户
--skip-check-os Bool 对扩容的节点跳过 OS 相关检查
--skip-check-distro Bool 对扩容的节点跳过 distro 检查
--default-guc Bool 对扩容的节点使用数据库默认参数配置
--skip-rollback Bool 扩容时若报错,跳过回滚
--skip-gen-ptkc Bool 对扩容节点跳过传送 ptkc 的步骤
--cpu String 指定扩容节点的 CPU Model
--not-limite-cm-nodes Bool 不限制 CM 节点的数量,默认 CM 节点数大于3个时,必须为奇数

扩容支持列表

原集群情况 扩容条件 支持情况 解决方案
db1,db2 db3 支持
db1+cm1,db2+cm2,db3+cm3 db4+cm4 支持
db1+cm1,db2+cm2,db3+cm3 db4 支持
db1+cm1,db2+cm2,db3+cm3 cm4 支持
db1+cm1,db2+cm2,db3 cm3 不支持 缩容 db3, 扩容 db3+cm3
db1+cm1,db2+cm2,cm3 db3 不支持 缩容 cm3, 扩容 db3+cm3

QA

集群可以缩容吗?

可以。参考缩容文档

扩容最高上限是什么?

最多可至9个节点。

扩容时角色可以为primary吗?

不可以

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

可以。详细支持细节可以参考扩容支持列表

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

作用:PTK 在扩容时,会逐节点进行扩容。若某个节点执行扩容操作时失败,则会在该节点上回滚已经执行过的操作。--skip-rollback 的作用则是某节点扩容失败时,不回滚已经执行过的操作。 何时使用:用户想至目标节点上查看扩容失败原因时可使用该选项。

--skip-check-distro 有什么用?何时应该使用它?

作用:PTK 在扩容时,默认会检查待扩容的节点与主库的操作系统是否为同构操作系统。若不一致,则校验失败。--skip-check-distro 的作用则是跳过该检查。 何时使用

  1. PTK 对同构系统判断不全面导致的误判。
  2. 即时是异构系统,但是使用的 MogDB 包一致,可使用该选项跳过校验,但 PTK 不保证扩容成功后数据库节点的可用性和正确性。

--not-limite-cm-nodes 有什么用?何时应该使用它?

作用:PTK 在扩容时,若带CM集群扩容后,CM 节点数量大于3时,会强制校验 CM 节点数量为奇数,目的是防止 CM 集群脑裂而引起的选主问题。使用该参数则可以避免对 CM 节点数量为奇数的强制校验。 何时使用:不建议使用该参数。若一定要使用,需自行承担CM集群脑裂引起的选主问题,从而引起 CM 组件失效的问题。

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

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

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