06 Jul 2018
假设备份文件名称是 1493107454_2018_04_25_10.6.4-ce_gitlab_backup.tar(文件格式:[TIMESTAMP]_gitlab_backup.tar),则备份时间戳是1493107454_2018_04_25_10.6.4-ce。
备份的tar文件是在backup_path定义的目录中。
因为一直都是在用gitlab rpm安装,所以下面只讨论yum或rpm安装的gitlab的文件备份方式
gitlab-rake gitlab:backup:create # 如果是docker版本的备份 docker exec -it <name of container> gitlab-backup create # 如果gitlab是12.1和之前的版本 # docker exec -it <name of container> gitlab-rake gitlab:backup:create
sudo su - crontab -e
增加下面的内容到cron定时任务中
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1
在/etc/gitlab/gitlab.rb中可以配置定时产生的备份文件保留时间
# limit backup lifetime to 7 days - 604800 seconds gitlab_rails['backup_keep_time'] = 604800
注意点:除了生成数据备份之外,认证文件也需要备份一下
/etc/gitlab/gitlab-secrets.json
# 关闭访问数据库的服务 gitlab-ctl stop unicorn gitlab-ctl stop sidekiq # 恢复数据 gitlab-rake gitlab:backup:restore BACKUP=1493107454_2018_04_25_10.6.4-ce # 如果是docker版本恢复 # docker容器中的git用户的uid和gid是998,可以通过下面命令查看 # docker exec -it <cotainer-name> id git # 得到git用户的uid后,需要给备份tar文件修改属主属组,不然会有权限报错 chown 998.998 </path/to/your-git-backup-file> docker exec -it <name of container> gitlab-backup restore BACKUP=1493107454_2018_04_25_10.6.4-ce # 如果gitlab是12.1和之前的版本 # docker exec -it <cotainer-name> gitlab-rake gitlab:backup:restore BACKUP=1493107454_2018_04_25_10.6.4-ce
备份恢复必须要同样的gitlab版本
BACKUP=timestamp_of_backup,不需要指定文件名称,只需要指定timestamp就可以
参考文档
总结就是,
值得注意的是:gitlab每次升级完,第一次启动,会自动进行升级动作。所以只需要按照官方推荐的升级节奏,小版本升级 - 大版本升级,即可