Docker 中 Gitlab 数据的备份和迁移

简介: 备份gitlab数据,并进行迁移恢复

背景

博主有一个阿里云的Centos服务器,虽然早听说了centos8不再提供支持的消息,但是一直也没有管自己的云服务,直到前几天阿里云打电话提醒尽快变更系统。刚好春节趁着没事,倒腾一下服务器。

服务器刚好也要到期了,本来我是打算新购一台,然后直接通过内网迁移数据的,但是发现有老用户续费有福利(云服务器ECS新春特惠)。3年老用户可以便宜两三百,每天还有抽奖。行吧,直接续费刚好也备份到本地一份数据。

其实如果数据单独一个云盘的话,完全没有那么麻烦,因为我使用的服务道是docker的,数据全部映射在宿主机上,单独云盘的话,只要系统盘一换,直接docker服务启动就完事了。当初为了省一些花销就直接在系统盘放数据。平时拿云服务只要是放个人的gitlab仓库,主要的数据也是这一块。

备份和验证

首先备份gitlab数据,通过gitlab的指令就可以了。

docker exec -t gitlab gitlab-rake gitlab:backup:create

如果你的docker容器名name不是gitlab的话,上面的命令自行修改一下。

随着CPU一阵飙升,等待完成就可以了。备份数据在容器的 /var/opt/gitlab/backups 目录下,如果你映射到了宿主机,就到指定的位置找就可以,文件名类似这样时间戳日期加gitlab版本号这样的: 1643891119_2022_02_03_13.12.7_gitlab_backup.tar

需要注意的是:

一些配置文件并不会被备份,需要自己手动备份一下 gitlab.rbgitlab-secrets.json

Deleting old backups ... skipping
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.
Backup task is done.

配置文件

如果需要拷贝文件,文件比较大的情况下呢,拷贝后建议还是算一下md5做个一致性比较

md5sum -b gitlab/data/backups/1643891119_2022_02_03_13.12.7_gitlab_backup.tar 

md5sum

下载到本地验证使用的wsl命令行,当然用git bash也是可以的。

恢复

创建好同一版本的gitlab服务之后,无论是docker还是直接部署的服务,将备份文件放到同样的 backups目录下,执行恢复命令即可。

首先在新机器拉取同版本gitlab并创建容器,我的是13.12.7若不清楚具体版本号可以前往下面地址查询。
https://hub.docker.com/r/gitlab/gitlab-ce/tags

hostname是你的域名,容器创建根据自己需要进行参数修改和调整,特别注意版本一致。

docker pull gitlab/gitlab-ce:13.12.7-ce.0

docker run --detach \
  --hostname git.xxx.xxx \
  --publish 4433:443 --publish 8082:80 --publish 33:22 \
  --name gitlab \
  --restart always \
  --volume /work/gitlab/config:/etc/gitlab \
  --volume /work/gitlab/logs:/var/log/gitlab \
  --volume /work/gitlab/data:/var/opt/gitlab \
  gitlab/gitlab-ce:13.12.7-ce.0

先进入容器停止相关数据连接服务

docker exec -it gitlab /bin/bash
gitlab-ctl stop puma
gitlab-ctl stop sidekiq

backups目录下只有一个备份文件时,可以使用以下命令:

gitlab-rake gitlab:backup:restore

停止服务

恢复备份

恢复完成后,启动服务

gitlab-ctl start

另外若有多个,可以使用参数,从指定时间戳的备份恢复

gitlab-rake gitlab:backup:restore BACKUP=1643891119

恢复完成后访问验证,看服务是否正常。

其他版本恢复

若使用非原版本的备份恢复就会出现:

恢复出错

这样问题的处理思路是先用同版本恢复,然后按照升级的方式来。

就是一点点升级版本,不要跨大版本升级:

如上方我的版本是13.12.7,可以先升级到13.12的最后一个版本13.12.15

docker pull gitlab/gitlab-ce:13.12.15-ce.0

然后删除旧容器,创建新拉的这个版本的容器,然后宿主机的数据就会被清洗为这个版本的,等待启动后,访问验证服务。

接下来继续升级

14.0.0 -> 14.1.0 -> 14.1.8 -> 14.2.0 -> 14.2.7 -> 14.6.1

这个版本一般按照第三个小版本从0到最后一个,然后升级中间的版本号,就不会错。具体的还是要看容器能不能跑起来。14.1.0无法直接到14.2.0但是,我试了14.2.7却可以直接到14.6.1

最后不要忘了清理一下垃圾镜像

清理垃圾镜像

相关文章
|
1月前
|
存储 数据管理 应用服务中间件
Docker的数据管理实战篇
关于Docker数据管理实战的教程,涵盖了Docker数据卷的使用、特点、场景以及数据卷容器的概念和应用。
51 13
Docker的数据管理实战篇
|
12天前
|
存储 Docker 容器
Docker工作目录迁移
Docker工作目录迁移
|
2月前
|
存储 Linux Docker
备份和迁移Docker容器
【8月更文挑战第21天】在Linux系统中,备份与迁移Docker容器可通过以下步骤实现:首先,查找并记录需备份容器的ID或名称;其次,若容器正在运行,则需先停止;最后利用`docker export`命令将其导出为tar归档文件以完成备份。对于容器迁移,有两种常见方式:一是直接迁移备份文件至目标服务器,并通过`docker import`命令导入新容器;二是通过创建容器镜像,并推送至镜像仓库,之后在目标服务器上拉取该镜像并运行。值得注意的是,在进行容器迁移时应确保Docker版本兼容,同时关注数据存储、网络配置及权限设置等问题,以保障容器功能正常运作。
|
2月前
|
存储 Docker 容器
在Docker中,容器退出后,通过docker ps命令查看不到,数据会丢失么?
在Docker中,容器退出后,通过docker ps命令查看不到,数据会丢失么?
|
3月前
|
Shell Linux Docker
docker常用命令大全(基础、镜像、容器、数据卷)
这些命令仅仅是 Docker 命令行工具的冰山一角,但对于日常操作来说已经非常全面。通过熟练地使用这些基础命令,用户可以有效地管理 Docker 的镜像、容器、数据卷和网络。随着用户对 Docker 的深入使用,更高级的命令和选项将会变得必需,但上面列出的命令已经为用户提供了一个坚实的起点。对于初学者来说,理解和掌握这些常用命令是深入学习 Docker 的基础。
282 5
docker常用命令大全(基础、镜像、容器、数据卷)
|
1月前
|
Docker 容器
Docker安装Gitlab和Gitlab-Runner并实现项目CICD
Docker安装Gitlab和Gitlab-Runner并实现项目CICD
|
2月前
|
Kubernetes Unix Linux
k8s将节点容器运行时从Docker迁移到Containerd
k8s将节点容器运行时从Docker迁移到Containerd
|
3月前
|
存储 NoSQL Redis
如何修改docker默认数据目录
【7月更文挑战14天】
112 3
|
3月前
|
存储 开发者 Docker
|
4月前
|
持续交付 开发工具 git
阿里云云效产品使用问题之在云效代码域中gitlab使用docker安装的,迁移时遇到“获取企业信息失败”,是什么原因
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
下一篇
无影云桌面