gitlab - GitLab CE:如何恢复或修复突然丢失的问题/合并请求的存储库?
问题描述
大约两年前,我开始在本地 x86 Debian VM 内运行 GitLab CE,去年我决定将 GitLab CE 实例迁移到专用的英特尔 NUC 服务器。一切似乎都很顺利,没有任何问题,我的 GitLab CE 实例截至今天是最新的(运行 13.4.2)。
不过,我最近发现,一些被移动的存储库给出了“没有存储库!” 访问他们的项目页面时出错,如果他们有任何问题板、合并请求等,这些也都消失了。但是您不会怀疑它,因为损坏的存储库与我一直使用的工作存储库一起出现在存储库列表中。
如果我必须对这些损坏的存储库进行推理,那将是他们在一年多前进行了最后一次活动,除了初始推送之外没有对它们进行任何推送,或者如果进行了更改、创建了问题或合并请求创建,它实际上是一年多以前。
其中一些损坏的回购相当大,有很多历史,而另一些则非常小(实际上只是跟踪对 shell 脚本的更改),所以我认为回购大小本身与它没有任何关系。
如果我运行 GitLab 诊断检查sudo gitlab-rake gitlab:check
,一切看起来都不错,除了“散列存储”:
All projects are in hashed storage? ... no
Try fixing it:
Please migrate all projects to hashed storage
但是运行sudo gitlab-rake gitlab:storage:migrate_to_hashed
似乎没有完成(仪表板中有六个失败的作业),并且再次运行“gitlab:check”仍然表明这个“散列存储”问题。我也尝试过运行sudo gitlab-rake gitlab:git:fsck
,sudo gitlab-rake cache:clear
但这些命令似乎没有什么不同。
幸运的是,我的机器上有所有丢失的 repos 的最新版本,事实上,我仍然有运行 GitLab CE 12.8.5 的原始 VM(带有稍微过时的 repos 副本。)
所以我的问题是:
- 是否可以“修复”我当前实例上损坏的存储库?我怀疑我可以将这些存储库的本地副本“重新推送”回我的服务器,但我真的不想丢失任何元数据,例如问题/合并请求等。
- 有没有办法解决“并非所有项目都在散列存储中”的问题?(再次
migrate_to_hashed
任务未能完成。) - 我是否可以做一些诸如“备份”、“检查/调整备份”、“恢复备份”之类的事情来修复损坏的存储库,或者至少是元数据?
提前致谢。
解决方案
好的,所以我想我知道发生了什么。
显然这里的场景是:
- 有一个 GitLab 实例,它的存储库不在“散列存储”中
- 备份你的回购
- 恢复你的 repo(到同一台服务器或迁移到另一台服务器)
- 自动或手动尝试将您的存储库更新为“散列存储”
- 您现在会发现任何带有“ci runner”(持续集成运行器)的 repo 现在都将被列为“NO REPOSITORY!” 并且完全不可用,因为“散列存储”迁移过程将失败
解决方法是:
- 重置运行器注册令牌,如GitLab 文档中的本文所列
- 重新运行该
sudo gitlab-rake gitlab:storage:migrate_to_hashed
过程 - 后台作业完成后,运行
sudo gitlab-rake gitlab:check
以确保输出包含消息:
All projects are in hashed storage? ... yes
如果成功,则显示“NO REPOSITORY!”的项目 现在应该完全恢复了。
了解您是否需要运行此过程的关键是您是否:
- 以管理员身份登录您的 GitLab CE 实例
- 进入管理区
- 查看监控->后台作业->死机
- 并查看一个名称为的工作
hashed_storage:hashed_storage_project_migrate
有错误
OpenSSL::Cipher::CipherError:
推荐阅读
- python - ML 模型给我零精度
- laravel - 如何测试路由的中间件?
- leaflet - 在传单中处理 gdal2tiles.py 生成的图块
- c# - 在 C# 中,有没有办法在方法的输入参数中使用“非此即彼”?
- c++ - 将 Gst-RTSP-Server 与 OpenCV c++ Windows 一起使用
- react-native - 如何刷新原生基础中的内部选项卡?
- angular - 为什么反应式表单验证会导致“无法读取未定义的属性'错误'”?
- java - 在不同的类中使用 JTextArea
- docker - 无法在 docker 中查看新创建的文件
- unity3d - Macbook 上的 Unity Oculus Link