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
相关推荐
不念霉运1 天前
2025 Gitee vs. GitLab:全面对比与选择指南
gitee·gitlab
水瓶_bxt1 天前
创建 GitLab Runner 使用CICD自动化部署容器
eureka·自动化·gitlab
黑心的奥利奥3 天前
Docker配置Gitlab-runner实现自动化容器化部署前端项目
docker·自动化·gitlab
wuzuyu3653 天前
在腾讯云上安装gitlab
云计算·gitlab·腾讯云
xiaodaiwang3 天前
OpenEuler 22.03 系统上安装配置gitlab runner
gitlab
TimberWill4 天前
gitlab私服搭建
gitlab
中东大鹅4 天前
访问 gitlab 跳转 0.0.0.0
gitlab
guygg885 天前
配置本地git到gitlab并推送
git·gitlab
大A崛起5 天前
Gitlab-CI实现组件自动推送
ci/cd·gitlab·github
越来越无动于衷5 天前
GitLab 社区版 10.8.4 安装、汉化与使用教程
gitlab