[root@master ~]# cat /proc/version
Linux version 5.2.2-1.el7.elrepo.x86_64 (mockbuild@Build64R7) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC)) #1 SMP Sun Jul 21 04:19:28 EDT 2019
该操作系统属于红帽CentOS-7,内核版本为5.2.2。
gitlab-ce-11.5.0-ce.0.el7.x86_64.rpm
Gitlab的安装在之前的文章中就已经提及,不清楚的可以看前面的文章。如果是单纯的想迁移Gitlab的工作空间,可以看查看Gitlab服务器数据存储文件迁移这篇文章。
/etc/gitlab/gitlab.rb
/var/apps/gitlab/data
/var/apps/gitlab/backup
systemctl status firewalld
systemctl stop firewalld
systemctl start firewalld
fuser -v -n tcp [端口号]
firewall-cmd --add-port=[端口号]/tcp
firewall-cmd --list-port
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
gitlab-ctl reconfigure
gitlab-ctl start
/usr/bin/gitlab-rake gitlab:backup:create
gitlab-rake gitlab:backup:restore BACKUP=[备份版本号]
scp xac [用户名]@[目标服务器地址]:[目标路径]
执行备份
[root@master backup]# /usr/bin/gitlab-rake gitlab:backup:create
Dumping database ...
Dumping PostgreSQL database gitlabhq_production ... [DONE]
done
Dumping repositories ...
done
Dumping uploads ...
done
Dumping builds ...
done
Dumping artifacts ...
done
Dumping pages ...
done
Dumping lfs objects ...
done
Dumping container registry images ...
[DISABLED]
Creating backup archive: 1583302808_2020_03_04_11.5.0_gitlab_backup.tar ... done
Uploading backup archive to remote storage ... skipped
Deleting tmp directories ... done
done
done
done
done
done
done
done
Deleting old backups ... done. (0 removed)
备份后的备份文件如下:
[root@master backup]# ll
总用量 80
-rw-r--r--. 1 git git 81920 3月 4 14:20 1583302808_2020_03_04_11.5.0_gitlab_backup.tar
其中1583302808_2020_03_04_11.5.0
就是该备份文件的版本号。而我们后面的还原也将会应用到该版本号。
一般情况下,公司级别的Gitlab备份文件大小最起码也在1G以上,而假如说备份的服务器与需要还原的服务器本身并不是一台服务器,此时就需要我们进行两台服务器间的文件传输,如下:
scp xac [用户名]@[目标服务器地址]:[目标路径]
上面的用户名
指的是目标服务器的用户名,而目标服务器地址
就是目标服务器的IP地址,目标路径
,指的是我们要将文件发送到目标服务器的哪个文件夹路径下。
当我们点击【Enter】按键后,系统会提示让我们输入目标服务器的密码,正确填写上目标服务器的密码,我们就可以将备份文件发送到目标服务器上的指定目录。
为了方便大家知道我的Gitlab是如何配置的,现将我的配置信息公布如下:
# 本机IP访问地址
external_url 'http://192.168.75.128'
# 开启备份
gitlab_rails['manage_backup_path'] = true
# 备份路径
gitlab_rails['backup_path'] = "/var/apps/gitlab/backup"
# 备份权限码
gitlab_rails['backup_archive_permissions'] = 0644
# 备份文件保存周期(默认一周时间,单位秒)
gitlab_rails['backup_keep_time'] = 604800
# Gitlab工作空间路径
git_data_dirs({
"default" => {
"path" => "/var/apps/gitlab/data"
}
})
# unicorn端口号
unicorn['port'] = 10011
# Gitlab访问端口号
nginx['listen_port'] = 10010
# Gitlab节点端口号
node_exporter['listen_address'] = 'localhost:10012'
注意事项
重要的事情说三遍,那就是,还原会清空Gitlab工作空间原有的数据,因而谨慎!谨慎!再谨慎!!!
当我们确定要还原后,将还原文件放入Gitlab备份路径下,我们便可以执行下述还原指令:
gitlab-rake gitlab:backup:restore BACKUP=1583302808_2020_03_04_11.5.0
在还原的过程中,其会提示该操作会清空原有的数据信息,是否继续,如果确认要继续,直接输入yes
并回车。
当数据还原后结束后,系统会提示是否重建文件认证秘钥,该秘钥在如下文件中:
/etc/gitlab/gitlab-secrets.json
一般情况下,我们直接选择yes
并回车。
当我们看到下述信息时,这说明我们的Gitlab还原操作已经完成。
可能操作
[root@master backup]# fuser -v -n tcp 10010
用户 进程号 权限 命令
10010/tcp: root 14830 F.... nginx
gitlab-www 14980 F.... nginx
gitlab-www 14981 F.... nginx
如果要是存在端口号被占用的情况,需要我们杀掉相应的进程
kill -9 [进程号]
假如说如果要是在一台服务器上备份,在另外一台服务器中还原,则需要我们将访问的端口号直接暴漏在外网中,也就是说需要将端口号10010
暴漏在外网中。
firewall-cmd --add-port=10010/tcp
[root@master backup]# firewall-cmd --list-port
8083/tcp 10010/tcp
当我们执行完上述操作后,我们就可以通过如下地址直接访问Gitlab
http://192.168.75.128:10010
而账号与密码还是原来Gitlab的账号与密码。至此,我们已经完成Gitlab的备份与还原。