4.2.1.10-110000072024112010 升级 4.2.1.11报错

【 使用环境 】生产环境 ocpmetadb
【 OB or 其他组件 】OB 4.2.1.0 OBD3.2.2
【 使用版本 】
【问题描述】

升级OBD以后使用obd升级OB4.2.1.10-110000072024112010 升级 4.2.1.11,报错:
2:23.432] [DEBUG] – exited code 1, error output:
[2025-05-21 13:52:23.432] [DEBUG] cat: /home/admin/oceanbase/run/obshell.pid: 没有那个文件或目录
[2025-05-21 13:52:23.432] [DEBUG]
[2025-05-21 13:52:23.433] [DEBUG] – admin@10.10.10.148 export OB_ROOT_PASSWORD=******
[2025-05-21 13:52:23.433] [DEBUG] – start obshell: cd /home/admin/oceanbase; /home/admin/oceanbase/bin/obshell admin start --ip 10.10.10.148 --port 2886
[2025-05-21 13:52:23.433] [DEBUG] – admin@10.10.10.148 execute: cd /home/admin/oceanbase; /home/admin/oceanbase/bin/obshell admin start --ip 10.10.10.148 --port 2886
[2025-05-21 13:52:25.556] [DEBUG] – exited code 0
[2025-05-21 13:52:25.640] [INFO] obshell program health check
[2025-05-21 13:52:25.640] [DEBUG] – admin@10.10.10.148 execute: cat /home/admin/oceanbase/run/obshell.pid
[2025-05-21 13:52:25.649] [DEBUG] – exited code 0
[2025-05-21 13:52:25.649] [DEBUG] – Get 10.10.10.148 obshell[pid: 395087]
[2025-05-21 13:52:25.650] [DEBUG] – admin@10.10.10.148 execute: ls /proc/395087
[2025-05-21 13:52:25.702] [DEBUG] – exited code 0
[2025-05-21 13:52:25.703] [DEBUG] – 10.10.10.148 obshell[pid: 395087] started
[2025-05-21 13:52:25.771] [DEBUG] - sub obshell_start ref count to 0
[2025-05-21 13:52:25.771] [DEBUG] - export obshell_start
[2025-05-21 13:52:25.771] [DEBUG] - plugin oceanbase-ce-py_script_obshell_start-4.2.1.4 result: True
[2025-05-21 13:52:25.771] [DEBUG] - Searching obshell_bootstrap plugin for components …
[2025-05-21 13:52:25.771] [DEBUG] - Searching obshell_bootstrap plugin for oceanbase-ce-4.2.1.11-111000162025032610.el7-7b406f4a49a44c710ca3c0590ef24ef2f0492a53
[2025-05-21 13:52:25.772] [DEBUG] - Found for oceanbase-ce-py_script_obshell_bootstrap-4.2.1.4 for oceanbase-ce-4.2.1.11
[2025-05-21 13:52:25.772] [DEBUG] - Call plugin oceanbase-ce-py_script_obshell_bootstrap-4.2.1.4 for oceanbase-ce-4.2.1.11-111000162025032610.el7-7b406f4a49a44c710ca3c0590ef24ef2f0492a53
[2025-05-21 13:52:25.772] [DEBUG] - import obshell_bootstrap
[2025-05-21 13:52:25.774] [ERROR] import obshell_bootstrap failed
[2025-05-21 13:52:25.775] [ERROR] Traceback (most recent call last):
[2025-05-21 13:52:25.775] [ERROR] File “core.py”, line 3412, in upgrade_cluster
[2025-05-21 13:52:25.775] [ERROR] File “core.py”, line 246, in run_workflow
[2025-05-21 13:52:25.775] [ERROR] File “core.py”, line 288, in run_plugin_template
[2025-05-21 13:52:25.775] [ERROR] File “core.py”, line 336, in call_plugin
[2025-05-21 13:52:25.775] [ERROR] File “_plugin.py”, line 348, in call
[2025-05-21 13:52:25.775] [ERROR] File “_plugin.py”, line 304, in _new_func
[2025-05-21 13:52:25.775] [ERROR] File “/home/admin/.obd/plugins/oceanbase-ce/4.2.1.4/upgrade.py”, line 567, in upgrade
[2025-05-21 13:52:25.775] [ERROR] if upgrader.run():
[2025-05-21 13:52:25.775] [ERROR] File “/home/admin/.obd/plugins/oceanbase-ce/4.2.1.4/upgrade.py”, line 189, in run
[2025-05-21 13:52:25.775] [ERROR] if not self.processself.process_index:
[2025-05-21 13:52:25.775] [ERROR] File “/home/admin/.obd/plugins/oceanbase-ce/4.2.1.4/upgrade.py”, line 542, in take_over
[2025-05-21 13:52:25.775] [ERROR] return self.connect() and self.run_workflow(workflows, repository, self.cluster_config, **{repository.name: {“need_bootstrap”: need_bootstrap}})
[2025-05-21 13:52:25.775] [ERROR] File “/home/admin/.obd/plugins/oceanbase-ce/4.2.1.4/upgrade.py”, line 126, in run_workflow
[2025-05-21 13:52:25.775] [ERROR] return self._run_workflow(workflows, repositories=[repository], **kwargs)
[2025-05-21 13:52:25.775] [ERROR] File “core.py”, line 246, in run_workflow
[2025-05-21 13:52:25.775] [ERROR] File “core.py”, line 288, in run_plugin_template
[2025-05-21 13:52:25.775] [ERROR] File “core.py”, line 336, in call_plugin
[2025-05-21 13:52:25.775] [ERROR] File “_plugin.py”, line 348, in call
[2025-05-21 13:52:25.775] [ERROR] File “_plugin.py”, line 273, in _new_func
[2025-05-21 13:52:25.775] [ERROR] File “_plugin.py”, line 248, in before_do
[2025-05-21 13:52:25.775] [ERROR] File “_plugin.py”, line 359, in _import
[2025-05-21 13:52:25.775] [ERROR] File “tool.py”, line 178, in import_module
[2025-05-21 13:52:25.775] [ERROR] File “/home/admin/.obd/plugins/oceanbase-ce/4.2.1.4/obshell_bootstrap.py”, line 21, in
[2025-05-21 13:52:25.775] [ERROR] from obshell import ClientSet
[2025-05-21 13:52:25.775] [ERROR] File “/usr/obd/lib/site-packages/obshell/init.py”, line 17, in
[2025-05-21 13:52:25.775] [ERROR] locale.setlocale(locale.LC_ALL, ‘en_US.UTF-8’)
[2025-05-21 13:52:25.775] [ERROR] File “locale.py”, line 608, in setlocale
[2025-05-21 13:52:25.775] [ERROR] locale.Error: unsupported locale setting
[2025-05-21 13:52:25.775] [ERROR]
[2025-05-21 13:52:25.775] [DEBUG] - sys.path: [’/home/admin/.obd/plugins/oceanbase-ce/4.2.1.4’, ‘/tmp/_MEIhFIHF0/base_library.zip’, ‘/tmp/_MEIhFIHF0/lib-dynload’, ‘/tmp/_MEIhFIHF0’, ‘/usr/obd/lib/site-packages’]
[2025-05-21 13:52:25.776] [DEBUG] - plugin oceanbase-ce-py_script_obshell_bootstrap-4.2.1.4 result: None
[2025-05-21 13:52:25.776] [DEBUG] - sub upgrade ref count to 0
[2025-05-21 13:52:25.776] [DEBUG] - export upgrade
[2025-05-21 13:52:25.776] [DEBUG] - plugin oceanbase-ce-py_script_upgrade-4.2.1.4 result: None
[2025-05-21 13:52:25.777] [DEBUG] - dump upgrade meta data to /home/admin/.obd/cluster/ocpmetadb/.upgrade
[2025-05-21 13:52:25.784] [INFO] See https://www.oceanbase.com/product/ob-deployer/error-codes .
[2025-05-21 13:52:25.784] [INFO] Trace ID: 539fb1f4-3607-11f0-b718-005056ac04cb
[2025-05-21 13:52:25.784] [INFO] If you want to view detailed obd logs, please run: obd display-trace 539fb1f4-3607-11f0-b718-005056ac04cb
[2025-05-21 13:52:25.785] [DEBUG] - unlock /home/admin/.obd/lock/global
[2025-05-21 13:52:25.785] [DEBUG] - unlock /home/admin/.obd/lock/deploy_ocpmetadb
[2025-05-21 13:52:25.785] [DEBUG] - unlock /home/admin/.obd/lock/mirror_and_repo

【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)

【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

根据您提供的信息,升级过程中出现了 locale.Error: unsupported locale setting 的错误。以下是可能的原因及解决办法:

问题分析

从日志中可以看到以下关键信息:

File "/usr/obd/lib/site-packages/obshell/__init__.py", line 17, in <module>
locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')
File "locale.py", line 608, in setlocale
locale.Error: unsupported locale setting

这表明在执行 locale.setlocale(locale.LC_ALL, 'en_US.UTF-8') 时,系统无法识别或支持 en_US.UTF-8 的 locale 设置。

可能原因

  1. 系统未安装或启用 en_US.UTF-8 locale
    在某些 Linux 系统中,默认可能未启用 en_US.UTF-8 locale,导致程序尝试设置该 locale 时失败。

  2. 环境变量配置问题
    如果系统的环境变量(如 LANGLC_ALL)未正确设置为 en_US.UTF-8,也可能导致此问题。


解决方案

方法 1:检查并生成 en_US.UTF-8 locale

  1. 检查当前系统支持的 locale:

    locale -a
    

    如果输出中没有 en_US.UTF-8,则需要生成它。

  2. 生成 en_US.UTF-8 locale:

    • 对于 CentOS/RHEL 系统:
      sudo localedef -i en_US -f UTF-8 en_US.UTF-8
      
    • 对于 Ubuntu/Debian 系统:
      sudo dpkg-reconfigure locales
      
      在交互式界面中选择 en_US.UTF-8 并标记为默认 locale。
  3. 验证生成结果:

    locale -a | grep en_US.UTF-8
    

方法 2:修改环境变量

确保环境变量 LANGLC_ALL 设置为 en_US.UTF-8

export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8

将上述命令添加到 .bashrc.profile 文件中以永久生效:

echo "export LANG=en_US.UTF-8" >> ~/.bashrc
echo "export LC_ALL=en_US.UTF-8" >> ~/.bashrc
source ~/.bashrc

方法 3:检查 OBD 版本

根据文档片段 2 的信息:

修复 obd cluster upgrade 命令在没有设置中文环境时会出现解析升级路径编码错误的问题。

建议确认您的 OBD 版本是否为最新版本(V3.2.2 已经是较新的版本)。如果仍有问题,可以尝试升级 OBD 至最新版本:

obd mirror update
obd self update

总结

  1. 确保系统已启用 en_US.UTF-8 locale。
  2. 设置环境变量 LANGLC_ALLen_US.UTF-8
  3. 确认 OBD 版本为最新,并根据需要更新。

如果按照上述步骤操作后问题仍未解决,请提供更多日志信息或使用 obdiag 收集诊断信息以便进一步分析。

更多信息请查看:

  1. 使用 OCP 接管 obd 部署的集群
  2. OceanBase 安装部署工具 V1.2.1
  3. OceanBase 安装部署工具 V1.3.3
  4. 错误码
  5. OceanBase 安装部署工具 V2.3.1
  6. OceanBase 安装部署工具 V1.6.0
  7. OceanBase 安装部署工具 V2.1.1
  8. OceanBase 安装部署工具 V2.4.0
  9. ob_error
  10. OceanBase 安装部署工具 V1.6.2