一、迁移前准备
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION查看源版本,目标服务器安装时选择对应版本。sudo gitlab-ctl stop unicorn和sudo gitlab-ctl stop sidekiq;使用内置工具创建完整备份,命令为sudo gitlab-backup create(默认生成/var/opt/gitlab/backups/目录下的时间戳命名tar包,包含仓库、数据库、上传文件等所有数据)。yum install gitlab-ce,Ubuntu使用apt install gitlab-ee);确保目标服务器有足够的磁盘空间(建议预留备份文件1.5倍以上空间)。二、数据迁移步骤
scp或rsync将源服务器的备份文件复制到目标服务器的/var/opt/gitlab/backups/目录(需确保目标目录属主为git用户,如chown git:git /var/opt/gitlab/backups/备份文件.tar)。例如:scp /var/opt/gitlab/backups/1672232546_2023_01_01_15.0.0_gitlab_backup.tar user@new-server:/var/opt/gitlab/backups/。sudo gitlab-backup restore BACKUP=1672232546。恢复过程会覆盖现有数据库,需确认覆盖(输入yes)。/etc/gitlab/gitlab.rb(配置文件)、/etc/gitlab/ssl(SSL证书)复制到目标服务器相同路径;同时复制数据目录/var/opt/gitlab/repositories(Git仓库)、/var/opt/gitlab/shared(附件、LFS文件)到目标服务器(可使用rsync -avz命令保持文件属性一致)。/etc/gitlab/gitlab.rb文件,修改数据库连接信息(若数据库仍在源服务器,需更新gitlab_rails['db_host']为新服务器IP;若数据库随GitLab迁移,需修改为localhost)、外部URL(external_url 'http://新服务器IP')等参数。sudo gitlab-ctl reconfigure应用配置更改(此命令会根据gitlab.rb生成新的配置文件);启动GitLab服务:sudo gitlab-ctl start(或重启服务:sudo gitlab-ctl restart)。三、迁移后验证
sudo gitlab-ctl status确认所有服务(如unicorn、sidekiq、postgresql)均处于run状态。external_url(如http://新服务器IP),登录GitLab账号,检查项目列表、用户权限、仓库代码、CI/CD配置等是否与源服务器一致。git clone测试仓库克隆功能;检查用户提交记录、Issue、Merge Request等是否完整;确认附件上传功能正常。