前面我们写了一篇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. 英语口语练习系列-C16-钱

    词汇学习 beer [bɪə(r)] n. 啤酒 a glass of beer 一杯啤酒 five glasses of beer 五杯啤酒 beers (种类) Shall we have a b ...

  2. Django--用户认证组件auth(登录用-依赖session,其他用)

    一.用户认证组件auth介绍 二.auth_user表添加用户信息 三.auth使用示例 四.auth封装的认证装饰器 一.用户认证组件auth介绍 解决的问题: 之前是把is_login=True放 ...

  3. Python安装包:协程(gevent)

  4. C#基础知识之特性

    一.什么是特性 个人理解:特性本质上也是有一种类,通过添加特性,就可以实例化这个特性类:添加特性就是在类.方法.结构.枚举.组件等上面加一个标签,使这些类.方法.结构.枚举.组件等具有某些统一的特征, ...

  5. kubernetes 集群安装etcd集群,带证书

    install etcd 准备证书 https://www.kubernetes.org.cn/3096.html 在master1需要安装CFSSL工具,这将会用来建立 TLS certificat ...

  6. 网络流之P3254 圆桌问题

    题目描述 假设有来自m 个不同单位的代表参加一次国际会议.每个单位的代表数分别为ri (i =1,2,……,m). 会议餐厅共有n 张餐桌,每张餐桌可容纳ci (i =1,2,……,n)个代表就餐. ...

  7. Struts2的核心——拦截器

    虽然以前已经学了很多的拦截器,但是在这里还是想重头梳理一下所有有关拦截器的知识,尤其是struts2中的拦截器 1:拦截器是什么? java里的拦截器是动态拦截Action调用的对象.它提供了一种机制 ...

  8. SpringBoot中各配置文件的优先级及加载顺序

    我们在写程序的时候会碰到各种环境(开发.测试.生产),因而,在我们切换环境的时候,我们需要手工切换配置文件的内容.这大大的加大了运维人员的负担,同时会带来一定的安全隐患. 为此,为了能更合理地重写各属 ...

  9. python scapy dns 包字段解析

    qr:   0表示查询报文,1表示响应报文opcode: 通常值为0(标准查询),其他值为1(反向查询)和2(服务器状态请求).aa: 表示授权回答(authoritative answer)tc: ...

  10. MySQL索引原理及慢查询优化(转自:美团tech)

    背景 MySQL凭借着出色的性能.低廉的成本.丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库.虽然性能出色,但所谓“好马配好鞍”,如何能够更好的使用它,已经成为开发工程师的必修课,我们经常会 ...