Gitlab 数据备份和还原(填坑版)

此文章适用于因更换服务器或者 gitlab 安装方式变更(普通方式 <=> docker)进行数据迁移,或者日常备份还原。

前提条件:备份和还原的 gitlab 版本一致!

gitlab 版本查看命令:gitlab-rake gitlab:env:info

在这里插入图片描述

PS:如果是 docker 安装方式,请先登录容器在执行该命令,登录容器命令:docker exec -it gitlab /bin/bash

1 数据备份(操作备份服务器)

执行备份命令,如果是 docker 安装需要先登录到 gitlab 容器

gitlab-rake gitlab:backup:create

命令执行后,会在 /var/opt/gitlab/backups/ 目录下生成一个类似于 1666142751_2022_10_19_13.6.7_gitlab_backup 备份文件,如果是 docker 安装,该文件在生成容器时配置的挂载路径中。

注意:备份中会提示“gitlab.rb 和 gitlab-secrets.json 中存在敏感信息”,不需要管。

2 拷贝数据

将备份文件、gitlab.rb、gitlab-secrets.json(后面两个文件在 /etc/gitlab 目录中,docker 安装请查阅对应的挂载目录)上传到还原服务器临时目录上
上传的方法就不详细说明了,小编这边是使用的 Secure CRT 通过 SSH 连接备份服务器,先将文件保存在 Secure CRT 安装电脑上。然后再连接还原服务器,将文件上传至临时目录。

3 还原数据(操作还原服务器)

3.1 复制还原包

将临时目录中的 1666142751_2022_10_19_13.6.7_gitlab_backup 文件复制到 /var/opt/gitlab/backups/ 目录下(docker 安装复制到对应的挂载目录下

3.2 修改 postgresql 配置

这一步十分重要,否则在还原过程中会出现错误!错误信息如下:

Restoring PostgreSQL database gitlabhq_production ... ERROR:  must be owner of extension pg_trgm
ERROR:  must be owner of extension btree_gist
ERROR:  must be owner of extension btree_gist
ERROR:  must be owner of extension pg_trgm

如果是 docker 安装,在执行下面的操作之前,请先登录到 gitlab 容器中

3.2.1 修改 postgresql.conf

vim /var/opt/gitlab/postgresql/data/postgresql.conf

修改配置:

listen_addresses = '*'

说明:修改端口监听地址,默认监控 localhost,* 代表 all

3.2.2 修改 pg_hba.conf

vim /var/opt/gitlab/postgresql/data/pg_hba.conf

增加配置:

local   all         all                               trust
host    all         all                               127.0.0.1/32 trust

3.2.3 重启 gitlab

gitlab-ctl restart

3.2.4 修改 postgresql 权限

$ su - gitlab-psql
 
$ /opt/gitlab/embedded/bin/psql -h 127.0.0.1 gitlabhq_production
 
gitlabhq_production=# ALTER USER gitlab WITH SUPERUSER;
 
ALTER ROLE
 
gitlabhq_production=# \q
 
$ exit

3.3 执行恢复命令

gitlab-rake gitlab:backup:restore BACKUP=1666142751_2022_10_19_13.6.7

BACKUP后面的标签是备份文件名前面部分

3.4 复制 gitlab.rb 和 gitlab-secrets.json

gitlab.rb、gitlab-secrets.json 复制到 /etc/gitlab 目录下(docker 安装复制到对应的挂载目录下

注意:请仔细检查 gitlab.rb 文件中以下配置是否正确,如果不正确可能导致浏览器无法访问 gitlab

external_url
gitlab_rails['gitlab_ssh_host']
gitlab_rails['gitlab_shell_ssh_port']
nginx['listen_port']

PS:nginx['listen_port'] 不指定 nginx 会默认监听 external_url 的端口,若 external_url 没有指定端口,则 nginx 监听 80 端口

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值