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即可。
最新文章
- 全面理解Git
- a标签加入单击事件 屏蔽href跳转页面
- 【python】入门学习(六)
- Android接口传递Json数组的处理方式
- Django1.9开发博客(9)- 用户认证
- MongoDB工具简要说明
- IO输入输出 3
- HDU 2993 MAX Average Problem(斜率优化DP)
- Servlet使用简介
- CSS文字不换行,溢出省略
- iOS常见的几种加密方法(base64.MD5.Token传值.系统指纹验证。。加密)
- Stripes视图框架与Struts2之间的比较
- h5-上传图片预览
- Vue(二十一)使用express模拟接口数据
- log4j:WARN No appenders could be found for logger 解决方案
- MyBatis对于Java对象里的枚举类型处理
- SG仿真常用模块
- 安装特定版本 sysbench 以及安装时指定特定的mysql客户端
- HDU 5876 Sparse Graph(补图上BFS)
- gdb core
热门文章
- RabbitMQ基本示例,轮询机制,no_ack作用
- 查看jar包的jdk版本
- R语言学习——数组
- shell中的EOF用法
- python3 pickle模块
- Mac系统下Mysql存储数据报错 ER_TRUNCATED_WRONG_VALUE_FOR_FIELD: Incorrect string value
- [详细实例]MicroPython拼插编程实战:DIY一台会思考的壁障车
- 《React Native 精解与实战》书籍连载「Android 平台与 React Native 混合开发」
- [2019BUAA软工助教]第0次个人作业
- 深入Eureka/Feign/Hystrix原理学习(1)