gitlab 11.11.8的备份与恢复及500错误的修复

gitlab已经集成了非常方便的备份和恢复命令,只要我们执行这些命令就能完成gitlab的备份与恢复了。

我想gitlab备份与恢复的目的无非就是将已经运行了很久的旧的gitlab服务,迁移到新的服务器上。如果你旧的gitlab上项目很少,就需要考虑迁移服务的必要性了,毕竟如果只有一两个项目的话可以通过拉取旧服务器上的项目再将这些项目推送到新服务器上就能完成迁移了。

👿 如果你的备份与恢复需要在不同的服务器之间进行,一定要注意两台服务器上gitlab的版本是否相同,否则会出现各种错误。

👿 如果是在不同的服务器之间进行备份恢复,一定要记得将旧服务器上的gitlab相关配置文件拷贝到新服务器上。

1.备份

通过命令行进行的备份并不会备份gitlab-secrets.jsongitlab.rb这两个文件,所以在备份之前要将原gitlab的这两个文件备份出来,拷贝到目标系统中。

复制代码
# 使用下面的命令进行备份(11.11.8)
gitlab-rake gitlab:backup:create

如果出现上图所示,说明备份成功,备份程序会在/var/opt/gitlab/backups/目录下生成一个以*.tar的备份包,我们把这个备份包复制到目标服务器的相同目录下,然后使用下面的命令修改备份包文件的属主和属组。

复制代码
chown git:git 1698302294_2023_10_26_12.3.5_gitlab_backup.tar

2.从备份包中恢复备份

停止与数据库连接的进程。让GitLab的其余部分运行:

复制代码
gitlab-ctl stop puma
gitlab-ctl stop sidekiq
gitlab-rake gitlab:backup:restore BACKUP=1698302378_2023_10_26_11.11.8

注意BACKUP后的名称规则是去掉_gitlab_backup.tar

在恢复过程中会出现下图提示,选择yes,否则恢复无法继续进行。

恢复完成后,执行gitlab-ctl reconfigure命令,然后重启gitlab就可以了。

3.恢复后的gitlab某些操作出现报500错误的解决办法

出现这些错误的根本原因是在恢复备份的目标服务器上缺少原来系统中的密钥文件,以及配置文件,所以重建gitlab服务的时候,凡遇到密钥认证的地方就会报500错误了。

在排错的过程中,使用以下命令查看gitlab的相关日志。

复制代码
tail -f /var/log/gitlab/gitlab-rails/production.log

上图就是我在恢复完成后操作删除某个项目时的报错,通过上述查看日志,可以确定是用户权限出现了问题,因此清空一下用户的token。使用gitlab-rails dbconsole命令登录到gitlab的数据库命令行。

复制代码
sudo gitlab-rails dbconsole

在命令行模式下,通过SELECT * FROM public."ci_group_variables";语句查询一下public."ci_group_variables"变量表中包含哪些信息。

复制代码
SELECT * FROM public."ci_group_variables";

通过上图可以看出这个表是空的。接下来查看一下public."ci_variables"中的信息。

复制代码
 SELECT * FROM public."ci_variables";

这个表同样也是空的。

接下来通过以下命令把项目、项目命令空间、以及应用设置、ci_runner的runner_token,runner_token_encrypted,等一系列与加密,token相关的值都置为空。

复制代码
UPDATE projects SET runners_token = null, runners_token_encrypted = null;
UPDATE namespaces SET runners_token = null, runners_token_encrypted = null;
UPDATE application_settings SET runners_registration_token_encrypted = null;
UPDATE ci_runners SET token = null, token_encrypted = null;

执行完上述命令后,使用ctr+d退出命令模式。

然后再执行项目的删除操作,这次不会出现报错了。

gitlab密钥相关的两个文件。

复制代码
 /var/opt/gitlab/gitlab-rails/etc/secrets.yml

/etc/gitlab/gitlab-secrets.json
相关推荐
AOwhisky17 小时前
云原生 DevOps 工具链从入门到实战(第一期)——DevOps概述与GitLab部署——从理念到工具落地
运维·ci/cd·云原生·gitlab·开发·devops
不厌 -_-2 天前
gitlab中怎么创建MR提交模板
gitlab·mr
酿情师3 天前
Gitlab 任意文件读取漏洞(CVE-2016-9086)
gitlab
糖果罐子♡4 天前
TortoiseGit 首次上传本地工程至已初始化的GitLab仓库教程
gitlab
Byron Loong4 天前
【Git】如何检查 Ubuntu 系统上 gitLab 是否开启
git·ubuntu·gitlab
QN1幻化引擎4 天前
SFA 信号场注意力:用8KB参数换248x KV Cache压缩,边缘设备也能跑长序列
人工智能·算法·gitee·gitlab
阿里云云原生4 天前
研发福音:云效 AI 智能评审正式支持 GitLab 集成,VPC 内网即可实现自动审阅
gitlab
这个需求做不了8 天前
Jenkins自动化构建与CI/CD流水线,并配置GitLab
java·ci/cd·自动化·gitlab·jenkins
qq_452396238 天前
第六篇:《GitLab CI 进阶:多环境部署与环境变量管理》
git·ci/cd·gitlab
考虑考虑10 天前
git中的tag
git·gitlab·github