Gitlab服务器备份与还原

Posted 张侦毅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gitlab服务器备份与还原相关的知识,希望对你有一定的参考价值。

文章目录

操作环境及相关指令

操作环境

  • 操作系统
[root@master ~]# cat /proc/version
Linux version 5.2.2-1.el7.elrepo.x86_64 (mockbuild@Build64R7) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC)) #1 SMP Sun Jul 21 04:19:28 EDT 2019

  该操作系统属于红帽CentOS-7,内核版本为5.2.2。

  • Gitlab软件版本
gitlab-ce-11.5.0-ce.0.el7.x86_64.rpm

  Gitlab的安装在之前的文章中就已经提及,不清楚的可以看前面的文章。如果是单纯的想迁移Gitlab的工作空间,可以看查看Gitlab服务器数据存储文件迁移这篇文章。

  • Gitlab配置文件
/etc/gitlab/gitlab.rb
  • Gitlab的自定义工作空间
/var/apps/gitlab/data
  • Gitlab的自定义备份地址
/var/apps/gitlab/backup

相关指令

防火墙相关指令

  • 查看防火墙状态
systemctl status firewalld
  • 关闭防火墙
systemctl stop firewalld
  • 打开防火墙
systemctl start firewalld

端口号相关指令

  • 查看端口号是否被占用
fuser -v -n tcp [端口号]
  • 防火墙添加端口
firewall-cmd --add-port=[端口号]/tcp
  • 查看防火墙端口列表
firewall-cmd --list-port

Gitlab相关指令

  • 查看软件版本号
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
  • 使配置文件生效
gitlab-ctl reconfigure
  • 启动Gitlab
gitlab-ctl start
  • 备份
/usr/bin/gitlab-rake gitlab:backup:create
  • 还原
gitlab-rake gitlab:backup:restore BACKUP=[备份版本号]

文件传输

  • 服务器间文件传输
scp xac [用户名]@[目标服务器地址]:[目标路径]

备份与还原

备份

  执行备份

[root@master backup]# /usr/bin/gitlab-rake gitlab:backup:create
Dumping database ... 
Dumping PostgreSQL database gitlabhq_production ... [DONE]
done
Dumping repositories ...
done
Dumping uploads ... 
done
Dumping builds ... 
done
Dumping artifacts ... 
done
Dumping pages ... 
done
Dumping lfs objects ... 
done
Dumping container registry images ... 
[DISABLED]
Creating backup archive: 1583302808_2020_03_04_11.5.0_gitlab_backup.tar ... done
Uploading backup archive to remote storage  ... skipped
Deleting tmp directories ... done
done
done
done
done
done
done
done
Deleting old backups ... done. (0 removed)

  备份后的备份文件如下:

[root@master backup]# ll
总用量 80
-rw-r--r--. 1 git git 81920 3月   4 14:20 1583302808_2020_03_04_11.5.0_gitlab_backup.tar

  其中1583302808_2020_03_04_11.5.0就是该备份文件的版本号。而我们后面的还原也将会应用到该版本号。

  一般情况下,公司级别的Gitlab备份文件大小最起码也在1G以上,而假如说备份的服务器与需要还原的服务器本身并不是一台服务器,此时就需要我们进行两台服务器间的文件传输,如下:

scp xac [用户名]@[目标服务器地址]:[目标路径]

  上面的用户名指的是目标服务器的用户名,而目标服务器地址就是目标服务器的IP地址,目标路径,指的是我们要将文件发送到目标服务器的哪个文件夹路径下。

  当我们点击【Enter】按键后,系统会提示让我们输入目标服务器的密码,正确填写上目标服务器的密码,我们就可以将备份文件发送到目标服务器上的指定目录。

Gitlab相关配置信息

  为了方便大家知道我的Gitlab是如何配置的,现将我的配置信息公布如下:

# 本机IP访问地址
external_url 'http://192.168.75.128'
# 开启备份
gitlab_rails['manage_backup_path'] = true
# 备份路径
gitlab_rails['backup_path'] = "/var/apps/gitlab/backup"
# 备份权限码
gitlab_rails['backup_archive_permissions'] = 0644
# 备份文件保存周期(默认一周时间,单位秒)
gitlab_rails['backup_keep_time'] = 604800
# Gitlab工作空间路径
git_data_dirs(
   "default" => 
     "path" => "/var/apps/gitlab/data"
    
)
# unicorn端口号
unicorn['port'] = 10011
# Gitlab访问端口号
nginx['listen_port'] = 10010
# Gitlab节点端口号
node_exporter['listen_address'] = 'localhost:10012'

还原

注意事项

  重要的事情说三遍,那就是,还原会清空Gitlab工作空间原有的数据,因而谨慎!谨慎!再谨慎!!!

  当我们确定要还原后,将还原文件放入Gitlab备份路径下,我们便可以执行下述还原指令:

gitlab-rake gitlab:backup:restore BACKUP=1583302808_2020_03_04_11.5.0

  在还原的过程中,其会提示该操作会清空原有的数据信息,是否继续,如果确认要继续,直接输入yes并回车。

  当数据还原后结束后,系统会提示是否重建文件认证秘钥,该秘钥在如下文件中:

/etc/gitlab/gitlab-secrets.json

  一般情况下,我们直接选择yes并回车。

  当我们看到下述信息时,这说明我们的Gitlab还原操作已经完成。

可能操作

  • 查看端口号是否被占用
[root@master backup]# fuser -v -n tcp 10010
                     用户     进程号 权限   命令
10010/tcp:           root      14830 F.... nginx
                     gitlab-www  14980 F.... nginx
                     gitlab-www  14981 F.... nginx

  如果要是存在端口号被占用的情况,需要我们杀掉相应的进程

  • 终止进程
kill -9 [进程号]

  假如说如果要是在一台服务器上备份,在另外一台服务器中还原,则需要我们将访问的端口号直接暴漏在外网中,也就是说需要将端口号10010暴漏在外网中。

  • 防火墙添加访问端口
firewall-cmd --add-port=10010/tcp
  • 查看防火墙访问端口
[root@master backup]# firewall-cmd --list-port
8083/tcp 10010/tcp

访问

  当我们执行完上述操作后,我们就可以通过如下地址直接访问Gitlab

http://192.168.75.128:10010

  而账号与密码还是原来Gitlab的账号与密码。至此,我们已经完成Gitlab的备份与还原。

以上是关于Gitlab服务器备份与还原的主要内容,如果未能解决你的问题,请参考以下文章

Gitlab服务器备份与还原

gitlab 安装备份与还原

gitlab升级-备份旧版本,还原到新搭建的gitlab

gitlab备份与还原

gitlab安装备份与还原

gitlab 安装备份与还原及常见设置