由于公司要降低成本,某机柜不想租了,原来的gitlab服务要迁移到另外一台服务器中。

查看原来docker 跑的gitlab命令

 1#vim ~/.bash_profile
 2alias runlike="docker run --rm -v /var/run/docker.sock:/var/run/docker.sock assaflavie/runlike"
 3
 4source ~/.bash_profile
 5
 6runlike -p `gitlab的容器id`
 7
 8# 过滤处理 得到 原来的跑的 docker run 语句 ,也可以用pip install runlike 工具
 9
10docker run  -itd --name=gitlab --hostname=xxxx.com -v /srv/gitlab/logs:/var/log/gitlab  -v /srv/gitlab/data:/var/opt/gitlab  -v /srv/gitlab/config:/etc/gitlab -p 8022:22 -p 8024:443 -p 8023:80 
11--restart=always gitlab/gitlab-ce:14.0.12-ce.0

备份原来的服务器

1cat /etc/gitlab/gitlab.rb
2
3# gitlab_rails['backup_path'] = "/var/opt/gitlab/backups/gitlab"
 1gitlab-backup create  #进行备份 得到一个 tar 文件  12.1之后的版本
 2# gitlab-rake gitlab:backup:create # 早期版本 12.1之前的 
 3
 4# 对下面2个配置文件 单独进行备份
 5gitlab-secrets.json 
 6gitlab.rb
 7# 将上面 3个文件copy 到远程主机,推荐用rsync 
 8
 9配置文件备份
10# gitlab-ctl backup-etc  
11# 或者备份 /etc/gitlab 整个配置目录 是一样的效果 

新服务器启动gitlab 进行备份恢复,重启docker

1docker run  -itd --name=gitlab --hostname=xxx.com -v /srv/gitlab/logs:/var/log/gitlab  -v /srv/gitlab/data:/var/opt/gitlab  -v /srv/gitlab/config:/etc/gitlab -p 8022:22 -p 8024:443 -p 8023:80 --restart=always gitlab/gitlab-ce:14.0.12-ce.0
进入容器,停止一些服务
1gitlab-ctl stop puma
2gitlab-ctl stop sidekiq
copy tar备份文件到 新配置文件中的 backup_path中
copy后只有一个tar文件
开始恢复备份
1gitlab-backup restore 
2# gitlab-rake gitlab:backup:restore  和上面的命令等价

输入2个yes

Warning: Your gitlab.rb and gitlab-secrets.json files contain sensitive data and are not included in this backup. You will need to restore these files manually.

备份文件恢复完成,copy 2个配置文件
1sudo mv gitlab.rb gitlab_back.rb
2cd /tmp
3sudo mv gitlab.rb   /srv/gitlab/config/
4cd /srv/gitlab/config/
5sudo mv gitlab-secrets.json gitlab-secrets_back.json
6sudo mv /tmp/gitlab-secrets.json  ./
重启gitlab docker

非docker安装方式:

备份和恢复使用的版本要一致

还原相关配置文件后,执行gitlab-ctl reconfigure

确保gitlab正在运行状态

修改域名转发upstream

新版本恢复

 1#恢复前先停止两个服务
 2[root@ubuntu1804 ~]#gitlab-ctl stop puma
 3[root@ubuntu1804 ~]#gitlab-ctl stop sidekiq
 4#恢复时指定备份文件的时间部分,不需要指定文件的全名
 5[root@ubuntu1804 ~]#gitlab-backup restore BACKUP=备份文件名的时间部分
 6#示例
 7[root@ubuntu1804 ~]#gitlab-backup restore BACKUP=1583562898_2020_03_07_11.11.8
 8#Next, restore /etc/gitlab/gitlab-secrets.json if necessary, as previously 
 9mentioned.Reconfigure, restart and check GitLab:
10[root@ubuntu1804 ~]#gitlab-ctl reconfigure
11[root@ubuntu1804 ~]#gitlab-ctl restart
12#后续检查可选做
13[root@ubuntu1804 ~]#gitlab-rake gitlab:check SANITIZE=true
14#In GitLab 13.1 and later, check database values can be decrypted especially if 
15/etc/gitlab/gitlab-secrets.json was restored, or if a different server is the 
16target for the restore.
17[root@ubuntu1804 ~]#gitlab-rake gitlab:doctor:secrets