先记载迁移中的问题,后续补充具体迁移步骤。
迁移内容包括,对象存储数据迁移,所有节点(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节点启动报错
- sudo gitlab-ctl reconfigure
- rails_migration[gitlab-rails] (gitlab::database_migrations line 51) had an error: Mixlib::ShellOut::ShellCommandFailed: bash[migrate gitlab-rails
- database] (/opt/gitlab/embedded/cookbooks/cache/cookbooks/gitlab/resources/rails_migration.rb line 16) had an error: Mixlib::ShellOut::ShellComm
- 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
- 使用API为存储碎片上的所有项目安排存储库存储移动。
- 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"
- 搬家已经成功完成。state字段finished。
- 行动正在进行中。重新查询存储库移动,直到它成功完成。
- 动作失败了。大多数故障都是暂时的,可以通过重新安排搬家来解决
- 查询所有移动项目状态
- curl --request GET --header "PRIVATE-TOKEN: _Zo4HUxM-6p8aQxxxxxx"--header "Content-Type: application/json"
- "http://rails-ip/api/v4/project_repository_storage_moves"
- 查询在default下项目
- curl --request GET --header "Private-Token: _Zo4HUxM-6p8xxxxx"--header "Content-Type: application/json"\
- "http://rails-ip/api/v4/projects?repository_storage=default"
- curl --request GET --header "Private-Token: _JKVFwqFxxxxx]" --header "Content-Type: application/jsan"\
- "http://rails-ip/api/v4/projects?repository_storage=praefect"
- 单个项目迁移到praefect节点下
- curl --request POST --header "PRIVATE-TOKEN:_Zo4HUxM-6p8aQYWiYy5" --header "Content-Type: application/json"\
- --data '{"destination_storage_name": "praefect"}'\
- "http://rails-ip/api/v4/projects/32928/repository_storage_moves"
- POST /projects/:project_id/repository_storage_moves
- 项目的迁移状态
- curl --request GET --header "PRIVATE-TOKEN:_Zo4HUxM-6p8aQYWiYy5" --header "Content-Type: application/json"
- "http://rails-ip/api/v4/projects/33544/repository_storage_moves"
- 迁移所有项目
- curl --request POST --header "PRIVATE-TOKEN:_Zo4HUxM-6p8aQYWiYy5" --header "Content-Type: application/json"\
- --data '{"source_storage_name";"default","destination_storage_name":"praefect"}'\
- "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企服之家,中国第一个企服评测及商务社交产业平台。 |