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 = ...
随机推荐
- rabbitMQ、activeMQ、zeroMQ、Kafka、Redis 比较
Kafka作为时下最流行的开源消息系统,被广泛地应用在数据缓冲.异步通信.汇集日志.系统解耦等方面.相比较于RocketMQ等其他常见消息系统,Kafka在保障了大部分功能特性的同时,还提供了超一流的 ...
- WPFの命中测试
概述: WPF中的Canvas是常用的一个绘图控件,可以方便地在Canvas中添加我们需要处理的各种元素如:图片.文字等.但Canvas中元素增加到一定数量,并且有重合的时候,我们如何通过在Canv ...
- Java并发-AQS及各种Lock锁的原理
原文 : https://blog.csdn.net/zhangdong2012/article/details/79983404
- [LeetCode] 6. Z 字形变换
题目链接:(https://leetcode-cn.com/problems/zigzag-conversion/) 题目描述: 将一个给定字符串根据给定的行数,以从上往下.从左到右进行 Z 字形排列 ...
- yidiandian
hzwer libreoj (需要拿新版的打开)
- jenkins编译打包nodejs
第一步 安装nodejs插件 第二步 在全局配置管理里面添加 nodejs配置 第三步 新建任务,从git上面拉取代码 cd /opt/tomcat7/bin/workspace/confdev #进 ...
- ubuntu安装docker{ubuntu16.04下安装docker}
一.开始安装 第一步: 由于apt官方库里的docker版本可能比较旧,所以先卸载可能存在的旧版本: $ sudo apt-get remove docker docker-engine d ...
- IL指令表
名称 说明 Add 将两个值相加并将结果推送到计算堆栈上. Add.Ovf 将两个整数相加,执行溢出检查,并且将结果推送到计算堆栈上. Add.Ovf.Un 将两个无符号整数值相加,执行溢出检查,并且 ...
- C#中的IntPtr
IntPtr是一个类,用于包装调用WindowsAPI函数的指针,根据平台的不同,底层指针可以是32位或64位:它用以表示指针或句柄的平台特定类型,C#中主要用它调用C++\C封装的DLl库:下面主要 ...
- 数据标记系列——标记工具Imagtagger
https://github.com/bit-bots/imagetagger 待有空说一说!