亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

記一次Gitlab的數據遷移

標簽:
Docker 運維

前因

作为一个垃圾佬,云服务器那么贵的事,当然不会考虑高性能的,所以之前一只在洋垃圾工作站上搭建了内网的Gitlab,公网访问使用一个低配服务器做内网穿透使用,问题比较多,频繁掉线,家里断电,猫踩到工作站(机箱上真暖和)导致工作站关机都会导致服务中断。趁着各大云厂商服务器降价,采购了一个2C4G的云服务器,用作GItlab的服务器,而且还能玩玩其他的。

迁移准备

为了迁移顺利做了两手准备

  1. 将整个虚拟机磁盘文件备份
  2. 将整个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/* [email protected]:/srv

推送docker-compose.yml到目标服务器

scp /usr/local/docker/gitlab/docker-compose.yml [email protected]:/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 [email protected]:/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
點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
JAVA開發工程師
手記
粉絲
2673
獲贊與收藏
170

關注作者,訂閱最新文章

閱讀免費教程

  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消