gitlab的备份和还原

木木11个月前技术文章334

由于gitlab中存放的都是开发人员的工作成果,所以为了保证数据安全,我们会定期对数据进行备份,对gitlab进行备份将会创建一个包含所有库和附件的归档文件。对备份的恢复只能恢复到与备份时的gitlab相同的版本。将gitlab迁移到另一台服务器上的最佳方法就是通过备份和还原。gitlab提供了一个简单的命令行来备份整个gitlab ,并且能灵活的满足需求。

一、备份

备份路径:

备份文件将保存在配置文件中定义的backup_path中 ,文件名为TIMESTAMP_gitlab_backup.tar,TIMESTAMP为备份时的时间戳。TIMESTAMP的格式为 :EPOCH_YYYY_MM_DD_Gitlab‐version。

备份配置:

[root@zutuanxue git_data]# vim /etc/gitlab/gitlab.rb 
gitlab_rails['backup_path'] = "/opt/backups"
#备份路径
gitlab_rails['backup_keep_time'] = 604800
#备份周期-秒(7x24x3600)
[root@zutuanxue git_data]# gitlab-ctl reconfigure

手动备份:

[root@zutuanxue git_data]# gitlab-backup create
或者
[root@zutuanxue git_data]# gitlab-rake gitlab:backup:create
[root@zutuanxue git_data]# ls /opt/backups/

定时备份:

在定时任务里添加:

0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create

0 2 * * * /opt/gitlab/bin/gitlab-backup create

二、还原操作

只能还原到与备份文件相同的gitlab版本。执行恢复操作时,需要gitlab处于运行状态,备份文件位于gitlab_rails[‘backup_path’]。需要先停掉两个服务,停止连接到数据库的进程(也就是停止数据写入服务,如果是空主机,没有任何操作的话,可以不停止服务,停止相应服务的目的是为了保证数据移植),但是保持GitLab是运行的。

在web中删除项目

[root@zutuanxue backups]# gitlab-ctl stop unicorn
[root@zutuanxue backups]# gitlab-ctl stop sidekiq

指定时间戳你要从那个备份恢复:

[root@zutuanxue git_data]# cd /opt/backups/
[root@zutuanxue backups]# gitlab-ctl stop unicorn
ok: down: unicorn: 0s, normally up
[root@zutuanxue backups]# gitlab-ctl stop sidekiq
ok: down: sidekiq: 1s, normally up
[root@zutuanxue backups]# gitlab-rake gitlab:backup:restore BACKUP=1586328114_2020_04_08_12.9.2
(有的版本执行gitlab-rake gitlab:backup:restore BACKUP=1586328114即可)
Unpacking backup ... done
Before restoring the database, we will remove all existing
tables to avoid future upgrade problems. Be aware that if you have
custom tables in the GitLab database these tables and all data will be
removed.
Do you want to continue (yes/no)? yes
#提示移除所有存在的表
.
.
.
This task will now rebuild the authorized_keys file.
You will lose any data stored in the authorized_keys file.
Do you want to continue (yes/no)? yes
#提示移除所有验证秘钥
[root@zutuanxue backups]# gitlab-ctl restart#重启gitlab

注意:也可使用gitlab-rake gitlab:check SANITIZE=true验证下gitlab服务

浏览器重新打开gitlab页面,重新登录后查看到被还原的项目内容


返回列表

上一篇:git常用命令

下一篇:gitlab的部署

相关文章

大数据组件--Impala概述

Apache Impala是一个适用于实时交互的sql软件,是基于hive的大数据分析查询引擎,hive和impala有不同的侧重面,通常是两个互相配合工作,可以先用hive进行一个数据的预处理清洗转...

MySQL主从复制配置

一、master服务器配置1)用户添加及授权在master 服务器授权一个账户,拥有slave权限12mysql> GRANT REPLICATION SLAVE,REPLICATION CLI...

em升级&添加节点实践

em升级&添加节点实践

一、扩容前准备 1.格式化磁盘分区并挂载(1)设置gpt分区表          &nbs...

pod内无法访问slb的监听

pod内无法访问slb的监听

问题背景在A账号下的k8s集群中有个nginx 应用,需要去访问B账号下内网slb代理的一个服务。B账号下的slb有多条监听,测试发现只有个别监听可以telnet通,其余监听telnet均不通。可能是...

COS快照迁移ES集群

一、COS 全量快照备份基于 COS 快照的迁移方式是使用 ES 的 snapshot api 接口进行迁移,基本原理就是从源 ES 集群创建索引快照,然后在目标 ES 集群中进行恢复。通过 snap...

lvm介绍和常用命令

lvm介绍和常用命令

在分区的时候,每个分区应该分多大是令人头疼的,而且随着长时间的运行,分区不管你分多大,都会被数据给占满。当遇到某个分区不够用时管理员可能甚至要备份整个系统、清除硬盘、重新对硬盘分区,然后恢复数据到新分...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。