Gitlab 备份与恢复


目标:
备份Gitlab相关的配置文件
备份Gitlab中的程序代码(代码仓库(项目),用户,用户组,密钥.)

备份Gitlab服务的配置

/etc/gitlab目录下所有内容即可.

备份Gitlab里面的内容

#### 编辑Gitlab的配置文件
#修改之后的gitlab.rb

[root@devops-oldboy-gitlab /etc/gitlab]# cat 
gitlab.rb
external_url 'http://gitlab.oldboylinux.cn'

gitlab_rails['manage_backup_path'] = true
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"


gitlab_rails['backup_archive_permissions'] = 0644
gitlab_rails['backup_keep_time'] = 604800
gitlab_rails['smtp_enable'] = false
gitlab_rails['registry_enabled'] = false
registry['enable'] = false
prometheus['enable'] = false
alertmanager['enable'] = false
node_exporter['enable'] = false
redis_exporter['enable'] = false
postgres_exporter['enable'] = false
gitlab_exporter['enable'] = false
prometheus_monitoring['enable'] = false

#然后执行
gitlab-ctl reconfigure 
gitlab-ctl restart


#配置文件 的backup部分
backup_

## Backup Settings   gitlab备份设置
Docs:  https://docs.gitlab.com/omnibus/settings/backups.html

gitlab_rails['manage_backup_path'] = true           
      #是否可以指定备份目录
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"   #备份目录

gitlab_rails['backup_archive_permissions'] = 0600   
      #备份的压缩包权限

gitlab_rails['backup_keep_time'] = 604800           
      #备份保留多久 7天
      
##gitlab备份 需要手动执行

#配置生效
gitlab-ctl reconfigure 
gitlab-ctl  restart

[root@gitlab ~]# ll /var/opt/gitlab/backups -d

手动备份

#GitLab 版本小于12.2
gitlab-backup create

#GitLab 版本大于12.1:
gitlab-rake gitlab:backup:create
⚠ ⚠ 对于gitlab.rb 和gitlab-secrets.json包含敏感信息,需要手动备份.

恢复

1. 停止写入类服务
gitlab-ctl  stop unicorn 
gitlab-ctl  stop sidekiq

2. gitlab-rake恢复 (不需要加tar)

#新版本GitLab 版本12.2:
gitlab-backup restore    BACKUP=11493107454_2018_04_25_10.6.4-ce
#旧版本GitLab 版本12.1:
gitlab-rake gitlab:backup:restore    BACKUP=备份文件
名字不包含右边内容_gitlab-backup.tar
gitlab-rake gitlab:backup:restore   BACKUP=1656036972_2022_06_24_12.0.9

Do you want to continue (yes/no)? yes 输入yes

3. 重启 gitlab 
gitlab-ctl restart

书写gitlab备份脚本+定时任务
备份相关数据(根据gitlab版本选择不同的备份命令)
备份gitlab配置 ,给压缩包加上密码

自动备份脚本

#每天备份1次
#!/bin/bash
#1.备份gitlab数据
gitlab-backup create
#2.备份gitlab配置和密码文件
tar zcf /backup/gitlab/gitlab-conf-$(date +%F).tar.gz   /etc/gitlab/

书写恢复脚本
运行的时候显示可以恢复到哪一天?
显示 /var/opt/gitlab/backups/下面内容
让用户进行选择恢复到哪一天的?输入日期2023_03_27
然后进行恢复.
需要遵循以下升级步骤以确保主版本升级成功:
1.升级至之前主要版本的最新次要版本。  
2.升级到目标主要版本的第一个次要版本(X.0.Z)。
3.继续升级到较新的版本。

image-20240801143017820