GitLab 迁移

老服务器(公司内部服务器),迁移至 云服务器。
注:请把下面 1.1.1.1 替换成你的 IP 地址。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# ################### 1. 新服务器 - 安装 gitlab ###############################################################################################

# 安装依赖(适配 TencentOS)
sudo yum install -y curl policycoreutils-python-utils openssh-server postfix

# 下载安装包
wget https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/7/gitlab-ce-15.0.2-ce.0.el7.x86_64.rpm/download.rpm
mv download.rpm gitlab-ce-15.0.2-ce.0.el7.x86_64.rpm

# 手动强制安装 RPM 包(忽略依赖)
sudo rpm -ivh --nodeps ./gitlab-ce-15.0.2-ce.0.el7.x86_64.rpm
sudo EXTERNAL_URL="http://1.1.1.1" gitlab-ctl reconfigure
》》》...这里耐心等待(gitlab比较重,启动服务较多,比较耗时)
》》》gitlab Reconfigured!

# 重启
sudo gitlab-ctl restart

# 检查服务状态(依赖很多模块,所以,启动时间长)
sudo gitlab-ctl status
》》》run: alertmanager: (pid 663258) 15s; run: log: (pid 657153) 216s
》》》run: gitaly: (pid 663291) 15s; run: log: (pid 653554) 333s
》》》run: gitlab-exporter: (pid 663317) 14s; run: log: (pid 656514) 232s
》》》run: gitlab-kas: (pid 663321) 14s; run: log: (pid 654035) 319s
》》》run: gitlab-workhorse: (pid 663354) 14s; run: log: (pid 655886) 252s
》》》run: grafana: (pid 663364) 13s; run: log: (pid 658645) 167s
》》》run: logrotate: (pid 663387) 13s; run: log: (pid 653286) 345s
》》》run: nginx: (pid 663417) 12s; run: log: (pid 656080) 246s
》》》run: node-exporter: (pid 663426) 12s; run: log: (pid 656278) 240s
》》》run: postgresql: (pid 663480) 11s; run: log: (pid 653783) 326s
》》》run: prometheus: (pid 663482) 11s; run: log: (pid 656896) 222s
》》》run: puma: (pid 663527) 10s; run: log: (pid 655510) 264s
》》》run: redis: (pid 663633) 9s; run: log: (pid 653377) 341s
》》》run: redis-exporter: (pid 663650) 9s; run: log: (pid 656630) 228s
》》》run: sidekiq: (pid 663748) 6s; run: log: (pid 655687) 258s

# 测试访问
curl http://1.1.1.1






# ################### 2. 旧服务器 - 备份、迁移 ###############################################################################################

# 版本
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
》》》15.0.2

# 备份
sudo gitlab-rake gitlab:backup:create

# 查看备份文件
ll -h /var/opt/gitlab/backups/
》》》-rw------- 1 git git 1.5G 8月 5 17:47 1754387230_2025_08_05_15.0.2_gitlab_backup.tar

# 停止
sudo gitlab-ctl stop

# 从旧服务器复制(在旧服务器执行)
sudo scp /var/opt/gitlab/backups/1754445372_2025_08_06_15.0.2_gitlab_backup.tar root@1.1.1.1:/var/opt/gitlab/backups/
sudo scp /etc/gitlab/gitlab-secrets.json root@1.1.1.1:/etc/gitlab/
sudo scp /etc/gitlab/gitlab.rb root@1.1.1.1:/etc/gitlab/



# ################### 3. 新服务器 - 数据恢复 ###############################################################################################

# 在新服务器修改配置(确保 external_url 正确)
sudo vi /etc/gitlab/gitlab.rb
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart

# 确保备份文件权限正确
sudo chown git:git /var/opt/gitlab/backups/1754445372_2025_08_06_15.0.2_gitlab_backup.tar

# 执行恢复(使用实际备份文件名,无需包含路径和扩展名)--- 会清空现有的所有数据,根据备份来恢复
sudo gitlab-rake gitlab:backup:restore BACKUP=1754445372_2025_08_06_15.0.2

# 恢复完数据,再重启一下
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart

# 测试访问
curl http://1.1.1.1