目录
1.删除项目出现500.或无法删除群组,因为token不一致导致的需要手动清理token
2.gitlab-runnner 无法注册 gitlab报500错误
业务需求
将A服务器的gitlab实例数据迁移至B服务器gitlab实例数据
注意:保证版本一致,若使用不同版本,需升级到版本相同才行
一.数据备份
1.进入A服务器执行备份命令
gitlab-backup create
出现这样的情况说明已经备份好了,红字中的提示:用户的敏感数据存储于/etc/gitlab/gitlab-secrets.json
以及/etc/gitlab/gitlab.rb
,用户【必须】手动进行备份。可以选择不用备份,在新的实例中修改即可
二.数据迁移
1.找到我们备份好的文件,将文件下载下来
一般安装是没做设置的话,默认存放备份数据的地址为/var/opt/gitlab/backups/
2.进入B服务器修改配置文件
修改备份数据恢复地址
修改备份数据存放地址,保持退出
3.停止gitlab,重载配置文件,并重启
gitlab-ctl stop
gitlab-ctl reconfigure
gitlab-ctl start
4.将A服务器的备份数据上传备份数据恢复地址
5.停止gitlab部分服务,保证恢复过程中有数据写入
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
6.执行备份恢复命令
gitlab-rake gitlab:backup:restore BACKUP=xxxxx
解释 xxxxx:对应的备份的标号,如
gitlab-rake gitlab:backup:restore BACKUP=1681125786_2023_04_10_14.10.5
若备份时出现SQL异常,可以参考 Gitlab-ce数据还原时发生PostgreSQL异常_hu_wenjie的博客-CSDN博客 也可忽略后续自己修改至此,数据迁移就完成了!
踩坑
1.删除项目出现500.或无法删除群组,因为token不一致导致的需要手动清理token
gitlab-rails dbconsole --database main #进入gitlab内部数据库
#清除项目、组和整个实例的所有令牌
UPDATE projects SET runners_token = null, runners_token_encrypted = null;
UPDATE namespaces SET runners_token = null, runners_token_encrypted = null;
UPDATE application_settings SET runners_registration_token_encrypted = null;
UPDATE ci_runners SET token = null, token_encrypted = null;
quit
参考文档 https://blog.csdn.net/qq_37837432/article/details/121642542
2.gitlab-runnner 无法注册 gitlab报500错误
查看gitlab日志:
进入/var/log/gitlab/gitlab-rails 监听 tail -1000f production.log
解决方案
sudo gitlab-rails c
settings = ApplicationSetting.last
settings.update_column(:runners_registration_token_encrypted, nil)
settings.update_column(:encrypted_ci_jwt_signing_key, nil)
settings.save!
参考文档 https://blog.csdn.net/ZH_CS/article/details/124709638