由于公司要降低成本,某机柜不想租了,原来的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