Gitlab数据备份
docker exec -it gitlab /bin/bash
# 备份数据库和配置文件
root@gitlab:/# gitlab-rake gitlab:backup:create
# 查看备份文件
root@gitlab:/# ls /opt/gitlab/gitlab/data/backups/
1614663214_2021_03_02_11.1.4
备份文件命名由备份时间和当前gitlab版本组成
备份文件路径:
容器内:/var/opt/gitlab/backups/
若生成docker容器时做过数据卷则数据在数据卷中:/opt/gitlab/gitlab/data/backups/
Gitlab数据迁移
注:数据迁移需使用相同版本,版本查看可使用命令cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
查看
将备份好的数据,放入新服务器的备份文件路径下
docker exec -it gitlab /bin/bash
# 停止数据相关服务
root@gitlab:/# gitlab-ctl stop unicorn
root@gitlab:/# gitlab-ctl stop sidekiq
# 验证
root@gitlab:/# gitlab-ctl status
# 给备份文件赋予权限
root@gitlab:/# chmod 777 /var/opt/gitlab/backups/1614663214_2021_03_02_11.1.4_gitlab_backup.tar
# 还原数据库和配置文件
root@gitlab:/# gitlab-rake gitlab:backup:restore BACKUP=1614663214_2021_03_02_11.1.4
...
Do you want to continue (yes/no)? yes
...
Do you want to continue (yes/no)? yes
# 重启服务
root@gitlab:/# gitlab-ctl restart
# 检查
gitlab-rake gitlab:check SANITIZE=true
GItlab升级
注:因为本人原版本为中文社区的汉化版本,作者没有提供继续升级的版本,升级官方版本或着其他的中文汉化版本时会出现一些问题,若非官方版本的本人建议先备份数据,然后使用官方的同一个版本进行数据迁移,然后再升级。按照官方的说法,gitlab允许小版本直接升级,大版本需要阶段升级。跨版本升级示例:11.0.x -> 11.11.x -> 12.0.x -> 12.10.x -> 13.0.x
# 本人用的版本是汉化后的11.1.4
# 获取新版镜像
docker pull gitlab/gitlab-ce:11.11.8-ce.0
# 停止旧版本容器
docker stop gitlab
# 删除旧版本容器
docker rm gitlab
# 生成新版本容器后,访问网站,查看版本
Gitlab汉化
Gitlab在12.2.x之前的版本可访问https://hub.docker.com/r/blueapple/gitlab-ce-zh获取相应的版本
在12.2.x后的新版本都可以采用直接替的方式进行汉化,中文社区最新汉化版本为12.3.5
docker exec -it gitlab /bin/bash
# 查看版本,此处拿12.3.5为范例
root@gitlab:/# cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
12.3.5
# 停止服务
root@gitlab:/# gitlab-ctl stop
# 下载汉化包并解压
root@gitlab:/# wget https://gitlab.com/xhang/gitlab/-/archive/v12.3.5-zh/gitlab-v12.3.5-zh.tar.gz
root@gitlab:/# tar -zxf gitlab-v12.3.5-zh.tar.gz
# 备份并覆盖原文件
root@gitlab:/# cp -fr /opt/gitlab/embedded/service/gitlab-rails{,gao-`date +%Y%m%d`}
root@gitlab:/# cp -rf ./gitlab-v12.3.5-zh/* /opt/gitlab/embedded/service/gitlab-rails/
cp: cannot overwrite non-directory ‘/opt/gitlab/embedded/service/gitlab-rails/log’ with directory ‘./log’
cp: cannot overwrite non-directory ‘/opt/gitlab/embedded/service/gitlab-rails/tmp’ with directory ‘./tmp’
# 重启
root@gitlab:/# gitlab-ctl reconfigure
root@gitlab:/# gitlab-ctl restart
Gitlab报错
Error 1:迁移数据后,网站保存配置时返回500错误
查看日志 /opt/gitlab/gitlab/logs/gitlab-rails/production.log 发现错误信息为OpenSSL::Cipher::CipherError
导致错误原因:因为迁移数据后,没有将原来的 gitlab-secrets.json (内含加密信息)迁移过来导致
解决方法:将原来的gitlab-secrets.json迁移过来,或进入rails控制台(gitlab-rails console)输入 ApplicationSetting.current.reset_runners_registration_token!
重置
Error 2:删除项目,网站返回500错误
查看日志 /opt/gitlab/gitlab/logs/gitlab-rails/production.log 发现错误信息为OpenSSL::Cipher::CipherError
解决方法:进入db控制台(gitlab-rails dbconsole)输入UPDATE projects SET runners_token = null, runners_token_encrypted = null;
重置token