前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一键安装Gitlab后的备份、迁移与恢复

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

作者头像
一条老狗
发布2019-12-26 11:51:29
2.1K0
发布2019-12-26 11:51:29
举报
文章被收录于专栏:极客运维极客运维

gitlab简介

GitLab,是一个使用 Ruby on Rails 开发的开源应用程序,与Github类似,能够浏览源代码,管理缺陷和注释,非常适合在团队内部使用。

gitlab是基于Ruby on Rails的,安装和配置非常麻烦,源码安装 GitLab 步骤繁琐:需要安装依赖包,Mysql,Redis,Postfix,Ruby,Nginx……安装完毕还得一个个手动配置这些软件。源码安装容易出错,不顺利的话,一天都搞不定。源码最大的好处是私人定制,如果不做定制化,还是使用官方推荐的 omnibus packages 方式安装,或者直接安装社区版,还附带中文汉化。安装相关可查看:https://gitlab.com/larryli/gitlab,这里不再做过多叙述。

gitlab备份

代码语言:javascript
复制
gitlab-rake gitlab:backup:create

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

gitlab恢复

代码语言:javascript
复制
# 停止相关数据连接服务
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq

# 从1393513186编号备份中恢复
gitlab-rake gitlab:backup:restore BACKUP=1393513186

# 启动Gitlab
sudo gitlab-ctl start

gitlab迁移

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

注意事项

1. gitlab在创建备份的过程中会先备份出许多(db、repo等文件),再通过这些文件合并成一个备份压缩包,最后删除文件,只剩一个备份压缩包。这就相当于先产生2倍备份压缩包,导致磁盘爆满。恢复也是同样的过程。所以最好预留足够大的备份空间。


2.

代码语言:javascript
复制
Unpacking backup ... tar: 1479265387_gitlab_backup.tar: Cannot open: Permission denied
tar: Error is not recoverable: exiting now
unpacking backup failed

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


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

代码语言:javascript
复制
Started GET "/EagleEye/BMH.EagleEye" for 127.0.0.1 at 2016-10-25 10:54:32 +0800Processing 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版本执行

代码语言:javascript
复制
sudo gitlab-rails runner "Project.where(mirror: false).where.not(import_url: nil).each { |p| p.import_data.destroy if p.import_data }"

CE版本执行

代码语言:javascript
复制
sudo gitlab-rails runner "Project.where.not(import_url: nil).each { |p| p.import_data.destroy if p.import_data }"

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-07-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 极客运维 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档