gitlab迁移

背景

  • 之前gitlab在阿里云机部署,因为外网相对不安全考虑迁到内网

环境

  • gitlab-11.11.3 docker部署

实施

  1. 备份
    docker exec -ti gitlab bashgitlab-rake gitlab:backup:createdocker cp gitlab:/var/opt/gitlab/backups/1612427334_2021_02_04_11.11.3_gitlab_backup.tar .
  2. 在内网机器启动相同版本gitlab(gitlab备份恢复需要相同版本)
docker exec -ti gitlab bashmv 1612427334_2021_02_04_11.11.3_gitlab_backup.tar /var/opt/gitlab/backups/chmod 755 /var/opt/gitlab/backups/1612427334_2021_02_04_11.11.3_gitlab_backup.tarchown root:root /var/opt/gitlab/backups/1612427334_2021_02_04_11.11.3_gitlab_backup.targitlab-rake gitlab:backup:restore BACKUP=1612427334_2021_02_04_11.11.3

问题

1.进入ci/cd runner页面报500

gitlab-rails consoleCi::Runner.all.update_all(token_encrypted: nil)gitlab-rails dbconsoleUPDATE projects SET runners_token = null, runners_token_encrypted = null; 

2.新建用户,在强制用户修改密码时报500
log 显示类似: 因为没有第一时间写文章,日志显示类似,不是我遇到的日志。

The form contains the following error:    PG::NotNullViolation: ERROR: null value in column "id" violates not-null constraint DETAIL: Failing row contains (null, 164, t). : INSERT INTO "project_ci_cd_settings" ("project_id") VALUES (164) RETURNING "id"

解决思路:查看对应表有没有null值,启动全新的gitlab对比表结构

解决:

gitlabhq_production=> CREATE SEQUENCE user_preference_id_seq INCREMENT BY 1 NO MINVALUE NO MAXVALUE START WITH 106 OWNED BY user_preferences.id;   重新创建sequencegitlabhq_production=> ALTER TABLE user_preferences ALTER COLUMN id SET DEFAULT NEXTVAL('user_preference_id_seq'::regclass);                         恢复表结构修饰符

3.创建merge时指定给用户时,提交后500
gitlab日志:

==> /var/log/gitlab/postgresql/current <==2021-03-18_05:52:05.23424 ERROR:  null value in column "id" violates not-null constraint2021-03-18_05:52:05.23427 DETAIL:  Failing row contains (null, 61, 4046).2021-03-18_05:52:05.23427 STATEMENT:  INSERT INTO "merge_request_assignees" ("user_id", "merge_request_id") VALUES (61, 4046) RETURNING "id"

解决:

gitlabhq_production=> CREATE SEQUENCE merge_request_assignees_id_seq INCREMENT BY 1 NO MINVALUE NO MAXVALUE START WITH 106 OWNED BY merge_request_assignees.id;   重新创建sequencegitlabhq_production=> ALTER TABLE merge_request_assignees ALTER COLUMN id SET DEFAULT NEXTVAL('merge_request_assignees_id_seq'::regclass);                         恢复表结构修饰符

说明:迁移gitlab后会有数据库序列丢失问题,重建序列,并恢复字段修饰符。对比全新gitlab你会发现,可能会丢失很多seq,建议恢复所有。

参考:https://gitlab.com/gitlab-org/gitlab/-/issues/26020
©著作权归作者所有:来自51CTO博客作者Fitme96的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 如何使用iMovie模板创建新预告片?
  2. I盘格式化了的文件寻回方案.
  3. k8s实战之理解helm
  4. Linux运维入门教程05-02 (利用vi编辑器创建和编辑正文文件)
  5. 遇到位置不可用怎样解决?
  6. 苹果macOS Big Sur可启动安装程序驱动器如何创建?
  7. 磁盘存储管理和文件系统管理 RAID
  8. Linux权限管理chmod 755(chmod xxx)教程
  9. MySQL数据库入门——常用基础命令

随机推荐

  1. Android 与 js 简单互调
  2. 【Android】四大组件(3)Service
  3. Android的init过程(二):初始化语言(init.rc)解
  4. Android studio 如何在android选项下生成
  5. Android 学习小结
  6. android 非系统APP访问字符设备
  7. 将support的包名转换成androidx的包名
  8. android 中SoundPool总结
  9. Android 自定义View自定义属性的声明
  10. android 学习笔记(一):1 环境搭建