Ubuntu上GitLab数据迁移步骤
迁移前必须确认新旧服务器GitLab版本完全一致(如旧服务器为14.8.2,新服务器需安装相同版本)。可通过以下命令查看旧版本:
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
若版本不一致,需先在新服务器安装对应版本(参考GitLab官方仓库下载对应deb包,或使用Omnibus脚本安装指定版本)。
使用GitLab内置工具创建完整备份,包含仓库、用户、CI/CD配置等所有数据:
sudo gitlab-rake gitlab:backup:create
默认备份文件会保存到/var/opt/gitlab/backups/目录,文件名格式为时间戳_日期_版本号_gitlab_backup.tar(如1715587200_2025-05-13_14.8.2_gitlab_backup.tar)。
在新Ubuntu服务器上安装与旧服务器相同版本的GitLab(以Omnibus包为例):
curl https://packages.gitlab.com/gpg.key | sudo apt-key add -echo "deb https://packages.gitlab.com/gitlab/gitlab-ce/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/gitlab.listsudo apt-get update && sudo apt-get install gitlab-ce/etc/gitlab/gitlab.rb,设置external_url 'http://新服务器IP:端口',然后执行sudo gitlab-ctl reconfigure使配置生效。将旧服务器/var/opt/gitlab/backups/目录下的备份文件复制到新服务器的相同路径(需确保新服务器有足够存储空间):
scp -r 旧服务器IP:/var/opt/gitlab/backups/*.tar 新服务器IP:/var/opt/gitlab/backups/
复制完成后,修改备份文件权限(确保git用户可读):
sudo chown -R git:git /var/opt/gitlab/backups/。
sudo gitlab-ctl stop unicorn && sudo gitlab-ctl stop sidekiqgitlab-rake命令恢复备份,BACKUP参数需替换为备份文件的时间戳部分(如1715587200):sudo gitlab-rake gitlab:backup:restore BACKUP=1715587200yes确认。/etc/gitlab/gitlab.rb(配置文件)和/etc/gitlab/ssl/(SSL证书,若有)复制到新服务器相同路径,确保服务配置一致。恢复完成后,重新加载配置并启动所有服务:
sudo gitlab-ctl reconfigure && sudo gitlab-ctl start
启动后检查服务状态:sudo gitlab-ctl status,确保所有服务(unicorn、sidekiq、nginx等)均为“run”状态。
http://新服务器IP:端口),使用旧服务器的管理员账号(如root)登录,确认账号信息一致。