介绍
介绍
由于gitlab占用内存太高了,福哥打算把它迁移到一个托管服务器上面去,笔记托管服务器机器是自己的内存可以随便扩展嘛。
为了避免出现问题,福哥的目标gitlab使用了和源gitlab一样的版本,这里稍微费了点事。
大家跟着福哥学学如何迁移Gitlab的数据吧!
迁移
源gitlab
当前状态
这是福哥的源gitlab,里面已经有一些仓库了。
查看版本
使用如下命令查看旧版本的版本号,因为gitlab不同版本之间的数据是不兼容的,所以我们必须使用相同版本的gitlab去安装目标gitlab。
docker exec gitlab cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
备份
进入gitlab容器里面。
docker exec -ti gitlab bash
执行gitlab-rake命令进行整体备份。
gitlab-rake gitlab:backup:create
备份文件存储在/var/opt/gitlab/backups/下面。
目标gitlab
拉取镜像
福哥从hub.docker.com里找到了gitlab-ce的12.1.3的tag。
福哥拉取了12.1.3版本的gitlab-ce镜像。
docker pull gitlab/gitlab-ce:12.1.3-ce.0
启动
使用如下命令启动gitlab容器,将9091端口映射出来。(这个9091端口是福哥选择的gitlab端口,后面福哥会把gitlab默认端口80改成9091)
docker run -tid --name gitlab -h gitlab --publish 9091:9091 --restart always --memory 4g --memory-swap -1 gitlab/gitlab-ce:12.1.3-ce.0
进入gitlab容器。
docker exec -ti gitlab bash
打开/etc/gitlab/gitlab.rb配置文件,更改gitlab默认端口。
sed -i "s/# nginx\['listen_port'\].*/nginx\['listen_port'\] = 9091/" /etc/gitlab/gitlab.rb | grep listen_port
更新gitlab配置。
gitlab-ctl reconfigure
重新启动gitlab服务。
gitlab-ctl restart
初始化密码
这里设置root密码。
安装完毕
现在目标gitlab安装完毕!
复制备份文件
从源gitlab的备份目录下面把备份好的tar压缩包复制到新gitlab相同目录下面。
停止gitlab数据操作服务
gitlab-ctl stop unicorn gitlab-ctl stop sidekiq
恢复
授权压缩包777权限,要不会提示拒绝访问。
执行如下命令恢复数据,可以看到BACKUP参数是压缩包文件名的“_gitlab_backup.tar”前面的部分。
gitlab-rake gitlab:backup:restore BACKUP=1662706721_****_09_09_12.1.3
重启gitlab
现在可以重启gitlab了!
gitlab-ctl restart
最新状态
可以看到目标gitlab里面可以看到全部的内容。
总结
今天福哥带着大家学会了迁移Gitlab仓库数据、用户数据的方法。Gitlab比较恶心的是,它虽然有一个git-data目录,但是即使把它映射出来,在Gitlab重构之后还是无法识别,原来是因为Gitlab在推广一个教Gitaly的东西。
哎,慢慢来吧~~