先记录迁移中的问题,后续补充具体迁移步骤。
迁移内容包括,对象存储数据迁移,所有节点(gitlab-rails,gitaly,praefect,pg,pgb,redis所有节点迁移)
1、gitlab页面查询分支404
清理redis缓存,
到redis节点上执行flushdb(/opt/gitlab/bin/gitlab-redis-cli -h redisip
或者rails执行
gitlab-rake cache:clear
原因是中途存在切回原redis节点,导致原redis出现数据延迟
2、Gitlab rails节点启动报错
Gitlab_rails[‘auto_migrate’]=false解决
3、gitlab连不上redis,页面显示500
日志只提示无法连接redis无特殊日志
增加redis相关配置
Redis[‘host’]
4、 gitlab 代码库迁移遇到的问题
前提
迁移api
可从gitlabhq_production数据库project_repositories表通过id查询仓库disk_path
可从praefect_production数据库repo表中通过仓库sha256sum查询存储所在
可从praefect_production数据库storage_repo表查询gitaly机器存储仓库情况
可从gitlabhq_production数据库中project_repository_storage_moves查看迁移任务状态
可从gitlabhq_production数据库中projects查看仓库状态 read_only
1、praefect 数据库中repo和storage_repo中仓库存放数据不一致,导致页面显示仓库数据问题
临时方法:修改stroage_repo中仓库的generation和repo一致,增加stroage_repo中所有节点的数据。可能存在只有gitaly-1或者只有gitaly-2的情况
原因:新praefect启动后,虽然未连接rails,但是会自动同步数据库,新praefect中default的节点和原praefct中default的节点冲突导致
迁移状态state :2 schedule 、3 started、4 finished、5 failed。2和3状态i会将仓库设置成readyonly
2、批量执行迁移,队列中代码仓库迁移状态为2和3导致仓库只读
先将gitlabhq_production数据库中project_repository_storage_moves该迁移id下state改为5,然后修改projects表该项目read_only修改为false
可批量执行修改状态
3、repo中原virtual_storage和新virtual_storage都存在,导致再次迁移还是失败
删除praefect_production数据库中repo表中新virtual_storage记录,后执行迁移api
相同仓库的sha256,需同步将wiki.git的记录删除后迁移
另需保证repo和storage_repo的generation保持一致后迁移
5 ssh拉取问题
需开通elb到机器22端口 ,需将之前的/var/opt/gitlab/.ssh/authorized_keys复制到新节点,不然需重新生成key
6 页面修改登录登出跳转链接url
修改失败,提示存储没有default
因为仓库节点存储是从default到kylin,后面rails节点配置将data_dir中default注释掉了,需保证有default存储后可修改
且只需修改一个节点,这个配置是存数据库的