由于当时使用的服务器电脑比较老旧,所以后期需要迁移到别的服务器,记录一下整体过程。

备份数据

首先要从源服务器备份数据,要求创建docker容器的时候,挂载本地目前,备份文件会直接放在本地路径。

  1. # 进入docker 容器
  2. sudo docker exec -it gitlab /bin/bash
  3. # 备份数据
  4. gitlab-rake gitlab:backup:create /var/opt/gitlab/backups/
  5. # 备份成功后会有一个tar文件,本地挂载在/srv/gitlab/data/backups/
  6. 1639643527_2021_12_16_14.4.1_gitlab_backup.tar

迁移还原数据

在新的服务器上新建容器,要求是gitlab版本要跟之前的版本一致,不然恢复数据会出错。

  1. # 新建容器后,把原服务器的备份文件远程拷贝过来
  2. scp user@ip:/srv/gitlab/data/backups/1639643527_2021_12_16_14.4.1_gitlab_backup.tar /srv/gitlab/data/backups/
  3. # 由于这些路径可能都没有权限,可以把文件先转到/tmp/下,上面的命令变为
  4. scp user@ip:/tmp/1639643527_2021_12_16_14.4.1_gitlab_backup.tar /srv/gitlab/data/backups/
  5. # 给予最高权限,防止权限不够
  6. sudo chmod 777 1639643527_2021_12_16_14.4.1_gitlab_backup.tar
  7. # 关闭数据服务
  8. # 进入到docker容器下
  9. sudo docker exec -it gitlab /bin/bash
  10. # 关闭数据服务
  11. gitlab-ctl stop unicorn
  12. gitlab-ctl stop sidekiq
  13. # 还原数据
  14. cd /var/opt/gitlab/backups/
  15. gitlab-rake gitlab:backup:restore BACKUP=1639643527_2021_12_16_14.4.1
  16. # 上面恢复命令,不要写文件的全全名,会自动拼接
  17. # 恢复结束后,会提示config下的gitlab.rb和gitlab-secrets.json属于保密文件,手动备份和还原
  18. 也就是手动复制一份源服务器的文件到新服务器/srv/gitlab/config
  19. # 重启服务
  20. gitlab-ctl reconfigure
  21. gitlab-ctl restart

经过尝试,最后实现了,数据的全部迁移,包括用户的所有信息