- 关于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语法
集群升级
集群升级是指在现有集群的基础上,不需要导出数据的情况下,直接对数据库二进制及元数据进行升级到更高的版本。
PTK 定义了一套完整的升级流程,但是升级的过程还依赖于高版本数据库安装包中提供的 upgrade_sql 包,如果在执行升级SQL的过程中存在异常,仍需要手动处理。
MogDB版本升级支持表
目标版本 | ||||||||
---|---|---|---|---|---|---|---|---|
2.0.1 | 2.0.3 | 2.0.4 | 3.0.0 | 3.0.1 | 3.0.2及以上 | 5.0.x | ||
当前版本 | 2.0.0 | ✓ | ✓ | ✓ | ✗ | ✗ | ✓ | ✗ |
2.0.1 | - | ✓ | ✓ | ✗ | ✗ | ✓ | ✗ | |
2.0.3 | - | - | ✓ | ✗ | ✗ | ✓ | ✗ | |
2.0.4 | - | - | - | ✗ | ✗ | ✓ | ✗ | |
3.0.x | - | - | - | - | ✓ | ✓ | ✓ | |
5.0.x | - | - | - | - | - | - | ✓ |
注 1:由于早期版本的原因,2.0.x 版本升级到 3.0.0/3.0.1 需先升级到 2.1,由于PTK不支持升级到 Preview 版本,所以不支持从 2.0.x 版本升级到 3.0.0/3.0.1
注意事项
- 如果集群部署 CM 组件,需使用 PTK 1.5.0 或后续版本操作
- 如果当前集群安装了 compat-tools,为避免和高版本的 whale 插件冲突,需先评估将当前版本的 compat-tools 卸载
限制
- 不支持 2.0 以前的版本
- 不支持高版本向低版本升级
- 不支持升级到 Preview 版本(版本号第二位为1的为 Preview 版本,比如 3.1.0)
- 集群流复制参数需开启(enable_stream_replication)
- 升级前集群状态需为 Normal
整体升级
数据库集群升级包含两个阶段:
- 升级(升级失败后可回滚,可重复执行升级命令,支持断点续传)
- 提交(第一步升级成功后,才能提交,提交后不可回滚)
在做数据库集群升级前,我们需要先通过一下命令来确认当前数据库集群是否有创建过插件:
ptk cluster -n <CLUSTER_NAME> list-plugins
执行后会输出两个表格,第一个表格代表安装过的插件列表,安装过并不意味着数据库里使用了。
第二个表格代表具体的每个数据库中创建过的插件,如果没有创建过任何插件,Extension(s) 字段会为空。
我们需要确认第二个表格中 Extension(s) 字段下是否有值,不同的情况升级的方式有些许差别。
未创建插件的集群升级
如果升级前的数据库内没有创建过任何插件,可以直接指定新版本的安装包进行升级:
ptk cluster -n <CLUSTER_NAME> upgrade [-y] -p <PACKAGE_PATH>
创建了插件的集群升级
如果数据库中使用了插件的话,由于升级后数据库元数据会发生改变,可能会导致升级后插件不可用或者升级失败。
所以对于使用了插件的集群,需额外指定以下参数来升级:
--plugin-dir
: 本地目录,该目录下存放提前下载的新版本插件包(!下载的插件包请勿变更文件名)--plugin-upgrade-patch
: 插件升级所需的 SQL 补丁包(目标版本为 MogDB 5.0.2或更新时,无需指定此参数)
ptk cluster -n <CLUSTER_NAME> upgrade [-y] -p <PACKAGE_PATH> --plugin-dir <PLUGIN_DIR>
执行上述命令后,PTK 会完成升级的完整操作,升级后集群已经以新版本运行,此时您可以在数据库上进行验证操作,如果发现问题可以通过 upgrade-rollback
命令进行回滚,PTK 会将集群回滚为旧版本的状态。
ptk cluster -n <cluster_name> upgrade-rollback
如果升级过程中存在报错中断,您可以通过人为介入来解决,当解决了问题后,可以通过重新执行升级指令继续完成升级
提交
提交升级,开启集群读写状态,删除旧版本的备份文件,提交后集群无法再回滚
ptk cluster -n <cluster_name> upgrade-commit
滚动升级
在 PTK 1.4.0 版本开始,支持了滚动升级的能力,但由于滚动升级过程中,始终是针对备库进行升级,不会直接升级主库,所以如果升级过程无法提交任何SQL,故滚动升级存在以下两个限制条件:
-
升级前后数据库的内核版本需保持一致,如果不一致则涉及需要执行升级SQL,所以暂无法实现;
内核版本可通过
ptk candidate db
输出的Number
列查看(需 1.4.0 以上版本) -
不存在需要升级的插件;
滚动升级流程
滚动升级操作步骤
以一主一备为例,假设初始状态时主库IP为 IP1
, 备库为 IP2
-
检查机器状态为 Normal
ptk cluster -n <集群名> status
-
升级集群中的备库
通过
-H
参数执行集群内一个备库进行单节点升级,该节点要能够临时切为主提供服务ptk cluster -n <集群名> upgrade -p <新版本安装包> -H <IP2>
-
进行主备倒换
将升级后的备库提升为主库,原主库降为备库
ptk cluster -n <集群名> switchover -H <IP2>
-
升级原来的主库
ptk cluster -n <集群名> upgrade -p <新版本安装包> -H <IP1>
-
(可选) 将主重新切换到原主机器
ptk cluster -n <集群名> switchover -H <IP1>
-
提交升级
ptk cluster -n <集群名> upgrade-commit