前面我们写了一篇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升级迁移(二)的更多相关文章

  1. gitlab升级和迁移

    由于近期公司gitlab服务器老是卡顿和出现其他问题,然后也很久没有升级过了,现在版本还是8.10.5,而官网最新版本已经是11.2了.另一个原因是gitlab所在的这台服务器快到期了,想换一台配置更 ...

  2. gitlab备份迁移与升级

    升级计划: https://docs.gitlab.com/ee/update/index.html#upgrade-paths 1. 安装gitlab(和源版本必须保持一致) wget https: ...

  3. gitlab升级方法

    gitlab升级方法:国内网络环境推荐方法二方法一:官网的升级方式 (1)停止git服务 gitlab-ctl stop unicorn gitlab-ctl stop sidekiq gitlab- ...

  4. gitlab数据迁移到docker容器

    需求:想把服务器上的gitlab迁移到docker容器里面注意:gitlab的迁移,必须保持gitlab的版本一致,此处使用的是:8.4.3,数据库版本和类型一致,此处使用的是postgresql 9 ...

  5. github仓库迁移到gitlab以及gitlab仓库迁移到另一个gitlab服务器

    一. github仓库迁移到gitlab 先进入 new project: 选择 Import project, 选择下面的github: 进入后,这里需要github的 personal acces ...

  6. gitlab和gitlab项目迁移

    一.概述 原gitlab 操作系统:centos 6.9 版本:GitLab 社区版 10.5.1 安装方式:yum 新gitlab 操作系统:centos 7.6 版本:GitLab Communi ...

  7. gitlab项目迁移

    ALL Git* => Gitlab Nothing, Just copy the git URL to gitlab(类似于 fork) 使用 Git Mirror 無痛轉移 Git Serv ...

  8. gitlab升级、汉化、修改root密码

    1.gitlab升级 # 查看当前版本 head -1 /opt/gitlab/version-manifest.txt gitlab-ce 8.9.5 grep "^external_ur ...

  9. gitlab 升级

    =============================================== 2017/10/21_第1次修改                       ccb_warlock = ...

随机推荐

  1. ORACLESQL语句的优化

    ORACLESQL语句的优化: 选择最有效率的表名顺序:应该选择记录条数最少的表作为基表! 因为Oracle解析器的处理顺序是从右至左的.当ORACLE处理多个表时, 会运用排序及合并的方式连接它们. ...

  2. 在windows下远程访问linux桌面

    一.安装xrdp工具: #  yum install xrdp #   yum install tigervnc-server #   service xrdp start 以上三个命令执行完毕安装完 ...

  3. 在Linux命令行中以图形化窗口打开文件夹

    Linux 系统中也有类似的命令.Ubuntu 发行版的命令行中,我们可以使用 nautilus 命令来打开指定目录的图形化窗口界面.类似下面命令这样使用: nautilus /home/testPr ...

  4. 外部访问docker中的MySQL

    注:192.168.1.203机器上装有docker,容器在该机器上 mysql> use mysql; mysql> update user set authentication_str ...

  5. 【P2015】二叉苹果树 (树形DP分组背包)

    题目描述 有一棵苹果树,如果树枝有分叉,一定是分2叉(就是说没有只有1个儿子的结点) 这棵树共有N个结点(叶子点或者树枝分叉点),编号为1-N,树根编号一定是1. 现在这颗树枝条太多了,需要剪枝.但是 ...

  6. 使用代码生成工具Database2Sharp快速生成工作流模块控制器和视图代码

    在前面随笔<基于Metronic的Bootstrap开发框架--工作流模块功能介绍>和<基于Metronic的Bootstrap开发框架--工作流模块功能介绍(2)>中介绍了B ...

  7. OCR技术浅析-tesserOCR(3)

    tesserOCR使用 tesserOCR是文字识别软件(惠普公司开源) Optical Character Recognition (OCR)即光学字符辨识是把打印文本转换成一个数字表示的过程.它有 ...

  8. D. The Beatles

    链接 [https://codeforces.com/contest/1143/problem/D] 题意 就是有nkcity,n个面包店 第一个面包店在1city,第x个在(x-1)k+1city ...

  9. PHP获取项目所有控制器方法名称

    PHP获取项目所有控制器方法名称 //获取模块下所有的控制器和方法写入到权限表 public function initperm() { $modules = array('admin'); //模块 ...

  10. openstack搭建之-创建实例(13)

    一. 创建flat网络的实例 #运行admin环境变量,创建网络类型为flat . admin-openrc openstack network create --share \ --provider ...