记一次Gitlab的数据迁移
2020/3/13 8:02:21
本文主要是介绍记一次Gitlab的数据迁移,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
前因
作为一个垃圾佬,云服务器那么贵的事,当然不会考虑高性能的,所以之前一只在洋垃圾工作站上搭建了内网的Gitlab,公网访问使用一个低配服务器做内网穿透使用,问题比较多,频繁掉线,家里断电,猫踩到工作站(机箱上真暖和)导致工作站关机都会导致服务中断。趁着各大云厂商服务器降价,采购了一个2C4G的云服务器,用作GItlab的服务器,而且还能玩玩其他的。
迁移准备
为了迁移顺利做了两手准备
- 将整个虚拟机磁盘文件备份
- 将整个gitlab的数据目录备份
由于之前用的docker版的gitlab,所以备份工作比较顺利
在云服务器上安装docker等必要软件,此时不得不吐槽251大厂的外网速度,docker按照官方教程下载了2个小时
开始迁移
旧服务器数据备份
进入docker内
gitlab-backup create STRATEGY=copy
会有以下警告,大意是说敏感性信息不会包含在备份中(gitlab.rb,gitlab-secrets.json)
Warning: Your gitlab.rb and gitlab-secrets.json files contain sensitive data
and are not included in this backup. You will need these files to restore a backup.
Please back them up manually.
推送备份到目标服务器
scp /var/opt/gitlab/backups/* root@xxx.xxx.xxx.xxx:/srv
推送docker-compose.yml到目标服务器
scp /usr/local/docker/gitlab/docker-compose.yml root@xxx.xxx.xxx.xxx:/srv
启动目标服务器的Gitlab
docker-compose up -d
复制备份到backups
这一步注意,是复制到docker内的/var/opt/gitlab/backups
开始还原
例如你的备份文件叫 1583931743_2020_03_11_12.6.1_gitlab_backup.tar
则还原只需要
gitlab-backup restore BACKUP=1583931743_2020_03_11_12.6.1
也就是他会默认加上_gitlab_backup.tar
然后坑的地方来了。这个就尴尬了,然后还原失败。
由于我安装的镜像tag 是 latest
原服务器Gitlab版本 : 12.6.1
目标服务器GItlab版本:12.8.6
下载12.6.1太慢了,国内的网哦,一言难尽,所以我选择将原服务器的Gitlab镜像打包,传到目标服务器
打包原服务器Gitlab镜像,并推送
docker save -o gitlab-ce-lastest.tar gitlab/gitlab-ce:latest scp gitlab-ce-lastest.tar root@xxx.xxx.xxx.xxx:/srv
目标服务器load镜像
先删除原来的镜像,load,然后查看以下是不是完成了,最后一定要改tag
docker rmi gitlab/gitlab-ce:latest docker load --input gitlab-ce-lastest.tar docker ps docker tag gitlab/gitlab-ce:latest gitlab/gitlab-ce:12.6.1-ce.0
接下来就要先删除原来运行的数据,我的在/srv/gitlab 中,注意别把备份删了
利用docker-compose 启动镜像
启动完成后,再次操作还原,就可以还原回来了。
最后处理
备份的时候说了,不会处理gitlab.rb , gitlab-secrets.json
所以目标服务器依然需要改一下gitlab.rb
,最少external_url
需要改一下
反思
docker一定不要用latest
作为迁移而言,哪怕迁移失败,也要保证原数据没问题,原数据一定要提前先备份,以防不测。
附件
修正过后的 docker-compose.yml
version: '3' services: gitlab: image: 'gitlab/gitlab-ce:12.6.1-ce.0' container_name: "gitlab" restart: always hostname: 'gitlab' environment: TZ: 'Asia/Shanghai' ports: - '80:80' - '443:443' - '22:22' volumes: - /srv/gitlab/config:/etc/gitlab - /srv/gitlab/data:/var/opt/gitlab - /srv/gitlab/logs:/var/log/gitlab
这篇关于记一次Gitlab的数据迁移的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-24Java中定时任务实现方式及源码剖析
- 2024-11-24Java中定时任务实现方式及源码剖析
- 2024-11-24鸿蒙原生开发手记:03-元服务开发全流程(开发元服务,只需要看这一篇文章)
- 2024-11-24细说敏捷:敏捷四会之每日站会
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解