- 关于PTK
- 快速入门
- 使用指南
- 使用参考
- 配置文件示例
- 命令介绍
- ptk
- ptk completion
- ptk view-static-config
- 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 createdb
- ptk cluster uninstall-compat-tools
- ptk cluster install-compat-tools
- ptk cluster install-mogila
- 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
- 故障排查
- FAQ
- 发布记录
- 社区
- 附录:YAML语法
集群扩容
通过一系列操作,在原有集群上,增加数据库节点。
目的
出于业务,成本,资源分配,风险等因素的考虑,满足用户对集群进行扩容处理。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
的作用则是跳过该检查。
何时使用:
- PTK 对同构系统判断不全面导致的误判。
- 即时是异构系统,但是使用的 MogDB 包一致,可使用该选项跳过校验,但 PTK 不保证扩容成功后数据库节点的可用性和正确性。
--not-limite-cm-nodes 有什么用?何时应该使用它?
作用:PTK 在扩容时,若带CM集群扩容后,CM 节点数量大于3时,会强制校验 CM 节点数量为奇数,目的是防止 CM 集群脑裂而引起的选主问题。使用该参数则可以避免对 CM 节点数量为奇数的强制校验。 何时使用:不建议使用该参数。若一定要使用,需自行承担CM集群脑裂引起的选主问题,从而引起 CM 组件失效的问题。
若当前集群有 CM 组件,且安装了 VIP,扩容后会有影响吗?
无影响。PTK 针对已经安装了 VIP 的集群,在扩容后会重新刷新 CM-VIP,以保证 CM-VIP 的基本信息正确。