首页 > 其他分享 >Gitlab 系列2 --- 备份和恢复

Gitlab 系列2 --- 备份和恢复

时间:2023-01-01 22:24:26浏览次数:61  
标签:gitlab 备份 Gitlab --- etc ctl sudo backup

一、背景

Gitlab 系列1 --- 安装

二、备份

1. 备份相关的配置

在Gitlab配置/etc/gitlab/gitlab.rb中,与备份相关的配置主要集中在### Backup Settings中,如下图:

(1) 备份种类

Gitlab的配置主要分为配置和数据(包括数据库和附件)。上图的配置主要适用于数据备份。

(2) 数据备份存放路径

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

(3) Gitaly软件路径

Gitlab的备份任务使用Gitaly创建和恢复仓库的备份。

gitlab_rails['backup_gitaly_backup_path'] = /opt/gitlab/embedded/bin/gitaly-backup

(4) 备份存活时间

默认604800秒,即7天时间。

gitlab_rails['backup_keep_time'] = 604800

该配置项同时适用于配置和数据备份。当运行备份任务时(比如gitlab-ctl backup-etc命令),超过'backup_keep_time'指定时间的备份将会被删除。

如果你不希望删除过期的备份,在命令后添加--no-delete-old-backups参数:

sudo gitlab-ctl backup-etc --no-delete-old-backups

2. 备份配置文件

(1) 所有的配置文件都保存在 /etc/gitlab 目录下。

(2) 如果希望备份全部的配置文件,可以直接运行以下命令:

sudo gitlab-ctl backup-etc

该命令会将配置文件创建成一个tar文件并存放在/etc/gitlab/config_backup/目录下,如果你想指定保存tar文件的目录,则运行:

sudo gitlab-ctl backup-etc --backup-path <DIRECTORY>

(3) 最少备份

/etc/gitlab/gitlab-secrets.json
/etc/gitlab/gitlab.rb

3. 备份数据文件

(1). 备份文件格式:

[TIMESTAMP]_gitlab_backup.tar

 例如:1493107454_2018_04_25_10.6.4-ce_gitlab_backup.tar,TIMESTAMP是1493107454_2018_04_25_10.6.4-ce,它实际上包含了软件版本号。

(2) 备份命令

sudo gitlab-backup create

该命令包含如下参数:

a. STRATEGY

当执行备份命令的时候,如果此时数据有改变,则备份程序会报"file changed as we read it"错误并引起备份失败。如果在备份过程中添加以下参数可以避免该问题的出现:

sudo gitlab-backup create STRATEGY=copy

该参数会使备份程序通过复制数据文件到一个临时目录的方式来避免该问题,当然副作用也是显而易见的,这种方式会导致2倍的存储空间占用。

b. 自定义备份文件名称

上面我们提到备份文件格式,我们可以通过指定BACKUP参数来覆盖[TIMESTAMP]参数:

sudo gitlab-backup create BACKUP=dump

这样,生成出的文件名为:

dump_gitlab_backup.tar

c. 增量备份

sudo gitlab-backup create INCREMENTAL=yes PREVIOUS_BACKUP=<timestamp_of_backup>

INCREMENTAL=yes意思是启用增量备份;

PREVIOUS_BACKUP是指定上一次备份的[TIMESTAMP],也就是备份文件的前缀。

d. 备份文件权限

默认情况下,备份文件的权限为0600,即只允许创建者读写;我们在配置文件/etc/gitlab/gitlab.rb中将权限改为“允许创建者读写,允许其他用户读取”0644:

gitlab_rails['backup_archive_permissions'] = 0644
sudo gitlab-ctl reconfigure

4. 恢复Gitlab

(1) 如果是做Gitlab的迁移,那么首先需要恢复配置文件,并应用新的配置:

sudo cp /etc/gitlab/gitlab-secrets.json /etc/gitlab/gitlab-secrets.json.bak
sudo cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb.bak

sudo mv -rf gitlab-secrets.json /etc/gitlab/gitlab-secrets.json
sudo mv -rf gitlab.rb /etc/gitlab/gitlab.rb

重新配置:

sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart

检查配置结果:

sudo gitlab-rake gitlab:check SANITIZE=true

(2) 首先需要准备好备份文件,备份文件默认存储在Gitlab宿主机的 /var/opt/gitlab/backups目录下:

/var/opt/gitlab/backups/11493107454_2018_04_25_10.6.4-ce_gitlab_backup.tar

(3) 备份文件需要指定所有者为git:

sudo chown git:git /var/opt/gitlab/backups/11493107454_2018_04_25_10.6.4-ce_gitlab_backup.tar

(4) 暂停puma和sidekiq

sudo gitlab-ctl stop puma
sudo gitlab-ctl stop sidekiq

校验:

sudo gitlab-ctl status

(5) 恢复数据

sudo gitlab-backup restore BACKUP=11493107454_2018_04_25_10.6.4-ce

(6) 重启服务

sudo gitlab-ctl restart
sudo gitlab-ctl status

三、使用Crontab创建定时任务进行自动备份

1. 编辑crontab配置:

sudo su -
crontab -e

2. 在配置文件中添加:

0 2 * * * /opt/gitlab/bin/gitlab-backup create CRON=1

该行显示为每天2点进行自动备份。

四、参考

https://docs.gitlab.com/omnibus/settings/backups.html

https://docs.gitlab.com/ee/raketasks/backup_restore.html

标签:gitlab,备份,Gitlab,---,etc,ctl,sudo,backup
From: https://www.cnblogs.com/eagle6688/p/17015813.html

相关文章

  • Metagenome宏基因组 singularity 容器安装使用 2022.12.29 -2022.01.01
    exportPATH=/home/ubuntu/software:$PATH#PATH=PWD:$PATHcondacreat-cbioconda-nname_envsfastqc#conda子环境安装fastqccondaactivatename_envs#切换到子环境......
  • Codeforces Round #840 (Div. 2) and Enigma 2022 - Cybros LNMIIT A--B
    ​​https://codeforces.com/contest/1763​​A.AbsoluteMaximization二进制操作经典的利用二进制位数操作的题,|和&。最大值肯定是所有元素的或。最小值是所有元素的与......
  • POST 四种常见的Content-Type
    ​​HTTP/1.1协议​​规定的HTTP请求方法有OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT这几种。其中POST一般用来向服务端提交数据,本文主要讨论POST提......
  • C语言--函数2--递归2
    递归--判断一个一维数组是否递增#include<stdio.h>#defineN5//判断一个一维数组是否递增/*Judge_dz:判断一个一维数组是否递增@a:一维数组名@n:元素个数返回值:无*......
  • day13-功能实现12
    家居网购项目实现012以下皆为部分代码,详见https://github.com/liyuelian/furniture_mall.git29.功能27-Ajax检验注册名29.1需求分析/图解用户注册时,后端通过验证,提......
  • 数据结构-绪论
    一.数据结构在学什么1.如何用程序代码把现实世界的问题信息化2.如何用计算机高效的处理这些信息从而创造价值二.数据结构的基本概念1.数据数据是信息的载体,是描述事物......
  • 17、前端基础-ES6---Object对象优化
    ......
  • leetcode-605. 种花问题
    605.种花问题-力扣(Leetcode)下面是中间有0的情况下,可以种植的个数102031415262738394两边边界问题,左边我使用begin往后挪了两位后认为是1,右边往......
  • 【2022年年终总结-个人】
    先反问自己除专业和工作外,业余时间在干什么呢?手机有哪些必备应用呢?每日是否在荒废时间呢?生于忧患是否是时刻在准备着?在过去的一年里对家或对社会做了哪些贡献?提升了哪些生......
  • 深入理解Linux内核(4)---中断和异常(x86平台)
    本文是ULKIntel80x86ARM中断通常分为同步中断(synchronous)(asynchronous)同步中断:CPUCPU异步中断:CPUIntel微处理器手册中,把同步和异步中断分别称为异常(exception)(inte......