centos gitlab如何迁移数据
导读:CentOS环境下GitLab数据迁移详细步骤 一、迁移前准备工作 确认环境兼容性:确保新旧服务器均为CentOS系统(版本需匹配,如CentOS 7→CentOS 7或CentOS 8→CentOS 8),且新服务器硬件配置满足GitL...
CentOS环境下GitLab数据迁移详细步骤
一、迁移前准备工作
- 确认环境兼容性:确保新旧服务器均为CentOS系统(版本需匹配,如CentOS 7→CentOS 7或CentOS 8→CentOS 8),且新服务器硬件配置满足GitLab运行要求(如内存≥4GB、磁盘空间≥100GB)。
- 安装必要依赖:在新服务器上安装GitLab依赖包,避免后续安装失败:
yum install -y policycoreutils openssh-server openssh-clients postfix systemctl enable sshd & & systemctl start sshd # 启用SSH服务(用于传输文件) systemctl enable postfix & & systemctl start postfix # 启用邮件服务(用于GitLab通知) - 备份旧服务器数据:迁移前必须完整备份旧服务器的所有GitLab数据,防止数据丢失。
二、旧服务器数据备份
GitLab数据主要分为三类,需分别备份:
- 完整备份(推荐):使用GitLab自带的
gitlab-rake工具创建包含数据库、仓库、配置等的完整备份,备份文件默认存储在/var/opt/gitlab/backups目录:# 停止GitLab相关服务(确保数据一致性) gitlab-ctl stop unicorn gitlab-ctl stop sidekiq # 创建备份(备份文件名为时间戳格式,如171017_120000_gitlab_backup.tar) gitlab-rake gitlab:backup:create # 启动服务(备份完成后恢复) gitlab-ctl start - 手动备份关键目录:若需更灵活的迁移,可手动备份以下目录(包含代码仓库、配置、附件等):
- 代码仓库:
/var/opt/gitlab/git-data/repositories - 数据库:
/var/opt/gitlab/postgresql(PostgreSQL数据目录) - 用户与权限:
/var/opt/gitlab/users - 配置文件:
/etc/gitlab/gitlab.rb、/etc/gitlab/gitlab-secrets.json(密钥文件,务必备份)
使用rsync命令(保留权限):
rsync -aHAX /var/opt/gitlab/git-data/repositories/ /tmp/git_repos_backup/ rsync -aHAX /etc/gitlab/gitlab.rb /tmp/git_config_backup/ - 代码仓库:
三、新服务器环境准备
- 安装GitLab:在新服务器上安装与旧服务器完全相同版本的GitLab(版本不一致可能导致数据结构不兼容):
# 添加GitLab官方YUM仓库 curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash # 安装GitLab CE(社区版) yum install -y gitlab-ce - 配置基础参数:编辑
/etc/gitlab/gitlab.rb,设置外部访问URL(需与旧服务器一致,避免用户访问中断):external_url 'http://新服务器IP' # 若用HTTPS,需配置SSL证书路径
四、数据迁移到新服务器
方案1:使用完整备份恢复(推荐,最简便)
- 传输备份文件:将旧服务器的备份文件(
/var/opt/gitlab/backups下的.tar文件)复制到新服务器的相同目录:scp root@旧服务器IP:/var/opt/gitlab/backups/171017_120000_gitlab_backup.tar root@新服务器IP:/var/opt/gitlab/backups/ - 恢复备份:
- 停止GitLab服务:
gitlab-ctl stop unicorn gitlab-ctl stop sidekiq - 恢复备份(需指定备份文件名,无需写完整路径):
gitlab-rake gitlab:backup:restore BACKUP=171017_120000 # 171017_120000为备份文件名(不含.tar后缀) - 启动GitLab服务:
gitlab-ctl start
- 停止GitLab服务:
方案2:手动迁移关键目录(适用于自定义配置或部分迁移)
- 传输备份目录:将旧服务器的手动备份目录复制到新服务器:
rsync -aHAX -e ssh /tmp/git_repos_backup/ root@新服务器IP:/var/opt/gitlab/git-data/repositories/ rsync -aHAX -e ssh /tmp/git_config_backup/gitlab.rb root@新服务器IP:/etc/gitlab/ - 恢复数据库(若手动备份了数据库目录):
- 停止PostgreSQL服务:
gitlab-ctl stop postgresql - 替换数据目录(确保权限正确):
rm -rf /var/opt/gitlab/postgresql/* rsync -aHAX -e ssh /tmp/git_db_backup/ root@新服务器IP:/var/opt/gitlab/postgresql/ - 启动PostgreSQL服务:
gitlab-ctl start postgresql
- 停止PostgreSQL服务:
五、迁移后配置与验证
- 调整配置文件:若新服务器的IP、域名或端口发生变化,需修改
/etc/gitlab/gitlab.rb中的以下参数:external_url 'http://新服务器IP:新端口' # 如80→8080,需同步修改SSH端口(若用SSH克隆) gitlab_rails['gitlab_shell_ssh_port'] = 新端口 # 若SSH端口变更 - 重新配置GitLab:使配置生效:
gitlab-ctl reconfigure # 重新生成配置文件 gitlab-ctl restart # 重启所有服务 - 验证迁移结果:
- Web端:访问
http://新服务器IP,使用旧服务器的用户名/密码登录,检查项目、用户、权限是否正常。 - Git操作:在本地仓库执行
git clone http://新服务器IP/项目路径.git,测试提交(git push)和拉取(git pull)功能。 - 日志检查:查看GitLab日志,确认无报错:
gitlab-ctl tail # 实时查看所有服务日志
- Web端:访问
注意事项
- 版本一致性:新旧服务器GitLab版本必须相同(如16.11.2→16.11.2),若版本不同,需先升级旧服务器至目标版本再迁移。
- 数据一致性:备份和恢复过程中,需停止GitLab相关服务(如
unicorn、sidekiq),避免数据写入导致不一致。 - 权限问题:使用
rsync时添加-aHAX参数,保留文件权限和属主(如git用户对仓库的读写权限)。 - SELinux:若新服务器开启SELinux,需调整备份目录的SELinux上下文(如
chcon -R -t var_opt_t /var/opt/gitlab),避免权限拒绝。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos gitlab如何迁移数据
本文地址: https://pptw.com/jishu/729411.html
