gitLab数据备份和恢复
自建的Gitlab服务器常常会因为使用时间的增长,其空间容量等硬件需求都需要升级,或者迁移至更高配置的服务器上。备份、迁移、恢复、升级过程如下
一、gitlab备份
1、修改仓库存储位置
gitlab通过rpm包安装后,默认存储位置在/var/opt/gitlab/git-data/repositories,通常需要更改此路径到单独的一个分区来存储仓库的数据。
这里我把数据存放到/home/gitlab-data目录下
mkdir -p 即使上级目录不存在,会按目录层级自动创建目录
mkdir -p /home/gitlab-data
修改gitlab配置文件,找到git_data_dir
vim /etc/gitlab/gitlab.rb
重新加载配置
sudo gitlab-ctl reconfigure
重新加载后,会发现在/home/git-data目录下多出一个repositories目录
重启
sudo gitlab-ctl restart
2、修改备份文件目录
备份的位置可以更换,使用如下命令:(默认可以不修改,那么默认生成在/var/opt/gitlab/backups)
可以通过/etc/gitlab/gitlab.rb配置文件来修改默认存放备份文件的目录
vim /etc/gitlab/gitlab.rb
取消注释并修改为自定义备份路径 gitlab_rails['backup_path'] = "/home/gitlab-backups"
重读配置
sudo gitlab-ctl reconfigure
重启
sudo gitlab-ctl restart
3、通过gitlab-rake命令备份gitlab
备份时需要保持gitlab处于正常运行状态,直接执行gitlab-rake gitlab:backup:create进行备份(需要sudo权限,不然报错)
gitlab提供的备份命令为gitlab-rake,备份命令使用如下:
sudo gitlab-rake gitlab:backup:create使用以上命令会在/var/opt/gitlab/backups目录下创建一个名称类似为1530156812\_2018\_06\_28\_10.8.4\_gitlab\_backup.tar的压缩包,
这个压缩包就是Gitlab整个的完整部分, 其中开头的1530156812\_2018\_06\_28\_10.8.4是备份创建的日期;
该命令会备份gitlab仓库、数据库、用户、用户组、用户密钥、权限等信息。
备份完成后备份文件会出现在/var/opt/gitlab/backups/
红字部分表示 gitlab.rb 和 gitlab-secrets.json 两个文件包含敏感信息。未被备份到备份文件中。需要手动备份。
这两个文件在/etc/gitlab/ 目录下,我们进入目录使用cp命令复制到自定义的备份目录
cp gitlab.rb gitlab-secrets.json /home/gitlab-backups/
4、设置备份过期时间
[root@gitlab ~\]# vim /etc/gitlab/gitlab.rb
gitlab\_rails\['backup\_keep\_time'\] = 604800 #以秒为单位
5、自动备份方案
创建定时任务
[root@gitlab ~\]# crontab -e
0 2 \* \* \* /opt/gitlab/bin/gitlab-rake gitlab:backup:create
minute: 表示分钟,可以是从0到59之间的任何整数。
hour: 表示小时,可以是从0到23之间的任何整数。
day: 表示日期,可以是从1到31之间的任何整数。
month: 表示月份,可以是从1到12之间的任何整数。
week: 表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。
在书写 crontab 定时任务时,需要注意以下几个事项:
1、6 个选项都不能为空,必须填写。如果不确定,则使用"*"代表任意时间。
2、crontab 定时任务的最小有效时间是分钟,最大有效时间是月。像 2018 年某时执行、3 点 30 分 30 秒这样的时间都不能被识别。
3、在定义时间时,日期和星期最好不要在一条定时任务中出现,因为它们都以天为单位,非常容易让管理员混淆。
4、在定时任务中,不管是直接写命令,还是在脚本中写命令,最好都使用绝对路径。有时使用相对路径的命令会报错。
方法1.每天自动备份gitlab,并只保留近7天备份
编辑备份脚本vim /var/opt/gitlab/gitbackup.sh
# !/bin/bash
gitlab-rake gitlab:backup:create CRON=1
将该脚本加入crontab中执行,每天凌晨1点备份
crontab -e: //进入crontab编辑模式
0 1 * /var/opt/gitlab/gitbackup.sh &>/dev/null
vim /etc/gitlab/gitlab.rb
找到gitlab_rails['backup_keep_time'] = 604800取消注释,
gitlab-ctl reconfigure 重读配置
gitlab-ctl restart 重启
方法2.以实现每天凌晨4点进行一次自动备份为例,系统的crontab配置如下:
vim /etc/crontab
0 4 * * * root /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1
然后重启crontab服务,如下:
systemctl restart crond
二、gitlab仓库恢复
要验证gitlab备份的有效性,我们可以把该备份文件复制到已经安装好gitlab服务器的/var/opt/gitlab/backups/目录下。
然后进行数据恢复,最后访问并查看其数据完整性即可。
通过gitlab备份文件可以恢复gitlab所有的信息,包括仓库、数据库、用户、用户组、用户密钥、权限等信息。
ps:新服务器上的gitlab的版本号必须与创建备份时的gitlab版本号相同。
gitlab数据恢复比较简单,具体步骤如下:
1、停止相关数据连接服务
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
2、恢复gitlab仓库
进入/var/opt/gitlab/backups
现在我们要从1537261122_2018_09_18_9.2.5这个备份编号中,恢复数据,命令如下:
gitlab-rake gitlab:backup:restore BACKUP=1546916920_2019_01_08_10.5.1
按照提示输入两次yes并回车
如果出现多个done的信息,说明整个gitlab数据就已经正常恢复完毕。
4、恢复两个配置文件
我们进入备份目录使用cp命令复制到配置目录
cp gitlab.rb gitlab-secrets.json /etc/gitlab/
5、恢复完毕以后,我们现在来启动gitlab,使用以下命令:
gitlab-ctl start
三、gitlab迁移
迁移的整体思路是:
1、在新服务器上安装相同版本的gitlab
2、将备份生成的备份文件发送到新服务器的相同目录下
这里在10.0.0.6的机器上安装了相同版本的gitlab并能正常运行使用
在老服务器上将备份文件发送至新服务器的相应目录下,然后在使用恢复命令即可
gitLab数据备份和恢复相关推荐
- gitlab安装--数据备份迁移恢复
gitlab安装以及数据备份恢复 查看版本 cat /opt/gitlab/embedded/service/gitlab-rails/VERSION centos 7.6 1.添加镜像地址 #版本1 ...
- Salesforce 数据备份和恢复小知识
数据备份的类型 在Salesforce中可以使用多种API进行数据备份,它们是: REST API SOAP API Buik API Metadata API 数据备份有三种选择: 完全备份(Ful ...
- Oracle数据备份和恢复
文章目录 一.备份与恢复的概念 1.什么是备份 2.备份的方法 3.备份的策略 4.什么是恢复 5.恢复分类 二.逻辑备份和恢复 1.exp命令 2.imp命令 3.数据库实例导出和导入 4.用户的导 ...
- mysql TMM_mysql使用命令导出导入数据(数据备份、恢复)
1.使用mysql进行数据备份.恢复我们使用最多是的Navicat for MySQL客户端工具: 数据备份: DataBase(选中数据) – > Dump SQL File(转储SQL文件) ...
- 宝塔如何备份网站_宝塔面板教程:网站数据备份和恢复操作方法
宝塔面板对于老站长而言操作还是比较简单的,但是对于普通用户来说,操作服务器并不简单,关注了一下宝塔面板相关问题,发现有不少用户对于宝塔面板网站数据恢复方法不会操作,别担心,小编整理了一下可以操作方法, ...
- python之mysql数据备份和恢复
python之mysql数据备份和恢复 1. 数据的备份和恢复 1.1 数据备份 1.2 数据恢复 1. 数据的备份和恢复 下面的命令属于mysql特有的,不属于sql句. 1.1 数据备份 操作步骤 ...
- oracle数据备份 恢复,Oracle数据备份和恢复
Oracle数据库的备份和恢复有很多种方法,是一个很大的话题,足可以写一本书,但是,本文只介绍采用exp和imp进行数据备份和恢复,这也是程序员最常用的方法. 本文涉及的备份与恢复的其它概念都是狭义的 ...
- InfluxDB数据备份和恢复方法,支持本地和远程备份
本文属于< InfluxDB系列教程>文章系列,该系列共包括以下 17 部分: InfluxDB学习之InfluxDB的基本概念 InfluxDB学习之InfluxDB的基本操作 Infl ...
- Doris(五)-监控、报警、优化、数据备份及恢复
目录 1.监控和报警 1.1.Prometheus 1.2.Grafana 2.优化 2.1.查看 QueryProfile 2.1.1.使用方式 2.1.2.参数说明 2.1.3.调试方式 2.2. ...
最新文章
- matlab imnoise 用法,怎样使在matlab用imnoise函数啊 对图像有什么要求才能用imnoise函数...
- IntelliJ IDEA绑定Github报Error 403: Not Authorized没有授权问题解决方法
- Linux 新api eventfd(转)
- 在WPF的WebBrowser控件中抑制脚本错误
- 新闻发布项目——访问温馨提示
- UNITY关于阴影打开关闭的设置
- NHibernate 做个小项目来试一下吧 二
- java基于SSM房屋租赁管理系统
- Python web框架之tornado(龙卷风)
- [深度学习 - 实战项目] yoloV5人脸侦测arcFace人脸识别silentFace静态活体检测
- 苹果xr微信连不上服务器,苹果xr微信延迟的解决方法
- K8S查看容器日志、进入容器内部
- c++ LintCode刷题记录之52. 下一个排列
- G.726音频编解码原理介绍
- mhdd4.6修复坏道图解教程
- mysql 查询当月天数
- netstat -i和-s
- 了解一下智能机器人中,用到的三项关键技术
- 你画我猜微信小程序源码
- 三十岁了,从零开始学python还有前途吗?