迁移流程(无损操作)
第一步:旧系统备份准备 (在源服务器操作)
# 1. 查找 Gerrit 安装目录和配置文件
sudo find / -path '*gerrit*' -name gerrit.config 2>/dev/null
# 示例输出:/home/gerrit/review_site/etc/gerrit.config
# 2. 停止 Gerrit 服务
sudo service gerrit stop
# 3. 备份关键数据(假设安装目录为 /home/gerrit)
sudo tar -czvf gerrit_backup_full.tar.gz \
--exclude="*/cache/*" \
/home/gerrit \
/etc/gerrit \
/var/log/gerrit \
/etc/init.d/gerrit \
/etc/default/gerritcodereview
# 4. 备份数据库(根据实际类型)
# MySQL 备份(如果使用MySQL)
sudo mysqldump -u root -p gerrit_db > gerrit_db.sql
# 或 PostgreSQL
sudo -u postgres pg_dump gerrit_db > gerrit_db.sql
# 5. 打包所有备份
sudo tar -cvf final_backup.tar.gz gerrit_backup_full.tar.gz gerrit_db.sql
第二步:数据迁移到新系统
# 方法1:SCP 传输
scp -r final_backup.tar.gz user@new-server-ip:~
# 方法2:使用外部硬盘
# 将 final_backup.tar.gz 复制到U盘
第三步:新系统恢复 (目标服务器)
# 1. 安装相同版本 Java (Gerrit 2.x 需 Java 8)
sudo apt update
sudo apt install openjdk-8-jdk -y
# 2. 恢复目录结构
sudo tar -xvf final_backup.tar.gz
sudo tar -xzvf gerrit_backup_full.tar.gz -C /
# 3. 恢复数据库
# MySQL
sudo mysql -u root -p -e "CREATE DATABASE gerrit_db"
sudo mysql -u root -p gerrit_db < gerrit_db.sql
# PostgreSQL
sudo -u postgres psql -c "CREATE DATABASE gerrit_db"
sudo -u postgres psql -d gerrit_db -f gerrit_db.sql
# 4. 安装 Gerrit(版本必须与旧系统一致)
# 获取旧版本号(在源服务器查)
# java -jar /path/to/gerrit.war --version
wget https://gerrit-releases.storage.googleapis.com/gerrit-<version>.war
sudo java -jar gerrit-<version>.war init --batch -d /home/gerrit/review_site
# 5. 恢复配置文件
sudo cp -r /etc/gerrit/* /home/gerrit/review_site/etc/
sudo chown -R gerrit:gerrit /home/gerrit
# 6. 修正启动脚本权限
sudo chmod +x /etc/init.d/gerrit
sudo update-rc.d gerrit defaults
第四步:系统适配与启动
# 1. 修改 gerrit.config (如新IP地址)
sudo nano /home/gerrit/review_site/etc/gerrit.config
# 更新:
# [gerrit]
# baseUrl = http://新服务器IP:8080
# [auth]
# gitBasicAuth = true
# 2. 重建索引(关键步骤)
cd /home/gerrit/review_site
sudo -u gerrit java -jar bin/gerrit.war reindex
# 3. 启动服务
sudo service gerrit start
# 4. 验证状态
tail -f /home/gerrit/review_site/logs/error_log
关键配置修复
- SSH 密钥修复
# 复制旧系统的SSH密钥到相同位置
sudo cp /backup/home/gerrit/review_site/etc/ssh_host_* /home/gerrit/review_site/etc/
sudo chown gerrit:gerrit /home/gerrit/review_site/etc/ssh_host_*
- 邮箱配置修复
# 检查邮件设置(如 sendemail)
sudo nano /home/gerrit/review_site/etc/gerrit.config
# [sendemail]
# smtpServer = smtp.youremail.com
# smtpUser = your@email.com
- 防火墙开放端口
sudo ufw allow 8080/tcp # HTTP
sudo ufw allow 29418/tcp # SSH
验证迁移成功
- 访问
http://新服务器IP:8080
- 测试代码仓库克隆:
git clone "ssh://用户@新服务器IP:29418/项目名"
- 执行管理员操作验证权限系统
⚠️ 灾难恢复提示:迁移前务必备份整个
/home/gerrit
和数据库。若遇启动失败,在 gerrit 用户下运行:cd /home/gerrit/review_site bin/gerrit.sh --console-log restart
通过此流程,可确保 Gerrit 的所有配置、仓库数据和用户权限完整迁移,无需重新配置系统。