阅读量:37
1. 迁移前准备
- 版本一致性检查:确认新旧服务器GitLab版本完全一致(如15.0.0),避免因版本差异导致数据兼容性问题。可通过
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION查看旧版本,新服务器安装时选择对应版本。 - 依赖与环境准备:在新服务器安装GitLab运行所需依赖(如CentOS系统执行
yum install policycoreutils openssh-server openssh-clients postfix),并启动SSH、Postfix服务(systemctl enable --now sshd postfix)。
2. 旧服务器数据备份
- 完整备份命令:使用GitLab自带工具创建全量备份,包含项目代码、数据库、配置等所有数据。执行
sudo gitlab-rake gitlab:backup:create,默认生成备份文件存放在/var/opt/gitlab/backups/目录,文件名格式为时间戳_版本号_gitlab_backup.tar(如1712345678_15.0.0_gitlab_backup.tar)。 - 备份文件传输:通过
scp命令将备份文件复制到新服务器指定目录(如/var/opt/gitlab/backups/)。示例:scp /var/opt/gitlab/backups/1712345678_15.0.0_gitlab_backup.tar root@新服务器IP:/var/opt/gitlab/backups/,输入新服务器密码完成传输。
3. 新服务器GitLab安装
- 版本匹配安装:在新服务器下载与旧服务器完全一致的GitLab RPM包(如CentOS 8使用
wget https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/8/gitlab-ce-15.0.0-ce.0.el8.x86_64.rpm),添加GitLab仓库并安装:rpm -ivh gitlab-ce-15.0.0-ce.0.el8.x86_64.rpm。 - 基础配置修改:编辑
/etc/gitlab/gitlab.rb文件,设置外部访问URL(external_url 'http://新服务器IP')和备份路径(gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"),确保路径与旧服务器一致。
4. 数据恢复操作
- 权限调整:修改备份文件权限,避免恢复时因权限不足失败。执行
cd /var/opt/gitlab/backups && chmod 777 1712345678_15.0.0_gitlab_backup.tar。 - 停止关联服务:停止GitLab的Unicorn(Web服务)和Sidekiq(后台任务)服务,确保数据恢复时无写入冲突。执行
sudo gitlab-ctl stop unicorn && sudo gitlab-ctl stop sidekiq。 - 执行恢复命令:使用
gitlab-rake工具恢复备份,指定备份文件编号(如1712345678_15.0.0)。执行sudo gitlab-rake gitlab:backup:restore BACKUP=1712345678_15.0.0,按提示输入yes确认恢复。 - 重启GitLab服务:恢复完成后,启动GitLab所有服务:
sudo gitlab-ctl start,并通过sudo gitlab-ctl status检查服务状态(应为run)。
5. 验证与测试
- 功能测试:访问新服务器GitLab页面(
http://新服务器IP),使用旧服务器账号登录,验证以下内容:- 项目列表、代码仓库是否完整;
- 提交、拉取、合并请求等核心功能是否正常;
- 用户权限、群组设置是否与旧服务器一致。
- 数据一致性检查:随机抽查几个项目的
git log,确认提交历史未被篡改;检查数据库中的用户、项目关联信息是否与旧服务器一致。