gitlab迁移(服务器迁移)

王柳  金牌会员 | 2025-2-22 12:18:41 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 993|帖子 993|积分 2979

先记载迁移中的问题,后续补充具体迁移步骤。
迁移内容包括,对象存储数据迁移,所有节点(gitlab-rails,gitaly,praefect,pg,pgb,redis所有节点迁移)
git迁移中出现的问题

1、gitlab页面查询分支404

清理redis缓存,
到redis节点上执行flushdb(/opt/gitlab/bin/gitlab-redis-cli -h redisip
或者rails执行
gitlab-rake cache:clear
原因是中途存在切回原redis节点,导致原redis出现数据耽误
2、Gitlab rails节点启动报错

  1. sudo gitlab-ctl reconfigure
  2. rails_migration[gitlab-rails] (gitlab::database_migrations line 51) had an error: Mixlib::ShellOut::ShellCommandFailed: bash[migrate gitlab-rails
  3. database] (/opt/gitlab/embedded/cookbooks/cache/cookbooks/gitlab/resources/rails_migration.rb line 16) had an error: Mixlib::ShellOut::ShellComm
  4. andFailed: Command execution failed. STDOUT/STDERR suppressed for sensitive resource
复制代码
Gitlab_rails[‘auto_migrate’]=false办理
3、gitlab连不上redis,页面显示500

日志只提示无法连接redis无特别日志
增长redis相关配置
Redis[‘host’]
4、 gitlab 代码库迁移遇到的问题

条件
迁移api http://127.0.0.1:4000/14.10/ee/administration/operations/moving_repositories.html
  1. 使用API为存储碎片上的所有项目安排存储库存储移动。
  2. curl --request POST --header "Private-Token: <your_access_token>" \     --header "Content-Type: application/json" \     --data '{"source_storage_name":"<original_storage_name>","destination_storage_name":"<cluster_storage_name>"}' \     "https://gitlab.example.com/api/v4/project_repository_storage_moves"
  3. 搬家已经成功完成。state字段finished。
  4. 行动正在进行中。重新查询存储库移动,直到它成功完成。
  5. 动作失败了。大多数故障都是暂时的,可以通过重新安排搬家来解决
  6. 查询所有移动项目状态
  7. curl --request GET --header "PRIVATE-TOKEN: _Zo4HUxM-6p8aQxxxxxx"--header "Content-Type: application/json"
  8. "http://rails-ip/api/v4/project_repository_storage_moves"
  9. 查询在default下项目
  10. curl --request GET --header "Private-Token: _Zo4HUxM-6p8xxxxx"--header "Content-Type: application/json"\
  11. "http://rails-ip/api/v4/projects?repository_storage=default"
  12. curl --request GET --header "Private-Token: _JKVFwqFxxxxx]" --header "Content-Type: application/jsan"\
  13. "http://rails-ip/api/v4/projects?repository_storage=praefect"
  14. 单个项目迁移到praefect节点下
  15. curl --request POST --header "PRIVATE-TOKEN:_Zo4HUxM-6p8aQYWiYy5" --header "Content-Type: application/json"\
  16. --data '{"destination_storage_name": "praefect"}'\
  17. "http://rails-ip/api/v4/projects/32928/repository_storage_moves"
  18. POST /projects/:project_id/repository_storage_moves
  19. 项目的迁移状态
  20. curl --request GET --header "PRIVATE-TOKEN:_Zo4HUxM-6p8aQYWiYy5" --header "Content-Type: application/json"
  21. "http://rails-ip/api/v4/projects/33544/repository_storage_moves"
  22. 迁移所有项目
  23. curl --request POST --header "PRIVATE-TOKEN:_Zo4HUxM-6p8aQYWiYy5" --header "Content-Type: application/json"\
  24. --data '{"source_storage_name";"default","destination_storage_name":"praefect"}'\
  25. "http://rails-ip/api/v4/project_repository_storage_moves"
复制代码
可从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存储后可修改
且只需修改一个节点,这个配置是存数据库的
7 迁移praefet过程中注意事项

迁移praefect节点时,未修改新praefect节点配置直接启动了,rails节点虽然未连接新praefect,但是praefect仍然会连接数据库,其时没注意就导致数据库中repository表数据总是被删除,导致git页面上仓库信息显示非常。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

王柳

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表