一、背景

Gitlab现在已经发展到11+了,我们这边用的比较早,13年就开始了当时最新的版本是5.3,上线后便一直未升级,直到前几天服务器因年久失修宕机…
值得庆幸的是数据都还在,故事便从这里开始了……

二、新环境构筑

2.1 安装

安装过程省略,照官方文档就行https://github.com/gitlabhq/gitlabhq
根据自己要安装版本,先选择对应的分支,再找到gitlabhq/doc/install/installation.md
不过需要提示的是,在5.3时gitlab-shell是需要自己手动去clone安装,自6.9的版本开始集成成一条命令了

2.2 测试

安装好之后,打开浏览器测试,使用下面的信息登录:

三、数据恢复

3.1 迁移

数据迁移分以下几步做:
1. 先将新搭建的gitlab的服务停掉,然后将其DB、gitlab-satellites、repositoriest备份(注意目录的权限)
2. 将旧平台的repositoriest目录复制到新的服务器上替换repositoriest目录
3. 在新平台的MySQL数据上新建一个schema,将旧平台的数据导入进去(不要直接往新平台的schema里面导,两个表结构不一样)

3.2 DB数据合并

通过navicat(db工具,我用的是navicat)查看gitlab的表结构,表很少,仔细分析会发现其实涉及到升级操作的主要就三张表:namespaces、projects、users、users_groups、users_projects
注:我讲的主要就三张表,如果有通过gitlab去管理issues、tags、keys等也照同样的方法恢复进去就行
恢复的顺序:
1. namespaces
2. projects (依赖namespaces)
3. users(这个也可以最先恢复)
4. users_groups(依赖users)
5. users_projects(依赖users、projects)

3.2.1 namespaces表

这张表中新增了“avatar”字段,但是允许为空,可直接恢复

3.2.2 projects表

这张表改动比较大如下图:

对于旧环境来讲,去掉了“default_branch”、“public”、“imported”这三个字段
新环境中增加了“import_url”、“visibility_level”、“archived”、“import_status”、“repository_size”

分析:

去掉的三个字段其实没什么好说的,把SQL语句导出来,批量去掉就行了
新增的几个字段分析DDL发现都是有默认值的,这就好办了

恢复

1. projects表导出sql
2. 用文本编辑器批量替换掉不要的三个字段
3. 将处理后的sql恢复到新环境中

3.2.3 users表

这张表我只说下关键的两个字段“confirmed_at”、“confirmation_sent_at”,这两个新增的字段的作用是,在新的版本中创建好一个用户后会向他的邮箱发一份确认邮件,在确认后这两个字段会存放发送和确认的时间,只有确认后的用户才允许登录(当然管理员可以在后台手动确认)。如果这两个字段是空,用户将无法登录。

恢复

1. 删除新环境中默认用户(root用户)
2. 将旧环境中的users表导出成sql
3. 恢复到新环境
4. 用update语句给新增的两个字段赋值(随便写个日期就好)

3.2.4 users_groups表和users_projects表

直接恢复

3.3 repositoriest数据恢复

整个迁移过程到此就结束了……



如果想赏钱,可以用微信扫描下面的二维码,一来能刺激我写博客的欲望,二来好维护云主机的费用; 另外再次标注博客原地址 itnotebooks.com 感谢!

Terraform操作阿里云ECS,批量创建ECS云主机

利用Terraform实现运维平台的IaaS层,由于公司用的全是阿里云,所以以阿里云为例,不过既然是Terraform,其实无需太在意这个,基类封装好,什么云可以,甚至...

阅读全文

error: command ‘gcc’ failed with exit status 1 -Python3.6.9 MacOs Catalina

Shell error: command 'gcc' failed with exit status 1 -Python3.6.9 MacOs Catalina 1 ...

阅读全文

消息中间件对比及选型

消息中间件: 协助程序之间异步通信 一、消息中间件的作用: 削峰填谷 异构集成 解耦 异步隔离 二、市场上在用的消息中件特点: RocketMQ:(近几年用...

阅读全文

欢迎留言