由于当时使用的服务器电脑比较老旧,所以后期需要迁移到别的服务器,记录一下整体过程。
备份数据
首先要从源服务器备份数据,要求创建docker容器的时候,挂载本地目前,备份文件会直接放在本地路径。
# 进入docker 容器
sudo docker exec -it gitlab /bin/bash
# 备份数据
gitlab-rake gitlab:backup:create /var/opt/gitlab/backups/
# 备份成功后会有一个tar文件,本地挂载在/srv/gitlab/data/backups/
1639643527_2021_12_16_14.4.1_gitlab_backup.tar
迁移还原数据
在新的服务器上新建容器,要求是gitlab版本要跟之前的版本一致,不然恢复数据会出错。
# 新建容器后,把原服务器的备份文件远程拷贝过来
scp user@ip:/srv/gitlab/data/backups/1639643527_2021_12_16_14.4.1_gitlab_backup.tar /srv/gitlab/data/backups/
# 由于这些路径可能都没有权限,可以把文件先转到/tmp/下,上面的命令变为
scp user@ip:/tmp/1639643527_2021_12_16_14.4.1_gitlab_backup.tar /srv/gitlab/data/backups/
# 给予最高权限,防止权限不够
sudo chmod 777 1639643527_2021_12_16_14.4.1_gitlab_backup.tar
# 关闭数据服务
# 进入到docker容器下
sudo docker exec -it gitlab /bin/bash
# 关闭数据服务
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
# 还原数据
cd /var/opt/gitlab/backups/
gitlab-rake gitlab:backup:restore BACKUP=1639643527_2021_12_16_14.4.1
# 上面恢复命令,不要写文件的全全名,会自动拼接
# 恢复结束后,会提示config下的gitlab.rb和gitlab-secrets.json属于保密文件,手动备份和还原
也就是手动复制一份源服务器的文件到新服务器/srv/gitlab/config下
# 重启服务
gitlab-ctl reconfigure
gitlab-ctl restart
经过尝试,最后实现了,数据的全部迁移,包括用户的所有信息