GitLab CE:如何恢复或修复突然丢失的问题/合并请求的回购?

GitLab CE:如何恢复或修复突然丢失的问题/合并请求的回购?,gitlab,gitlab-ce,Gitlab,Gitlab Ce,大约两年前,我开始在x86 Debian VM中本地运行GitLab CE,去年我决定将GitLab CE实例迁移到专用的Intel NUC服务器。一切似乎都进展顺利,没有任何问题,我的GitLab CE实例到今天为止是最新的(运行13.4.2) 不过,我最近发现,一些被移动的回购协议在访问其项目页面时会出现“无存储库”错误,如果他们有任何问题板、合并请求等,这些也会消失。但你不会怀疑这一点,因为我一直在使用的失效回购协议与有效回购协议一起出现在回购协议列表中 如果我必须对这些破裂的回购协议进行

大约两年前,我开始在x86 Debian VM中本地运行GitLab CE,去年我决定将GitLab CE实例迁移到专用的Intel NUC服务器。一切似乎都进展顺利,没有任何问题,我的GitLab CE实例到今天为止是最新的(运行13.4.2)

不过,我最近发现,一些被移动的回购协议在访问其项目页面时会出现“无存储库”错误,如果他们有任何问题板、合并请求等,这些也会消失。但你不会怀疑这一点,因为我一直在使用的失效回购协议与有效回购协议一起出现在回购协议列表中

如果我必须对这些破裂的回购协议进行解释,那就是他们的最后一次活动是在一年多以前,除了最初的推送之外,没有对他们进行推送,或者如果进行了更改、创建了问题或创建了合并请求,那实际上是在一年多以前

这些被破坏的回购协议中有一些是相当大的,有很多历史,而另一些是非常小的(实际上只是跟踪一个shell脚本的变化),所以我认为回购规模本身与此无关

如果我运行GitLab诊断检查
sudo GitLab rake GitLab:check
,除了“散列存储”之外,一切看起来都很好:

但是运行
sudo gitlab rake gitlab:storage:migrate_to_hashed
似乎没有完成(仪表板中有六个失败的作业),再次运行“gitlab:check”仍然表明这个“hashed storage”问题。我还尝试运行了
sudogitlab-rake-gitlab:git:fsck
sudogitlab-rake-cache:clear
,但这些命令似乎没有什么不同

幸运的是,我的机器上有所有丢失的repos的最新版本,事实上,我仍然有运行GitLab CE 12.8.5的原始VM(带有稍微过时的repos副本)

因此,我的问题是:

  • 是否有可能“修复”我当前实例上损坏的回购协议?我想我可以将这些回购协议的本地副本“重新推送”回我的服务器,但我真的不想丢失任何元数据,如问题/合并请求等
  • 有没有办法解决“并非所有项目都在散列存储中”的问题?(再次,
    migrate_to_hashed
    任务无法完成。)
  • 我能做一些像“备份”、“检查/调整备份”、“恢复备份”之类的事情来修复损坏的回购协议,或者至少修复元数据吗

  • 提前谢谢。

    好的,我想我知道发生了什么

    我在地图上找到的

    显然,这里的情况是:

  • 在“散列存储”中有一个reposnot的GitLab实例
  • 备份您的回购协议
  • 恢复您的repo(到同一台服务器或迁移到另一台服务器)
  • 自动或手动尝试将您的回购更新为“散列存储”
  • 现在,您会发现任何带有“ci runner”(持续集成runner)的repo现在将被列为“无存储库”,并且完全不可用,因为“哈希存储”迁移过程将失败
  • 解决办法是:

  • 重置GitLab文档中列出的运行程序注册令牌
  • 重新运行sudogitlab rake gitlab:storage:migrate\u to\u hashed进程
  • 后台作业完成后,运行
    sudo gitlab rake gitlab:check
    以确保输出包含以下消息:
  • 如果成功,说明“无存储库!”的项目现在应该完全恢复

    了解是否需要运行此流程的关键是:

  • 以管理员身份登录GitLab CE实例
  • 转到管理区
  • 查看监控->后台作业->死亡
  • 看到一份有名字的工作
  • 带着错误

    OpenSSL::Cipher::CipherError:
    

    这些工作可能会失败还有其他原因——以下是另一个原因:
    All projects are in hashed storage? ... yes
    
    hashed_storage:hashed_storage_project_migrate
    
    OpenSSL::Cipher::CipherError: