v1.1
- 关于PTK
- 快速上手
- 安装PTK
- 使用手册
- 配置文件字段说明
- 配置文件示例
- 命令介绍- ptk
- ptk completion
- ptk register
- ptk init-cluster
- ptk collect
- ptk rec-guc
- ptk cache
- ptk gen-ptkc
- ptk manage
- ptk demo
- ptk meta
- ptk version
- ptk self
- ptk gen-om-xml
- ptk env
- ptk gen-static-config
- ptk cluster- ptk cluster rename
- ptk cluster throwout
- ptk cluster takeover
- ptk cluster uninstall-cm
- ptk cluster install-cm
- ptk cluster gen-cert-files
- ptk cluster load-cm-vip
- ptk cluster del-kerberos-auth
- ptk cluster add-kerberos-auth
- ptk cluster uninstall-kerberos-server
- ptk cluster install-kerberos-server
- ptk cluster is-in-upgrade
- ptk cluster upgrade-rollback
- ptk cluster upgrade-commit
- ptk cluster upgrade
- ptk cluster demote
- ptk cluster promote
- ptk cluster refresh
- ptk cluster shell
- ptk cluster modify-comment
- ptk cluster show-config
- ptk cluster set-guc
- ptk cluster show-guc
- ptk cluster set-hba
- ptk cluster show-hba
- ptk cluster scale-out
- ptk cluster scale-in
- ptk cluster uninstall-mogha
- ptk cluster install-mogha
- ptk cluster list-plugins
- ptk cluster install-plugin
- ptk cluster inspect
- ptk cluster failover
- ptk cluster switchover
- ptk cluster build
- ptk cluster status
- ptk cluster restart
- ptk cluster stop
- ptk cluster start
 
- ptk uninstall
- ptk ls
- ptk install
- ptk exec
- ptk template
- ptk encrypt
- ptk checkos
- ptk download
- ptk candidate
 
- 故障排查
- 常见问题
- 发布记录
- GPTK - 图形化部署工具
- 社区
- 附录:YAML语法
数据库扩缩容
什么是扩缩容?
扩缩容是指在某个已存在的数据库集群上,对集群进行增加数据库节点或减少数据库节点的操作,以满足不同的业务需求场景
术语:
- 扩容:指通过一系列操作,在原有集群上,增加数据库节点。
- 缩容:指通过一系列操作,在原有集群上,减少数据库节点。
前提
本文假设你已有一个 MogDB 数据库集群,可以是单机或多节点。且集群名为 CLUSTER_NAME
扩容时,请确保数据库版本,配置和系统环境一致,避免出现不兼容问题
数据库集群安装请参考: 安装数据库
扩容
扩容参数
# ptk cluster scale-out -h
对一个MogDB集群进行扩容
Usage:
  ptk cluster scale-out [flags]
Examples:
ptk cluster -n <cluster_name> scale-out -c scale-out.yaml
Flags:
  -y, --assumeyes           自动对所有提问回复Yes
  -c, --config string       扩缩容配置文件路径
      --cpu string          指定CPU型号名
                            可通过 'ptk candidate cpu' 来查看支持的CPU型号名列表
      --default-guc         不自动优化 GUC 参数,使用数据库默认参数
  -h, --help                help for scale-out
      --skip-check-distro   跳过检查系统发行版
      --skip-check-os       跳过系统检查
      --skip-create-user    跳过创建用户
      --skip-rollback       安装失败时跳过回滚操作扩容原理
ptk 在扩容时,会在当前集群内随机选择一个节点,将节点上的应用目录和工具目录等静态文件进行打包,复制到目标机器上后,解压到对应目录下。 然后使用内核工具初始化一个新的数据目录出来,最后将集群的配置按照新集群的拓扑整体刷新。
注意,扩容时采用的是逐个节点扩容的模式,当扩容至某个节点失败时,立即停止继续扩容,按照已完成的集群进行刷新配置。
创建扩容的配置文件
ptk 的 template 子命令中包含 scale-out 的子命令,可以生成一个基础的扩容模板配置文件
ptk template scale-out > scale-out.yaml此时已创建一个扩容的配置文件 scale-out.yaml,请按需修改该配置文件。
下面对扩容模板内容进行一下介绍:
# 新增的数据库服务器列表,支持的字段和安装时相同
db_servers:
  - host: "replace host ip here"
    # 角色仅支持 "standby" (默认) 或者 "cascade_standby"
    role: standby
    ssh_option:
      port: 22
      user: root
      password: "encrypted ssh password by ptk"
# CM 组件服务器列表
# 如果扩容前的集群安装了CM组件,则需要指定扩容后的CM服务器列表,
# 一般情况下 CM 服务器的列表和数据库的相同即可
# 但如果在新的服务器上仅扩容数据库或者仅扩容CM组件,两个列表内的机器列表可以不一致
cm_servers:
  - host: "replace host ip here"扩容支持情况表
| 原集群情况 | 扩容条件 | 支持情况 | 解决方案 | 
|---|---|---|---|
| db1,db2 | db3 | 支持 | |
| db1,db2 | cm1,cm2 | 不支持 | 卸载集群指定 --install-cm 参数重新装 | 
| 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 | 
扩容指令
ptk cluster -n CLUSTER_NAME scale-out -c scale-out.yaml 扩容演示
缩容
查看帮助
# ptk cluster scale-in -h
对一个MogDB集群进行缩容
Usage:
  ptk cluster scale-in [flags]
Examples:
ptk cluster -n <cluster_name> scale-in -H <IP1> -H <IP2>
Flags:
  -y, --assumeyes          自动对所有提问回复Yes
      --force              如果无法通过ssh连接目标主机,强制从集群升级节点的配置中删除目标实例
  -h, --help               help for scale-in
  -H, --host stringArray   要删除的目标IP
      --skip-clear-db      不清除目标数据库的目录
      --skip-clear-user    不删除目标数据库的系统用户缩容指令
ptk cluster -n CLUSTER_NAME scale-in -H IP1 -H IP2会将IP为 IP1 和 IP2 的数据库节点从集群中移除。
缩容的部分说明:
- 关于一主多备多级联的缩容
假设集群拓扑结构为
         standby1 —— cascade_standby1
       /
primary 
       \
         standby2 —— cascade_standby2缩容删除standby1时,最终拓扑结构变为
         standby1   cascade_standby1
                  /
primary          /
       \        /
         standby2 —— cascade_standby2此时standby1不在集群中,而是独立出来,与原集群没有任何关联。
也就是说,如果被删除的是备库,且该备备库下有级联节点,且除了被删的备库之外,还有其他备库。会为其下的级联备库随机选一个未被删除的备库连接。
- 关于一主一备一级联的缩容
假设集群拓扑结构为
primary —— standby1 —— cascade_standby1缩容删除standby1时,最终拓扑结构变为
primary    standby1    cascade_standby1    此时3个节点直接没有任何关联,均独立。
缩容支持情况表
注意:缩容仅支持按照 IP 的节点级别整体摘除
| 原集群情况 | 缩容条件 | 支持情况 | 解决方案 | 
|---|---|---|---|
| db1,db2,db3 | db3 | 支持 | |
| db1+cm1,db2+cm2,db3+cm3 | db3+cm3(同一个IP) | 支持 | |
| db1+cm1,db2+cm2,db3+cm3 | db3 | 不支持 | 缩容 db3+cm3,扩 cm3 | 
| db1+cm1,db2+cm2,db3+cm3 | cm3 | 不支持 | 缩容 db3+cm3,扩 db3 | 
| db1+cm1,db2+cm2,db3 | db3 | 支持 | |
| db1+cm1,db2+cm2,cm3 | cm3 | 支持 |