OpenShift中通过Helm升级Gitlab时PostgreSQL升级失败
GitLab 15.11.13 升级至16.1.5 + PostgreSQL 12→13 备份上传失败问题排查
问题概述
- 运行环境:OpenShift 4.11
- 操作目标:通过Helm将GitLab从15.11.13升级至16.1.5,同步将PostgreSQL从12版本升级到13版本
- 执行命令:
gitlab-studio-backup$ curl -s "https://gitlab.com/gitlab-org/charts/gitlab/-/raw/v7.1.5/scripts/database-upgrade" | bash -s -x -- -r gitlab-dev-release -n gitlab-dev pre
- 错误表现:数据库备份完成后触发
ERROR: Error parsing xml: mismatched tag: line 66, column 4,随后返回503服务不可用页面,提示备份文件/database_upgrade_6_gitlab_backup.tar上传失败,多次重试问题未解决
排查与解决方向
1. 定位并修复XML格式错误
- 该错误直接指向备份流程中涉及的XML文件存在语法问题,重点检查:
- GitLab备份生成的元数据XML文件,找到第66行的标签,确认是否存在未闭合标签、标签大小写不匹配(XML大小写敏感)、标签嵌套错误
- 检查GitLab配置中涉及XML的片段(比如LDAP配置、集成服务的XML配置),是否有格式错误
2. 排查备份上传目标服务状态
- 503服务不可用说明备份上传的接收服务(如GitLab配套的对象存储、持久化存储)异常,需:
- 查看OpenShift命名空间
gitlab-dev下的存储相关Pod(如minio、gitlab-toolbox)运行状态,检查是否有CrashLoopBackOff、存储挂载失败等异常 - 确认存储资源(PersistentVolume、存储桶)的权限配置,确保GitLab组件有读写权限
- 查看OpenShift命名空间
3. 验证脚本兼容性与手动备份测试
- 确认使用的
database-upgrade脚本版本(v7.1.5)与当前GitLab 15.11.13版本的兼容性,部分跨大版本升级脚本可能存在适配问题 - 尝试绕过自动脚本,手动执行备份流程:
# 进入gitlab-toolbox Pod oc exec -it $(oc get pods -n gitlab-dev -l app=toolbox -o jsonpath='{.items[0].metadata.name}') -n gitlab-dev -- bash # 手动创建备份 gitlab-backup create # 手动验证备份文件是否可正常上传至存储
4. 检查权限与资源日志
- 确认执行脚本的账号拥有OpenShift集群中
gitlab-dev命名空间的足够权限(如Pod访问、存储读写权限) - 查看相关组件日志:
- gitlab-toolbox Pod日志:
oc logs -n gitlab-dev <toolbox-pod-name>,获取备份过程的详细报错 - postgresql Pod日志:
oc logs -n gitlab-dev <postgresql-pod-name>,确认数据库备份过程是否正常
- gitlab-toolbox Pod日志:
内容的提问来源于stack exchange,提问作者overstacker258
相关产品推荐
相关产品推荐

