Qiuliang's Site

做一个独立思考和具备创新能力的人,打造谦逊和强大的内心

如何对gitlab server进行备份和恢复

基于gitlab社区版8.5.4

创建一个备份

gitlab为我们提供了一些方法来创建一个完整的备份,该备份文件是一个压缩包,名称类似于:[Timestamp]_gitlab_backup.tar 该备份文件包含了所有的DB数据、仓库文件、以及用户上传的一些附件。

进行一次备份: sudo gitlab-rake gitlab:backup:create

最终如果出现如下提示信息,则代表备份成功。

备份文件默认保存在如下目录:/var/opt/gitlab/backups,可通过编辑 /var/opt/gitlab/gitlab-rails/etc/gitlab.yml文件的Backup Settings节进行修改。

备份配置文件

db的授权文件和两步验证所需要的密钥信息存储在/etc/gitlab/gitlab-secrets.json文件中,需要单独备份。 gitlab.yml文件也不会包含在上面的备份文件中。

恢复gitlab

按照官方文档的要求,只能还原备份文件到同一版本的gitlab系统中。

先搭建一个同版本的gitlab到另外一台主机上。(具体安装步骤请参考官方文档)

环境准备完成后,执行如下命令: 1,拷贝备份文件到新的主机上。 2,停止相关服务 sudo gitlab-ctl stop unicorn sudo gitlab-ctl stop sidekiq 3,还原数据 gitlab-rake gitlab:backup:restore BACKUP=1457505197 4,启动 sudo gitlab-ctl start

做完上述操作后,查看系统数据都已经恢复,包括仓库、用户、分组等。

配置文件和secret文件的恢复需要手工操作。

其他实践

更改git data目录

为了保证数据的安全,一般我们会考虑把git的数据目录放到其他共享存储中,比如:NAS、Virtual SAN等,这时就需要我们修改gitlab中默认的data文件存储路径。

1,修改gitlab.rb文件中的 git-data-dir参数 2,gitlab-ctl reconfigure 3,gitlab-ctl start

自动备份

gitlab已经为我们提供了自动备份数据的解决方案,包括cron任务的管理、自动同步到第三方云存储(例如亚马逊AWS),具体参考:http://doc.gitlab.com/ce/raketasks/README.html 当然你也可以用其他方式来备份数据,例如我们的git server位于虚拟化环境,那么可以定期完全备份整个虚机和磁盘,恢复起来也很简单的方便。