文档中心MogDBMogDB StackUqbar
v1.1

文档:v1.1

支持的版本:

其他版本:

集群升级

集群升级是指在现有集群的基础上,不需要导出数据的情况下,直接对数据库二进制及元数据进行升级到更高的版本。

PTK 定义了一套完整的升级流程,但是升级的过程还依赖于高版本数据库安装包中提供的 upgrade_sql 包,如果在执行升级SQL的过程中存在异常,仍需要手动处理。

MogDB版本升级支持表

目标版本
2.0.12.0.32.0.43.0.03.0.13.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

注意事项

  1. 如果集群部署 CM 组件,需使用 PTK 1.5.0 或后续版本操作
  2. 如果当前集群安装了 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,故滚动升级存在以下两个限制条件:

  1. 升级前后数据库的内核版本需保持一致,如果不一致则涉及需要执行升级SQL,所以暂无法实现;

    内核版本可通过 ptk candidate db 输出的 Number 列查看(需 1.4.0 以上版本)

  2. 不存在需要升级的插件;

滚动升级流程

ptk滚动升级

滚动升级操作步骤

以一主一备为例,假设初始状态时主库IP为 IP1, 备库为 IP2

  1. 检查机器状态为 Normal

    ptk cluster -n <集群名> status
  2. 升级集群中的备库

    通过 -H 参数执行集群内一个备库进行单节点升级,该节点要能够临时切为主提供服务

    ptk cluster -n <集群名> upgrade -p <新版本安装包> -H <IP2>
  3. 进行主备倒换

    将升级后的备库提升为主库,原主库降为备库

    ptk cluster -n <集群名> switchover -H <IP2>
  4. 升级原来的主库

    ptk cluster -n <集群名> upgrade -p <新版本安装包> -H <IP1>
  5. (可选) 将主重新切换到原主机器

    ptk cluster -n <集群名> switchover -H <IP1>
  6. 提交升级

    ptk cluster -n <集群名> upgrade-commit
Copyright © 2011-2024 www.enmotech.com All rights reserved.