排查后台迁移问题
Tier: 基础版,专业版,旗舰版
Offering: 私有化部署
数据库迁移因批处理后台迁移未完成而失败
在更新到极狐GitLab 14.2 或更高版本时,数据库迁移可能会失败,并显示类似以下的消息:
plaintext1StandardError: 发生错误,所有后续迁移已取消: 2 3期望给定配置的批处理后台迁移被标记为“已完成”,但它是“活动”状态: 4 {:job_class_name=>"CopyColumnUsingBackgroundMigrationJob", 5 :table_name=>"push_event_payloads", 6 :column_name=>"event_id", 7 :job_arguments=>[["event_id"], 8 ["event_id_convert_to_bigint"]] 9 }
要解决此错误:
- 如果你遵循了 14.2 版本特定升级说明,请手动完成批处理后台迁移。
- 如果你没有遵循这些说明,你必须执行以下任一操作:
回滚并遵循所需的升级路径
要回滚并遵循所需的升级路径:
- 回滚并恢复之前安装的版本。
- 在更新到 14.2+ 之前,先更新到 14.0.5 或 14.1。
- 检查 批处理后台迁移的状态,并确保在再次尝试升级之前它们都标记为已完成。如果仍有标记为活动的,请手动完成它们。
向前滚动并在升级版本上完成迁移
向前滚动的过程取决于是否需要停机。
对于需要停机的部署
运行所有批处理后台迁移可能需要大量时间,具体取决于极狐GitLab 安装的大小。
-
当所有迁移的状态都标记为完成时,为你的安装重新运行迁移。
-
从极狐GitLab 升级中完成数据库迁移:
plaintextsudo gitlab-rake db:migrate -
运行重新配置:
plaintextsudo gitlab-ctl reconfigure -
完成安装的升级。
对于零停机部署
由于失败的迁移是部署后迁移,你可以保持在升级版本的运行实例上,并等待批处理后台迁移完成。
高级搜索迁移卡住
在极狐GitLab 15.0 中,一个名为 DeleteOrphanedCommit 的高级搜索迁移可能会在升级过程中永久卡在待处理状态。此问题已在极狐GitLab 15.1 中修正。
如果你是在极狐GitLab 15.0 中使用高级搜索的私有化部署客户,你会遇到性能下降。要清理迁移,请升级到 15.1 或更高版本。
对于其他卡在待处理问题中的高级搜索迁移,请重试已停止的迁移。
如果在所有待处理的高级搜索迁移完成之前升级极狐GitLab,则新版本中已删除的任何待处理迁移将无法执行或重试。在这种情况下,你必须从头开始重新创建索引。
错误:Elasticsearch 版本不兼容
如果你的 Elasticsearch 或 OpenSearch 版本与极狐GitLab 不兼容,索引会暂停以防止数据丢失,并且此消息会记录到 elasticsearch.log。
要解决此问题,请确保你的 Elasticsearch 或 OpenSearch 版本与极狐GitLab 兼容。
如果你使用的是兼容版本,请恢复索引。