Gitlab升级14.0.12-->14.3.6遇到的gitlab-ctl reconfigure错误

问题描述

在按照官方文档升级路线11.0.2=>17.2.2的过程中,升级14.0.12--》14.3.6时遇到一个错误:

bash 复制代码
Running handlers:
There was an error running gitlab-ctl reconfigure:

rails_migration[gitlab-rails] (gitlab::database_migrations line 51) had an error: Mixlib::ShellOut::ShellCommandFailed: bash[migrate gitlab-rails database] (/opt/gitlab/embedded/cookbooks/cache/cookbooks/gitlab/resources/rails_migration.rb line 16) had an error: Mixlib::ShellOut::ShellCommandFailed: Expected process to exit with [0], but received '1'
---- Begin output of "bash"  "/tmp/chef-script20240917-12026-tupa61" ----
。。。中间略过。。。。
-- execute("ALTER TABLE \"vulnerability_finding_evidence_sources\"\nADD CONSTRAINT \"check_86b537ba1a\" CHECK (char_length(\"name\") <= 2048),\nADD CONSTRAINT \"check_0fe01298d6\" CHECK (char_length(\"url\") <= 2048)\n")rake aborted!
StandardError: An error has occurred, all later migrations canceled:

Expected batched background migration for the given configuration to be marked as 'finished', but it is 'paused':      {:job_class_name=>"CopyColumnUsingBackgroundMigrationJob", :table_name=>"ci_builds_metadata", :column_name=>"id", :job_arguments=>[["id"], ["id_convert_to_bigint"]]}

Finalize it manualy by running

	sudo gitlab-rake gitlab:background_migrations:finalize[CopyColumnUsingBackgroundMigrationJob,ci_builds_metadata,id,'[["id"]\, ["id_convert_to_bigint"]]']

原因调查

查询chatgpt,这个错误与数据库迁移失败有关,根据错误日志显示,问题出在某个后台迁移任务未完成。GitLab 在进行某些大表的数据迁移时,会将任务分批次处理,而你的迁移任务被暂停了,导致后续的迁移被中止。

具体原因是 GitLab 的 CopyColumnUsingBackgroundMigrationJob 后台任务没有标记为"已完成",而是处于"暂停"状态,任务没有被完全执行,因此阻止了后续迁移。这个问题通常发生在你升级 GitLab 版本时,GitLab 使用后台迁移任务处理大表(如 ci_builds_metadata 表)的数据,以避免在迁移过程中占用大量资源。

解决方案

1、检查数据库连接

bash 复制代码
sudo gitlab-rake db:migrate:status

结果显示,无法连接数据库。

2、重启数据库

bash 复制代码
sudo gitlab-ctl status postgresql
sudo gitlab-ctl start postgresql

3、执行

bash 复制代码
sudo gitlab-rake gitlab:background_migrations:finalize[CopyColumnUsingBackgroundMigrationJob,ci_builds_metadata,id,'[["id"], ["id_convert_to_bigint"]]']

sudo gitlab-ctl reconfigure

又遇到了Redis无法连接错误:

bash 复制代码
Caused by:Redis::CannotConnectError: Error connecting to Redis on /var/opt/gitlab/redis/redis.socket (Errno::ENOENT) 

但是检查Redis服务,却是正常运行的。咨询chatgpt,有时候 Redis 启动过程中出现问题,可能导致 GitLab 其他组件无法正常启动。可以尝试重启所有 GitLab 组件。

4、执行如下步骤:

bash 复制代码
sudo gitlab-ctl restart
sudo gitlab-ctl reconfigure

又遇到错误,根据日志信息,执行:

bash 复制代码
sudo gitlab-rake gitlab:background_migrations:finalize[CopyColumnUsingBackgroundMigrationJob,taggings,id,'[["id"\, "taggable_id"]\, ["id_convert_to_bigint"\, "taggable_id_convert_to_bigint"]]']

然后再执行

bash 复制代码
sudo gitlab-ctl reconfigure

没有报错, 再执行:

bash 复制代码
sudo gitlab-rake db:migrate

没有错误,然后检查日志和服务,均已正常。

问题解决,记之。

相关推荐
ASKED_201916 小时前
GitLab CI|CD 配置笔记
笔记·ci/cd·gitlab
木雷坞2 天前
csdn-enterpriseGitLab Runner docker pull 慢:并行流水线镜像拉取排查
运维·docker·容器·gitlab
一只大袋鼠2 天前
Git (三):Tag 标签管理、图形工具、IDEA 集成与 GitLab 私有化部署
开发语言·git·gitlab
Lyra_Infra5 天前
故障排查报告:GitLab 18.11.3 后台 Settings 500
gitlab
Mike_6667 天前
git@gitlab-rdc.xxxxx.com: Permission denied (publickey).fatal: 无法读取远程仓库。
git·elasticsearch·gitlab
雨声不在9 天前
gitlab ci Runner 配置
gitlab·cicd
曾庆睿10 天前
【基于 RHEL 9.3 的 K8s + GitLab 全自动化部署环境搭建第一篇】
kubernetes·自动化·gitlab
曾庆睿10 天前
【基于 RHEL 9.3 的 K8s + GitLab 全自动化部署环境搭建第二篇】
kubernetes·自动化·gitlab
xmlhcxr15 天前
从 0 到 1 落地企业级 DevOps CI/CD 流水线:基于 GitLab+Jenkins+Harbor 的完整实践
运维·docker·gitlab·jenkins·harbor·devops