GitLab 迁移后 Runner 界面和删除项目 500 问题解决
一、背景
最近完成了一次 docker 版本的 GitLab 迁移,迁移步骤如下:
1. 容器内使用 gitlab-backup create 备份;
2. 在新机器使用 docker compose 新建一套相同版本的集群;
3. 拷贝备份文件到新机器的 backup 目录下;
4. 容器内使用 gitlab-backup restore 恢复;(当然要按恢复步骤)
二、问题
搞完之后,发现双重认证失效了,但是通过急救码可以登录,没太在意,重新设定就好了。但是所有的 Runner 也失效了,访问 Runner 界面时还出现 500 错误。这还没完,Runner 的问题还没解决,删除项目时也出现了 500 的错误。根据网上的说法,应该是密钥不一致引起的,突然想起在参考 GitLab Documentation 的时候,有注意事项的掠影……难不成这又是没注意看操作文档造成的问题? 经过仔细查阅官网文档,果然……
官方文档已经说得很清楚了,backup 命令并不备份配置文件,需要手动备份,还详细列出了每个安装方式备份的路径,我眼瞎啊……
三、解决
嗯,瞎归瞎,问题还是得解决的,从旧的容器里面,将 /etc/gitlab
文件夹拷贝出来,替换到新容器(做好备份工作)后重启就可以解决问题了,强烈建议将配置路径本地化存储。 最后附上 16.0 的官方备份还原链接,迁移前一定要仔细观看!(对我自己说的):
备份:https://archives.docs.gitlab.com/16.0/ee/raketasks/backup_gitlab.html
还原:https://archives.docs.gitlab.com/16.0/ee/raketasks/restore_gitlab.html
四、其他
如果碰到旧配置文件误删,或者没备份,无法还原的情况。可以参考网上的这种解决方案(纯拷贝,未实践过,操作前请做好备份,做好备份,做好备份):
1、登录PSQL:
# 登录 PSQL
/data/postgresql/bin/psql gitlab;
# 查看 ci_group_variables 和 ci_variables 表
select * from public."ci_group_vatiables";
select * from public."ci_variables";
2、清除令牌:
# 清除项目、组和整个实例的所有令牌
update projects set runners_token = null, runners_token_encrypted = null;
update namespaces set runners_token = null, runners_token_encrypted = null;
update applications_settings set runners_registration_token_encrypted = null;
update ci_runners set token = null, token_encrypted =null;
3、刷新界面:
以上配置完后,刷新界面即可恢复正常。