备份
对gitlab进行备份将会创建一个包含所有库和附件的归档文件。对备份的恢复只能恢复到与备份时的gitlab相同的版本。将gitlab迁移到另一台服务器上的最佳方法就是通过备份和还原。
备份时间戳
从gitlab 9.2版本开始,时间戳格式由EPOCH_YYYY_MM_DD更改为EPOCH_YYYY_MM_DD_Gitlab-version。
备份文件将保存在gitlab.yml文件中定义的backup_path中,文件名为TIMESTAMP_gitlab_backup.tar,TIMESTAMP为备份时的时间戳。
使用omnibus软件包安装的
sudo gitlab-rake gitlab:backup:create
使用源码安装的
sudo -u git -H bundle exec rake gitlab:backup:create RAILS_ENV=production [git@localhost ~/gitlab]$bundle exec rake gitlab:backup:create RAILS_ENV=production
在docker中运行的gitlab
docker exec -t <container name> gitlab-rake gitlab:backup:create
备份后文件目录(根据配置,默认)
[git@localhost ~/gitlab]$cd tmp/backups/ [git@localhost ~/gitlab/tmp/backups]$ls 1498833975_gitlab_backup.tar
排除特定目录
可以通过加环境变量skip来选择要备份的内容。可用的选项有:
db (数据库) uploads (附件) repositories (Git repositories 数据) builds (CI job output logs) artifacts (CI job artifacts) lfs (LFS objects) registry (Container Registry images) pages (Pages content)
指定多个选项使用逗号分隔。
omnibus版本安装
sudo gitlab-rake gitlab:backup:create SKIP=db,uploads
源码安装
sudo -u git -H bundle exec rake gitlab:backup:create SKIP=db,uploads RAILS_ENV=production
使用crontab定时备份
omnibus版本
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1
源码安装,这里环境变量根据自己的实际更改,要让定时脚本能找到mysqldump命令等,最好写个脚本,将输出重定向到文件,下面这样比较乱
[root@localhost /data/script]#cat backup_git.sh #!/bin/bash #run this script as git PATH=/usr/local/ruby/bin:/usr/local/redis-6379/bin:/usr/local/nginx/sbin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin mkdir -p /home/git/gitlab/tmp/backups fun_backup_git() { cd /home/git/gitlab bundle exec rake gitlab:backup:create RAILS_ENV=production CRON=1 } fun_backup_git &>> /home/git/gitlab/tmp/backups/backup.log ####################### [root@localhost /data/script]#cat /etc/crontab 0 2 * * * git /bin/bash /data/script/backup_git.sh 备份后的目录 [root@localhost /home/git/gitlab/tmp/backups]#ll total 64 -rw-r--r-- 1 git git 61440 Jul 9 16:35 1499589324_gitlab_backup.tar -rw-r--r-- 1 git git 380 Jul 9 16:35 backup.log
环境变量CRON=1的作用是如果没有任何错误发生时, 抑制备份脚本的所有进度输出。
建议将/etc/gitlab备份到安全的地方。如果要还原gitlab应用程序,还需要还原gitlab-secrets.json。如果没有,那么使用双重身份验证的GitLab用户将无法访问GitLab服务器,而存储在GitLab中的“安全变量”将被丢失。
恢复
只能还原到与备份文件相同的gitlab版本。
源码安装的
[root@localhost ~/lnmpr]#service gitlab stop Stopping unicorn: [ OK ] Stopping sidekiq: [FAILED] [root@localhost ~/lnmpr]#su - git [git@localhost ~]$cd gitlab [git@localhost ~/gitlab]$ls app config db Gemfile Guardfile log Procfile README.md vendor bin config.ru doc Gemfile.lock lib MAINTENANCE.md public spec VERSION CHANGELOG CONTRIBUTING.md features GITLAB_SHELL_VERSION LICENSE PROCESS.md Rakefile tmp [git@localhost ~/gitlab]$bundle exec rake gitlab:backup:restore RAILS_ENV=production BACKUP=1498833975 #指明还原时间点
确保备份文件位于gitlab_rails['backup_path']。
–
参考文档:备份
–
–
–
评论前必须登录!
注册