暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GoldenDB黑屏升级步骤

原创 韦 2025-11-28
441

黑屏升级操作步骤

1. 升级前准备

  1. 上传目标产品包
  • 用 root 或具有 sudo 权限的高权用户上传升级目标产品包到任一管理节点某个目录下(本文以上传 ZXCLOUD-GoldenDB-ALL-RHV6.1.03.09.zip 产品包到 /home/OneInstall 目录下为例),解压缩并进入升级目录:
  • cd /home/OnInstall
    unzip -q ZXCLOUD-GoldenDB-ALL-RHV6.1.03.09.zip -d ZXCLOUD-GoldenDB-ALL-RHV6.1.03.09
    cd ZXCLOUD-GoldenDB-ALL-RHV6.1.03.09/oneKeyInstallUpdate/upgrade
  • 注意:
    解压目录名必须是产品包去掉 “.zip” 后的名字。
  1. 停止运行中脚本
  • 如果没有部署相关脚本跳过此小节。
    • 巡检脚本
    • 在安装部署巡检脚本的总控目录下执行停止命令:
    • python onekey_diag.py --action stop --obj_module all
    • 告警脚本
    • 到每个管理节点下,在 insight 家目录下执行以下操作:
    • cd script_monitor/scripts/alarm;
      mv send_alarm.py send_alarm.py_bak;
      ps -ef|grep send_alarm.py|grep -v 'grep'|awk '{print $2}' | xargs kill
  • 处理未管理组件
  • 未管理组件是不会升级的且在环境检查阶段会被拦截。
  • 登录 insight 页面查看是否有未管理组件,判断是否仍需要这些组件。如果不需要保留未管理组件,请先在 insight 界面上删除未管理组件后再升级;如果需要保留未管理组件,请将组件加入集群后进行升级。
  • 如果不能删除这个组件,也不能加入集群,需要改配置项跳过此项检查:
  • upgrade/upgradeScript/check/check_item.ini 中 OMM 段下的 if_execute 值改为1
  • 注意:
    此项检查是校验元数据库中组件信息是否一致,跳过后将不再进行检查。
  1. 配置文件填写
  • 升级过程中总共需要使用两个配置文件。
  • 总体配置文件位置: upgrade/config/upgrade_custom.json 。
  • 具体配置文件位置: upgrade/upgradeScript/common/config/conf.ini 。具体配置文件推荐不作修改。
  • 本升级工具实现了自动编排升级流程,自动从 RDB 获取元数据、升级服务器的信息。目前仍有部分配置项需要人工确认并配置。
  • 以下是 upgrade_custom.json 中需配置的配置项。
  • 注意:
    如果 JSON 文件中缺少某些配置项,需要自行在 CONFIG 段内手动添加对应的配置项。

配置项

功能描述

UPGRADE_TOTAL_FLOW

负责规划整体的升级流程。默认全流程配置。推荐使用默认值。

UPGRADE_COMPONENT_FLOW

负责确定待升级的组件,默认所有组件全部升级。根据需要自定义升级组件。

common|cluster_id

负责确定待升级的集群 ID ,配置 -1 时升级全部集群。

sql|sql_upgrade_version

负责确定 SQL 升级路径。

db|switch_times

负责设置在线升级 DN 时的切换操作。

db|upgrade_in_order

负责设置离线升级 DN 或回退 DN 是否按照特定顺序执行。

omm|rdb_root_pwvalue

RDB root 账号连接密码,默认使用 super 用户及密码。

common|before_version

升级之前版本的完整产品包名称。

insight|insight_before_version

确认大数据组件升级前版本 Insight 组件基线包名字。

insight|insight_target_version

确认大数据组件升级目标版本 Insight 组件基线包名字。

common|parallel_num

负责设置批量脚本的并发数。

dbproxy|serial_update

负责确定集群内是否串行升级 CN,默认不串行。

common|version_integration

负责确定是否合并构建之后的版本,默认合并。

insight|zookeeper_target_version

确认 ZK 目标版本。

insight|backup_zookeeper_data

负责确定是否备份 ZK 数据。

InsightAgent|ia_https_port

负责设置 IA 端口号。

以下是对配置项的具体说明(点击配置项返回列表):

UPGRADE_TOTAL_FLOW

负责规划整体的升级流程。默认全流程配置。推荐使用默认值。

默认值

“UPLOAD”, “CHECK”, “BACKUP”, “UPGRADE”, “ROLLBACK”, “DELETE”

取值范围

“UPLOAD” :上传升级脚本和组件对应基线包到各组件家目录下。
“CHECK” :校验各组件下进程和文件是否满足升级条件。
“BACKUP” :备份各组件下文件或目录用于回退。
“UPGRADE” :停组件进程,替换文件或目录,修改文件内容。
“ROLLBACK” :将备份的目录还原回去
“DELETE” :删除上传的脚本和基线包以及备份目录或文件。

示例

UPGRADE_TOTAL_FLOW = “UPLOAD” 、 “CHECK” 、 “BACKUP” :执行升级命令将只会执行上传、检查、备份三个步骤;
UPGRADE_TOTAL_FLOW = “UPGRADE” :执行升级命令将会进行升级步骤;
UPGRADE_TOTAL_FLOW = “UPLOAD” 、 “CHECK” 、 “BACKUP” 、 “UPGRADE” :执行升级命令将只会执行上传、检查、备份和升级四个步骤;
UPGRADE_TOTAL_FLOW = “ROLLBACK” :升级失败后执行升级命令将执行版本回退操作;
UPGRADE_TOTAL_FLOW = “DELETE” :执行升级命令将清理升级使用的安装包、备份的文件(推荐:重复升级前建议执行此清理动作)。

备注

需要自定义流程、将步骤进行拆分时。修改 UPGRADE_TOTAL_FLOW 配置项后执行脚本。


注意:
执行 “UPLOAD”、“CHECK”、“BACKUP”、“UPGRADE” 四个步骤有顺序的依赖关系。
例如 “BACKUP” 步骤需要在 “UPLOAD”、“CHECK” 步骤执行完成之后执行。不能在前置步骤为进行的情况下单独配置执行 “BACKUP” 。

UPGRADE_COMPONENT_FLOW

负责确定待升级的组件,默认所有组件全部升级。根据需要自定义升级组件。

默认值

"INSIGHTAGENT", "INSIGHT", "RDB", "TOOLS", "MANAGER", "SYSGTM", "GTM", "DBPROXY", "DB", "LDS", "OMMAGENT", "SQL"

取值范围

"INSIGHTAGENT" :升级所有机器的 InsightAgent。
"ZXJDK" :升级/opt目录下的zxjdk。
"INSIGHT" :升级 insight 用户下的大数据组件和 insightserver。
"RDB" :升级元数据库,insight 用户下的内置 DN 组件。
"TOOLS" :升级 insight 同级目录下的 OnekeySwitch 目录,OnekeySwitch 是切换工具。
"MANAGER" :升级 manager 用户下的组件。
"SYSGTM" :升级未绑定租户的的系统级 GTM。
"GTM" :升级绑定了租户的系统级 GTM 和非系统级 GTM。 "DBPROXY" :升级 CN 组件。
"DB" :升级 DN 组件。
"LDS" :升级 LDS 组件。
"OMMAGENT" :升级所有组件下的 ommagent。
"SQL" :元数据库中的表结构变更、新增或删除库表。

示例

UPGRADE_COMPONENT_FLOW = "INSIGHTAGENT"、 "INSIGHT"、 "RDB" :执行升级命令将只会升级 InsightAgent、insightserver、元数据库和 insight 用户下的内置 DN 组件;
UPGRADE_COMPONENT_FLOW = "DB" :执行升级命令将只会升级 DN 组件;
UPGRADE_COMPONENT_FLOW = "OMMAGENT" :执行升级命令将只会升级所有组件下的 ommagent。

备注

  1. 在升级管理节点时涉及到的配置项为: "INSIGHTAGENT" 、 "INSIGHT" 、 "RDB" 、 "TOOLS" 、 "MANAGER" 、 "SYSGTM" 、 "SQL" 。
    2. 在升级租户时涉及到的配置项为: "GTM" 、 "DBPROXY" 、 "DB" 。
    3. LDS 组件在非容器化场景下在管理节点升级阶段升级,在容器化场景下跟随租户升级。
    4)配置项包含 "OMMAGENT" 时,在管理节点升级阶段升级 manager 用户和 insight 用户下的 ommagent,在租户升级阶段升级 DN、CN、LDS、GTM 组件下的 ommagent。

common|cluster_id

负责确定待升级的集群 ID。

默认值

“1”

取值说明

登录 Insight–租户管理,获取当前环境下的集群 ID 。支持多个配置,用英文逗号隔开。配置 “-1” 表示升级所有租户。

示例

若当前环境下存在集群 ID 为 1 和 2 的两个集群。
common|cluster_id = “1” :执行升级命令将只对 ID 为 1 的集群生效;
common|cluster_id = “1,2” :执行升级命令将对 ID 为 1 和集群 ID 为 2 的集群生效;
common|cluster_id = “-1” :执行升级命令将对所有集群生效。

sql|sql_upgrade_version

负责确定 SQL 升级路径。

默认值

““

取值说明

升级 SQL路径 咨询升级技术支持人员。

示例

sql|sql_upgrade_version = “61308_61309” :执行升级命令将以该升级路径下的脚本文件对 SQL 进行变更。

db|switch_times

负责设置在线升级DN时的切换操作。

默认值

“10:0”

取值说明

根据现场要求配置。离线升级不起作用。
第一位代表切换重试次数,需配置非 0 正整数;
第二位配置 0 代表不做回切,配置其他非 0 正整数代表回切。

示例

db|switch_times = “10:0” :升级 DN 时,切换 DN 超过 10 次将报错,并且不做回切;
db|switch_times = “15:1” :升级 DN 时,切换 DN 超过 15 次将报错,并且回切。

db|upgrade_in_order

负责设置离线升级 DN 或回退 DN 是否按照特定顺序。

默认值

“0”

取值范围

根据现场要求,离线升级或回退 DN 配置 “0” 或 “1”。

示例

db|upgrade_in_order = “0” :同时升级/回退所有 DN;
db|upgrade_in_order = “1” :按照停备 DN、停主 DN、升级/回退所有 DN、起主 DN、起备 DN 的顺序重启升级/回退 DN。

omm|rdb_root_pwvalue

RDB root 账号连接密码,默认使用 super 用户及密码。

默认值

“******”

取值说明

不做修改保持默认值时,默认使用 super 用户及密码。
SQL 执行存储过程需要使用 root 用户,若不配置,则需赋予 super 用户执行存储过程的权限。

示例

db|switch_times = “******” :使用 super 用户及密码;
db|switch_times = “123456” :使用 root 用户并且使用 123456 作为密码登录 RDB。

common|before_version

确认升级之前版本的完整产品包名称。

默认值

“ZXCLOUD-GoldenDB-ALL-RHV6.1.03.05.zip”

取值说明

根据本次升级任务使用的产品包具体名称填写。

示例

本次使用的产品包名称为 ZXCLOUD-GoldenDB-ALL-RHV6.1.03.09 时, common|before_version = “ZXCLOUD-GoldenDB-ALL-RHV6.1.03.09.zip” 。

insight|insight_before_version

确认升级前的大数据组件版本 insight 组件基线包名字。

默认值

“ZXCLOUD-GOLDENDB-INSIGHTV6.1.03.05.zip”

取值说明

根据当前环境使用的大数据组件版本填写。管理节点的 insight 用户家目录下 ~/pkg 目录下获取。

示例

本次环境使用的使用的大数据组件版本为 ZXCLOUD-GOLDENDB-INSIGHTV6.1.03.09 时, insight|insight_before_version = “ZXCLOUD-GOLDENDB-INSIGHTV6.1.03.09.zip” 。

insight|insight_target_version

确认大数据组件升级目标版本 insight 组件基线包名字。

默认值

“ZXCLOUD-GOLDENDB-INSIGHTV6.1.03.05.zip”

取值说明

根据升级产品包使用的大数据组件版本填写。从目标产品包一级目录下获取。

示例

本次将要升级到的大数据组件版本为 ZXCLOUD-GOLDENDB-INSIGHTV6.1.03.09 时, insight|insight_target_version = “ZXCLOUD-GOLDENDB-INSIGHTV6.1.03.09.zip” 。

common|parallel_num

负责设置批量脚本的并发数。

默认值

“40”

取值说明

范围为(0,100)。根据实际情况填写,当配置的 parallel_num 的值大于执行升级脚本主机 CPU 核数的 60% 时,并发数以 CPU 核数的 60% 为准

示例

common|parallel_num = “40” :本次批量脚本的并发数为主机 CPU 核数的40%。
common|parallel_num = “70” :本次批量脚本的并发数为主机 CPU 核数的60%。

dbproxy|serial_update

负责确定集群内是否串行升级 CN,默认不串行。

默认值

“0”

取值说明

租户全部升级时生效。根据现场要求,配置 “0” 或 “1”。

示例

dbproxy|serial_update = “0” :并行行升级 CN;
dbproxy|serial_update = “1” :拆分步骤串行升级 CN(集群里串行,集群间并行)。

common|version_integration

负责确定是否合并构建之后的版本,默认合并。

默认值

“1”

取值说明

根据现场要求,配置 “0” 或 “1”。
目标版本是61305或61212及其之后版本时生效。

示例

common|version_integration = “1” :合并构建之后版本。
common|version_integration = “0” :合并构建之前版本。

insight|zookeeper_target_version

确认 ZK 目标版本。

默认值

“3.4.14”

取值说明

根据现场要求,配置 “3.4.14” 或 “3.8.3”。

示例

产品包目标版本为 613.08 之前时, zookeeper_target_version = “3.4.14” 。
产品包目标版本为 613.08 之后时, zookeeper_target_version = “3.8.3” 。

insight|backup_zookeeper_data

负责确定是否备份 ZK 数据。

默认值

“false”

取值说明

根据现场要求,配置 “false” 或 “true”。跨 613.08 升级需要配置为 “true” 。

示例

ZK 的版本没有变化时, zookeeper_target_version = “false” 。
ZK 的版本变化时, zookeeper_target_version = “true” 。

InsightAgent|ia_https_port

负责设置 IA 端口号。

默认值

“8024”

取值说明

根据现场要求,配置 环境中可使用的端口号。
若新版本里 IA 增加了 httpsPort 配置项,升级后的 IA 会将配置文件中的 httpsPort 值修改为此值。
若升级前的版本里 IA 已支持 httpsPort ,则升级时不会修改原有的值。注意该值不要与 IA 配置文件中的其他端口冲突。

示例

InsightAgent|ia_https_port = “18800” :升级前 IA 无 httpsPort 配置,升级后 IA 的该配置值为 18800;升级前 IA 有 httpsPort 配置,升级后 IA 的该配置值仍为原值。

  1. 提前做环境检查

检查执行环境,确保当前环境能够满足升级任务的要求。

cd upgrade
python check_env.py $rdb_ip

注意:
rdb_ip 为当前主管理节点所在的 IP。

如果打屏日志出现 ERROR 关键字,表示环境检查异常,请到日志中查看具体错误信息。可以重复执行,直到没有 ERROR 关键字才表示环境检查正常。

  1. 备份任务说明

警告:
升级过程中不能有备份任务运行,需要提前使待升级租户的备份任务失效。登录运维页面,停止定时和实时备份任务。

2. 升级

需要自定义流程时, upgrade/config/upgrade_custom.json 文件中 UPGRADE_TOTAL_FLOW 配置项需要配置为: "UPLOAD" 、 "CHECK" 、 "BACKUP" 、 "UPGRADE" 。

在 upgrade 目录下以 root 用户或高权用户按照以下脚本执行顺序执行升级脚本(高权用户下执行命令要输入 sudo ),根据不同的场景,先后完成对管理节点和租户的升级。需要注意的是,必须先完成管理节点的升级之后才能升级租户。

  1. 升级管理节点:
  • python upgrade_control.py --upgrade_mode manager --execute_mode upgrade
  1. 升级租户后,重新开启 CN 采集开关:登录 insight 界面 -> 统计监控 -> 通用采集 -> 通用采集配置 -> 租户采集配置 -> 选择 CN 以及待升级租户。登录 insight 界面 -> 统计监控 -> 通用采集 -> 通用采集配置 -> 租户采集配置 -> 选择 CN 以及升级租户,将采集开关恢复为升级前状态。
  • 在主管理节点机器下执行接口访问:
    # curl -X POST -k https://(主IS的Ip):(主IS的port)/open_api/insight/sysCluster/statistic/upgrade/createAllNewTable
    # sh upgradeScript/sql/prepare/sys_cluster/61309_61310/insightUpdateSql.sh ./up_sys_cluster.log dbproxy SW5zaWdodEAyMDE5 192.168.122.11 8880 1,1024
  • 说明:
    路径中 61309_61310 需要修改为对应升级前低版本_对应升级后高版本(仅仅 T 版本升级,跨大版本升级开发中)
  • 参数说明:
    1. 执行日志,任意即可;
    2. 系统租户连接实例账号:固定值 dbproxy;
    3. 系统租户连接实例 dbproxy 用户的密码( base64 加密);
    4. 系统租户连接实例 IP ;
    5. 系统租户连接实例 PORT ;
    6. 当前环境的所有 cluster_id (包括系统租户,逗号分隔)。
  1. 升级用户前,需要关闭 CN 采集开关:登录 insight 界面 -> 统计监控 -> 通用采集 -> 通用采集配置 -> 租户采集配置 -> 选择 CN 以及待升级租户。将开启状态的采集开关进行记录,并关闭所有开启状态的采集开关。
  2. 升级租户:
    • 在线方式:
    • python upgrade_control.py --upgrade_mode tenancy --execute_mode upgrade --upgrade_status online
    • 离线方式:
    • python upgrade_control.py --upgrade_mode tenancy --execute_mode upgrade --upgrade_status offline
  • 升级租户后,重新开启 CN 采集开关:登录 insight 界面 -> 统计监控 -> 通用采集 -> 通用采集配置 -> 租户采集配置 -> 选择 CN 以及待升级租户。登录 insight 界面 -> 统计监控 -> 通用采集 -> 通用采集配置 -> 租户采集配置 -> 选择 CN 以及升级租户,将采集开关恢复为升级前状态。
  • 所有租户升级完成之后,传 insight 用户下 server.zip 包:
  • sh upgradeScript/upgrade_product_pkg/update_one_file.sh upgrade all

3. 回退

需要自定义流程时, upgrade/config/upgrade_custom.json 文件中 UPGRADE_TOTAL_FLOW 配置项需要包含 "ROLLBACK" 。

在按照2. 升级章节说明的顺序执行升级脚本时,如果 "UPGRADE" 步骤失败时,需要执行回退操作。 "UPLOAD" 、 "CHECK" 、 "BACKUP" 步骤失败时,不需要进行回退操作。

在 upgrade 目录下以 root 用户或高权用户按照以下脚本执行顺序执行回退脚本(高权用户下执行命令要输入 sudo ),根据不同的场景,先后完成对租户和管理节点的升级。需要注意的是,必须先完成租户的回退之后才能回退管理节点。

  1. 回退租户:
    • 在线方式:
    • python upgrade_control.py --upgrade_mode tenancy --execute_mode rollback --upgrade_status online
    • 离线方式
    • python upgrade_control.py --upgrade_mode tenancy --execute_mode rollback --upgrade_status offline
  • 回退管理节点:
  • python upgrade_control.py --upgrade_mode manager --execute_mode rollback
  • 如果存在系统租户,需要回退系统租户表结构( 61309 以前版本系统租户要求单分片,以后版本要求多分片。如果从低于 61309 版本并且有系统租户升到 61309 及以上版本的回退需要根据具体情况制定方案,目前该步骤仅仅支持 61309 及以后版本系统租户表变更升级后回退。):
  • sh upgradeScript/sql/back/sys_cluster/61309_61310/insightRollbackSql.sh ./back_sys_cluster.log dbproxy SW5zaWdodEAyMDE5 192.168.122.11 8880 1,1024
  • 参数说明:
    1. 执行日志,任意即可;
    2. 系统租户连接实例账号:固定值 dbproxy;
    3. 系统租户连接实例 dbproxy 用户的密码( base64 加密);
    4. 系统租户连接实例 IP;
    5. 系统租户连接实例 PORT;
    6. 当前环境的所有 cluster_id (包括系统租户,逗号分隔)。
  • 其他说明:
    路径中 61309_61310 需要修改为对应升级前低版本_对应升级后高版本(仅仅T版本升级,跨大版本升级开发中)
  • 回退 insight 用户下 server.zip 包:
  • sh upgradeScript/upgrade_product_pkg/update_one_file.sh rollback all

4. 清理

需要自定义流程时, upgrade/config/upgrade_custom.json 文件中 UPGRADE_TOTAL_FLOW 配置项需要包含 "DELETE" 。

注意:
1. 清理操作将删除节点上升级使用的安装包、备份的文件。 重复升级前建议执行此清理动作。
2. 请确保功能正常无需回退后再执行,清理完成后将无法回退。建议等系统正常运行一周左右再执行清理动作。

在 upgrade 目录下以 root 用户或高权用户执行清理脚本(高权用户下执行命令要输入 sudo )。

  • 清理管理节点:
  • python upgrade_control.py --upgrade_mode manager --execute_mode delete
  • 清理租户:
  • python upgrade_control.py --upgrade_mode tenancy --execute_mode delete

5. 集群配置还原

  1. 恢复升级前停止的脚本
  • 如果没有部署相关脚本跳过此小节。
    • 巡检脚本
    • 在安装部署巡检脚本的总控目录下执行启动命令:
    • python onekey_diag.py --action start --obj_module all
    • 告警脚本:
    • 到每个管理节点下,在 insight 家目录下执行以下操作:
    • cd script_monitor/scripts/alarm;
      mv send_alarm.py send_alarm.py_bak;
      ps -ef|grep send_alarm.py|grep -v 'grep'|awk '{print $2}' | xargs kill
  • 恢复备份任务
  • 登录运维页面,恢复定时和实时备份任务。
  • 闪回功能
  • 升级后租户闪回开关默认关闭,如需启用闪回功能,登陆 insight 页面 -> 租户管理 -> 实例信息 -> 配置信息 -> 表闪回:启用。
  • 参数模板
  • 升级参数模板功能说明:
  • 产品包中的默认参数模板会直接覆盖 goldendb_insight.insight_baseline_template_info 表里的默认参数模板。
  • 产品包中默认参数模板比表里自定义参数模板多的参数会同步新增到表里。如果参数相同,value不同,升级脚本不会更新value。
  • 注意:
    如果自定义参数模板存在废弃的参数,请人工删除。
  • MPP升级
  • 升级组件中默认不带 MPP,如果现场需要升级 MPP,请在 upgrade_custom.json 的 UPGRADE_COMPONENT_FLOW 中的 OMMAgent 之前增加 MPP。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论