如何对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位于虚拟化环境,那么可以定期完全备份整个虚机和磁盘,恢复起来也很简单的方便。