操作系统:redhat6.8
当前gitlab版本:8.7
目标gitlab版本:8.7
要求:要做gitlab迁移
迁移最基本的条件:gitlab版本相同,Gitlab一键安装包
第一步,在原服务器上做gitlab备份
gitlab-rake gitlab:backup:create
以上命令会在gitlab的默认备份目录 创建一个备份文件
/var/opt/gitlab/backups
备份目录可以在gitlab的配置文件中做更改
配置文件 : /etc/gitlab/gitlab.rb
修改完成之后用 gitlab-ctl reconfigure 命令重载配置即可
Gitlab自动备份可利用crontab来配置
实现每天凌晨2点进行一次自动备份:通过crontab 使用备份命令实现
crontab -e
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create
第二步 在新的服务上做恢复
迁移跟在原服务器上做恢复是一样的,把备份后的文件通过scp命令发送到新的服务器
执行恢复命令即可
恢复之前先停止相关数据连接服务
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
执行恢复命令
chmod 777 1506348434_gitlab_backup.tar
gitlab-rake gitlab:backup:restore BACKUP=1506348434
最好把原gitlab的配置文件和nginx配置文件也覆盖到新的服务器上
/etc/gitlab/所有文件
/var/opt/gitlab/nginx/conf
这些文件特别重要,如果是迁移后一切正常只是打开项目时
报500错误,查询错误日志发现如下
cat /var/log/gitlab/gitlab-rails/production.log
这是gitlab迁移数据的一个缺陷
解决办法:拷贝原gitlab配置文件/etc/gitlab/gitlab-secrets.json覆盖新的服务器上后执行下面命令
CE版本执行(gitlab社区版)
gitlab-rails runner "Project.where.not(import_url: nil).each { |p| p.import_data.destroy if p.import_data }"
EE版本执行(gitlab企业版)
gitlab-rails runner "Project.where(mirror: false).where.not(import_url: nil).each { |p| p.import_data.destroy if p.import_data }"
至此 迁移工作完成
参考文献:
http://www.xuliangwei.com/xubusi/803.html
http://blog.csdn.net/csfreebird/article/details/8475941
GitLab升级维护及升级后报500错误
http://www.joomla178.com/joomla-share/research-and-development/648-gitlab-upgrade-problem.html