一键安装Gitlab后的备份、迁移与恢复

简介:

1.Gitlab创建备份

1
#gitlab-rake gitlab:backup:create

使用以上命令会在/var/opt/gitlab/backups目录下创建一个名称类似为1393513186_gitlab_backup.tar的压缩包这个压缩包就是Gitlab整个的完整部分其中开头的1393513186是备份创建的日期。

2.Gitlab恢复

1
2
3
4
5
6
7
8
9
# 停止相关数据连接服务
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
  
# 从1393513186编号备份中恢复
gitlab-rake gitlab:backup:restore BACKUP=1393513186
 
# 启动Gitlab
sudo  gitlab-ctl start

3.Gitlab迁移

迁移如同备份与恢复的步骤一样只需要将老服务器/var/opt/gitlab/backups目录下的备份文件拷贝到新服务器上的/var/opt/gitlab/backups即可(如果你没修改过默认备份目录的话)。但是需要注意的是新服务器上的Gitlab的版本必须与创建备份时的Gitlab版本号相同比如新服务器安装的是最新的8.5版本的Gitlab, 那么迁移之前最好将老服务器的Gitlab 升级为8.5再进行备份。

4.自动备份

通过crontab使用备份命令实现自动备份:

1
2
sudo  su  -
crontab  -e

例如加入以下, 实现每天凌晨2点进行一次自动备份:

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

4.注意事项

①添加这项是因为添加自动备份后的几天时间里,Gitlab所在的KVM一直宕机。通过模拟cron计划任务,发现第一条gitlab创建备份的过程是先备份出许多(db、repo等文件),再通过这些文件合并成一个备份压缩包,最后删除文件,只剩一个备份压缩包。这就相当于先产生2倍备份压缩包,导致磁盘爆满。恢复也是同样的过程。

1
2
3
Unpacking backup ...  tar : 1479265387_gitlab_backup. tar : Cannot  open : Permission denied
tar : Error is not recoverable: exiting now
unpacking backup failed

迁移的备份文件权限不足,可以给足权限,然后再恢复。


③恢复过程中遇到一个错误:

1
2
3
4
5
6
7
8
9
10
11
12
Started GET  "/EagleEye/BMH.EagleEye"  for  127.0.0.1 at 2016-10-25 10:54:32 +0800
Processing by ProjectsController #show as HTML
   Parameters: { "namespace_id" => "EagleEye" "id" => "BMH.EagleEye" }
Completed 500 Internal Server Error  in  215ms (ActiveRecord: 19.5ms)
 
OpenSSL::Cipher::CipherError (bad decrypt):
   app /models/project .rb:383: in  `import_url'
   app /models/project .rb:413: in  `external_import?'
   app /models/project .rb:405: in  ` import ?'
   app /models/project .rb:421: in  `import_in_progress?'
   app /controllers/projects_controller .rb:93: in  `show'
   lib /gitlab/middleware/go .rb:16: in  `call'

系统是centos 6.2的 ,gitlab是8.8.5迁移到另外一台服务器上的,其它页面都可以正常显示,但是一点击项目就会显示500,。查看/var/log/gitlab/gitlab-rails/production.log日志,发现上述错误 。

通过搜索知道,这是gitlab数据迁移时的一个缺陷。解决方法:

1、覆盖原来gitlab的 db_key_base 到新的gitlab 

db_key_base  位置在 /etc/gitlab/gitlab-secrets.json  

2、EE版本执行
sudo gitlab-rails runner "Project.where(mirror: false).where.not(import_url: nil).each { |p| p.import_data.destroy if p.import_data }"

CE版本执行
sudo gitlab-rails runner "Project.where.not(import_url: nil).each { |p| p.import_data.destroy if p.import_data }"

重启gitlab,发现500错误不见,项目能访问到。


      本文转自YU文武貝 51CTO博客,原文链接:http://blog.51cto.com/linuxerxy/1865414,如需转载请自行联系原作者






相关文章
|
6月前
|
Linux 应用服务中间件 网络安全
linux安装Gitlab
linux安装Gitlab
169 0
|
5月前
|
运维 Java Devops
阿里云云效操作报错合集之在进行GitLab代码分支迁移时遇到报错,一般是什么原因
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
6月前
|
jenkins 持续交付 开发工具
【gitlab】旧的gitlab项目迁移新的gitlab
【gitlab】旧的gitlab项目迁移新的gitlab
1041 0
|
3月前
|
Shell Docker 容器
GitlabCI学习笔记之一:安装Gitlab和GitLabRunner
GitlabCI学习笔记之一:安装Gitlab和GitLabRunner
|
2月前
|
Docker 容器
Docker安装Gitlab和Gitlab-Runner并实现项目CICD
Docker安装Gitlab和Gitlab-Runner并实现项目CICD
|
4月前
|
Devops 持续交付 开发工具
入职必会-开发环境搭建54-GitLab下载和安装
GitLab 是一个基于 web 的 Git 仓库管理工具,提供了代码托管、版本控制、协作开发、持续集成等功能,是一个综合的 DevOps 平台。用户可以使用 GitLab 托管他们的代码仓库,并利用其丰富的功能来管理和协作开发项目。 以下是 GitLab 的一些主要特点和功能。
入职必会-开发环境搭建54-GitLab下载和安装
|
3月前
|
Ubuntu 安全 网络安全
在Ubuntu 16.04上安装和配置GitLab的方法
在Ubuntu 16.04上安装和配置GitLab的方法
72 0
|
3月前
|
存储 Ubuntu 安全
在Ubuntu 18.04上安装和配置GitLab的方法
在Ubuntu 18.04上安装和配置GitLab的方法
64 0
|
3月前
|
缓存 Kubernetes Shell
CI/CD:安装配置Gitlab Runner
CI/CD:安装配置Gitlab Runner
315 0
|
5月前
|
持续交付 开发工具 git
阿里云云效产品使用问题之在云效代码域中gitlab使用docker安装的,迁移时遇到“获取企业信息失败”,是什么原因
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。