gitlab升级迁移(二)
前面我们写了一篇gitlab升级迁移的文章(https://www.cnblogs.com/liangyou666/p/9434158.html),这次我们主要是讲另一种升级迁移方法和其中遇到的一些问题,而且这个情况对于升级跨版本比较大的时候比较实用,因为跨版本比较大时,数据库表字段改变好大,你会发现装了一个新的版本后会基本每个表变化好大,这会导致你的数据没法通过备份之前老的数据在进行恢复,不过这个也有一个缺点,就是在你拥有比较多项目的时候会耗费比较多的时间和精力。所以,这个还是比较适合项目不是很多的情况。
基本思路:安装一个你想升级到的那个版本gitlab,安装完后把旧版本的用户和keys先导到新的数据库上,验证原用户是否可以正常登入,完成这一步后,跟进旧版本创建对应的项目组和把对应的组成员加到组里,然后把旧版本的项目导入到新版本。导入成功后验证项目的完整性和提交和下载代码是否正常,如果都正常的话那么久恭喜你成功了。
环境:gitlab 8.10.5——>gitlab 10.8.7
安装gitlab 10.8.7的过程和之前那篇文章有些地方不太一样,可以参考下面这篇文章:http://blog.51cto.com/qiangsh/1767438,这里就不在继续写安装过程了。
如果你安装成功了,下面就开始进行迁移:
1、旧版本的authorized_keys拷贝到新版本的服务器上
#cd /data/gitlab/.ssh
#scp -P authorized_keys root@xx.xx.xx.xx:/data/gitlab/.ssh/authorized_keys
2、备份旧版本gitlab的user,namespaces和keys表,然后导入到新版本数据库的相应表中,其中虽然会有些字段不一样,或少些字段,但根据提示做少量修改,是能正常导入的,而且可以正常使用。
#mysqldump -u xx -h xx.xx.xx.xx -p gitalbhq user >/tmp/user_bak.sql
#mysqldump -u xx -h xx.xx.xx.xx -p gitlabhq namespaces > /tmp/namespaces_bak.sql
#mysqldump -u xx -h xx.xx.xx.xx -p gitlabhq keys >/tmp/keys_bak.sql
导入之前记得把user_bak.sql和keys_bak.sql里的表结构部分给删除了,只留下插入语句,导入user表和namespaces表的时候应该会报错,按照提示进行修改就好
#mysql -u xx -h xx.xx.xx.xx -p gitlabhq_production user </tmp/user_bak.sql
#mysql -u xx -h xx.xx.xx.xx -p gitlabhq_production namespaces </tmp/namespaces_bak.sql
#mysql -u xx -h xx.xx.xx.xx -p gitlabhq_production keys </tmp/keys_bak.sql
3、导入成功后,到新版的gitlab客户端进行验证,看用户是否可以正常的登入,如果可以,则进行下一步:

4、根据旧版本创建相应的项目组,并把相应的组成员增加进去。
5、把新版本服务器上的git用户公钥加到旧版本gitlab里面(加到能读取所有项目的gitlab用户里,不然有的项目会导不过来),并且第一次导项目的时候在新版gitlab服务器上进行(第一次连接的时候要验证公钥,要输入yes)

6、在这里导入成功后重启gitlab,重新登入应该就可以看见导进去的项目了。

7、到这里,后面就可以直接在web端进行导入操作了,具体步骤如下:




按照这步把所有的项目导过来,最后在验证下提交代码和拉取代码是否正常。都ok的话,就升级迁移成功了。
遇到问题:
1、新版本的那台服务器上的git用户key添加到了一个只有查看两个项目权限的用户下,导致只能导那两个项目组里的项目,其余的项目导不过来。
解决办法:把添加到刚才那个用户上的这个key删掉,然后把这个key添加到一个可以查看所有项目的用户下面,就可以导全部的项目了。
2、全部项目导入完后,在进行拉取代码测试的时候,报deploy用户无法读取远程仓库,请检查是否有权限和远程仓库是否存在。
原因:虽然之前所有的key导到了新版的gitlab上,但由于gitlab新版在一台新的服务器上,所以导致key的认证需要重新认证,另外一个原因,因为我们这里的项目是新建的(虽然是导过来的),需要把拉取代码的用户key加到对应的项目里,拉取的用户才有权限去拉取代码,故报错。
解决办法:1、先把拉取代码的那个用户上的known_hosts文件里的内容清空。
2、把拉取代码那个用户(deploy)的key加到对应的项目里,如下:
3、在服务器上重新拉取代码,这里会重新验证key,输入yes即可。



gitlab升级迁移(二)的更多相关文章
- gitlab升级和迁移
由于近期公司gitlab服务器老是卡顿和出现其他问题,然后也很久没有升级过了,现在版本还是8.10.5,而官网最新版本已经是11.2了.另一个原因是gitlab所在的这台服务器快到期了,想换一台配置更 ...
- gitlab备份迁移与升级
升级计划: https://docs.gitlab.com/ee/update/index.html#upgrade-paths 1. 安装gitlab(和源版本必须保持一致) wget https: ...
- gitlab升级方法
gitlab升级方法:国内网络环境推荐方法二方法一:官网的升级方式 (1)停止git服务 gitlab-ctl stop unicorn gitlab-ctl stop sidekiq gitlab- ...
- gitlab数据迁移到docker容器
需求:想把服务器上的gitlab迁移到docker容器里面注意:gitlab的迁移,必须保持gitlab的版本一致,此处使用的是:8.4.3,数据库版本和类型一致,此处使用的是postgresql 9 ...
- github仓库迁移到gitlab以及gitlab仓库迁移到另一个gitlab服务器
一. github仓库迁移到gitlab 先进入 new project: 选择 Import project, 选择下面的github: 进入后,这里需要github的 personal acces ...
- gitlab和gitlab项目迁移
一.概述 原gitlab 操作系统:centos 6.9 版本:GitLab 社区版 10.5.1 安装方式:yum 新gitlab 操作系统:centos 7.6 版本:GitLab Communi ...
- gitlab项目迁移
ALL Git* => Gitlab Nothing, Just copy the git URL to gitlab(类似于 fork) 使用 Git Mirror 無痛轉移 Git Serv ...
- gitlab升级、汉化、修改root密码
1.gitlab升级 # 查看当前版本 head -1 /opt/gitlab/version-manifest.txt gitlab-ce 8.9.5 grep "^external_ur ...
- gitlab 升级
=============================================== 2017/10/21_第1次修改 ccb_warlock = ...
随机推荐
- ORACLESQL语句的优化
ORACLESQL语句的优化: 选择最有效率的表名顺序:应该选择记录条数最少的表作为基表! 因为Oracle解析器的处理顺序是从右至左的.当ORACLE处理多个表时, 会运用排序及合并的方式连接它们. ...
- 在windows下远程访问linux桌面
一.安装xrdp工具: # yum install xrdp # yum install tigervnc-server # service xrdp start 以上三个命令执行完毕安装完 ...
- 在Linux命令行中以图形化窗口打开文件夹
Linux 系统中也有类似的命令.Ubuntu 发行版的命令行中,我们可以使用 nautilus 命令来打开指定目录的图形化窗口界面.类似下面命令这样使用: nautilus /home/testPr ...
- 外部访问docker中的MySQL
注:192.168.1.203机器上装有docker,容器在该机器上 mysql> use mysql; mysql> update user set authentication_str ...
- 【P2015】二叉苹果树 (树形DP分组背包)
题目描述 有一棵苹果树,如果树枝有分叉,一定是分2叉(就是说没有只有1个儿子的结点) 这棵树共有N个结点(叶子点或者树枝分叉点),编号为1-N,树根编号一定是1. 现在这颗树枝条太多了,需要剪枝.但是 ...
- 使用代码生成工具Database2Sharp快速生成工作流模块控制器和视图代码
在前面随笔<基于Metronic的Bootstrap开发框架--工作流模块功能介绍>和<基于Metronic的Bootstrap开发框架--工作流模块功能介绍(2)>中介绍了B ...
- OCR技术浅析-tesserOCR(3)
tesserOCR使用 tesserOCR是文字识别软件(惠普公司开源) Optical Character Recognition (OCR)即光学字符辨识是把打印文本转换成一个数字表示的过程.它有 ...
- D. The Beatles
链接 [https://codeforces.com/contest/1143/problem/D] 题意 就是有nkcity,n个面包店 第一个面包店在1city,第x个在(x-1)k+1city ...
- PHP获取项目所有控制器方法名称
PHP获取项目所有控制器方法名称 //获取模块下所有的控制器和方法写入到权限表 public function initperm() { $modules = array('admin'); //模块 ...
- openstack搭建之-创建实例(13)
一. 创建flat网络的实例 #运行admin环境变量,创建网络类型为flat . admin-openrc openstack network create --share \ --provider ...