文章目录

  • 前言
  • 修复过程
    • 备份数据
    • 修改存放目录
    • 关闭服务
    • 迁移数据
    • 刷新配置
    • 启动服务
  • 总结

前言

真是无巧不成书,白天刚刚讨论了一天 SVN 服务器迁移事情,晚上突然被告知 gitlab 服务无法访问了,赶紧连接到服务器上查看,好家伙,磁盘还剩下可怜的 98KSVN 不管了,先把 gitlab 搞定吧,毕竟第二天的游戏更新包都打不出来了,确认是磁盘不足问题后已经是9点半了,月亮都升起老高了,赶紧开始修复吧。

修复过程

关于修复过程,网上有很多文章写了具体的步骤,都非常的相似,基本来自于官方文档的翻译,不过抄来抄去的内容产生了一些错误,甚至是在关键的步骤上出错,所以在看这些文章是要特别注意,如果你的英文还不错的话,建议看一下官方文档

为了记录过程我也不免俗套的把这些步骤写一写,方便日后拿来即用,关于每步的作用我会进行简述,并且提一下注意事项。

总体步骤:在配置文件中把存放数据的路径改一个新目录,把原数据移动到新的目录,重启gitlab服务即可

备份数据

虽然只是做数据迁移,不涉及切换物理机,也不会更换服务版本,但是为了保险起见,还是先把数据备份一份,现在遇到的问题是 gitlab 是默认安装的,数据存放在 /var/opt/gitlab/git-data 目录下,仓库存放在子目录 repositories 里面,这个目录一般空间都不大,很容易出现磁盘满的情况,目录结构如下:

git-data
└── repositories├── +gitaly│   ├── cache│   ├── state│   └── tmp└── @hashed├── 19├── 35├── 3f├── 45├── 4a├── 4b├── ...└── f5

真正的仓库数据就在 @hashed 目录下众多子目录下,再往下走就是一个个 .git目录了,结构与我们本地的 .git 目录一致。

备份的命令需要记录一下:

gitlab-rake gitlab:backup:create

备份的路径可以在配置文件 /etc/gitlab/gitlab.rb 中修改:

[root@code-server ~]# vim /etc/gitlab/gitlab.rb
gitlab_rails['manage_backup_path'] = true
gitlab_rails['backup_path'] = "/data/gitlab/backups"    // gitlab备份目录
gitlab_rails['backup_archive_permissions'] = 0644       // 生成的备份文件权限
gitlab_rails['backup_keep_time'] = 7776000              // 备份保留天数为90天

备份从21:30开始一直到凌晨1点左右结束,200G 数据用时3个半小时,真是太慢了,大部分的时间都卡在备份了 Dumping lfs objects

[root@gitlab-server ~]# gitlab-rake gitlab:backup:create
2022-07-25 21:27:34 +0800 -- Dumping database ...
Dumping PostgreSQL database gitlabhq_production ... [DONE]
2022-07-25 21:27:42 +0800 -- done
2022-07-25 21:27:42 +0800 -- Dumping repositories ...* xxxx/project (@hashed/d4/73/d4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab3x) ...* xxxx/project (@hashed/d4/73/d4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab3x) ... [DONE]* xxxx/project.wiki (@hashed/d4/73/d4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab3x.wiki) ...* xxxx/project.wiki (@hashed/d4/73/d4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab3x.wiki) ... [EMPTY] [SKIPPED]* xxxx/project.design (@hashed/d4/73/d4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab3x.design) ...* xxxx/project.design (@hashed/d4/73/d4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab3x.design) ... [EMPTY] [SKIPPED]......
2022-07-25 22:16:14 +0800 -- done
2022-07-25 22:16:14 +0800 -- Dumping uploads ...
2022-07-25 22:16:15 +0800 -- done
2022-07-25 22:16:15 +0800 -- Dumping builds ...
2022-07-25 22:16:15 +0800 -- done
2022-07-25 22:16:15 +0800 -- Dumping artifacts ...
2022-07-25 22:16:15 +0800 -- done
2022-07-25 22:16:15 +0800 -- Dumping pages ...
2022-07-25 22:16:15 +0800 -- done
2022-07-25 22:16:15 +0800 -- Dumping lfs objects ...
2022-07-26 00:41:39 +0800 -- done
2022-07-26 00:41:39 +0800 -- Dumping container registry images ...
2022-07-26 00:41:39 +0800 -- [DISABLED]
Creating backup archive: 1658767299_2022_07_26_xx.xx.xx-ee_gitlab_backup.tar ... done
Uploading backup archive to remote storage  ... skipped
Deleting tmp directories ... done
done
done
done
done
done
done
done
Deleting old backups ... skipping
Warning: Your gitlab.rb and gitlab-secrets.json files contain sensitive data
and are not included in this backup. You will need these files to restore a backup.
Please back them up manually.
Backup task is done.

修改存放目录

这一步注意创建新目录后修改权限,并修改配置文件

[root@gitlab ~]# mkdir -p /data/gitlab-data
[root@gitlab ~]# chown -R git:root /data/gitlab-data
[root@gitlab ~]# vim /etc/gitlab/gitlab.rb
# 把注释取消然后指定新的仓库存储位置,原配置是# git_data_dirs({ "default" => { "path" => "/mnt/nas/git-data" } })
git_data_dirs({ "default" => { "path" => "/data/gitlab-data" } })

/data/gitlab-data 是新挂载的目录,目标路径和其子路径必须不能为软链接。

关闭服务

迁移数据前关闭服务主要是怕别人再使用,其实已经凌晨应该没有人用了,为了保险起见还是先关了吧

gitlab-ctl stop

关闭时会自动关闭多个服务项

[root@gitlab-server gitlab]# gitlab-ctl stop
ok: down: alertmanager: 0s, normally up
ok: down: gitaly: 0s, normally up
ok: down: gitlab-exporter: 0s, normally up
ok: down: gitlab-workhorse: 0s, normally up
ok: down: grafana: 0s, normally up
ok: down: logrotate: 0s, normally up
ok: down: nginx: 1s, normally up
ok: down: node-exporter: 0s, normally up
ok: down: postgres-exporter: 1s, normally up
ok: down: postgresql: 0s, normally up
ok: down: prometheus: 0s, normally up
ok: down: puma: 0s, normally up
ok: down: redis: 0s, normally up
ok: down: redis-exporter: 1s, normally up
ok: down: sidekiq: 0s, normally up

迁移数据

rsync -av /var/opt/gitlab/git-data/repositories /data/gitlab-data/

末尾的/要有,这一点很多文章都提到了,但是它们给的例子中有没有,很容易造成迷惑,这一步其实就是把 repositories 完整的拷贝到 /data/gitlab-data/ 目录下,并保留原文件和目录的属性,不加 / 就少了一级目录,不过也有文章让使用 cp 或者 mv 命令迁移数据,虽然也能达到目的,但是不如 rsync 合适,他们无法保留原属性。

200G 数据拷贝了半小时,比备份操作快多了

刷新配置

gitlab-ctl reconfigure

这一步我在执行前以为瞬间就能完成,运行后才发现这个命令检查了很多数据,在控制台输出了一大堆内容,可以注意一下有没有报错信息。

启动服务

gitlab-ctl start

启动之后需要等大概一分钟才能访问,否则会报服务器内部错误,应该是有些服务还没完全开始工作吧

[root@gitlab-server gitlab]# gitlab-ctl start
ok: run: alertmanager: (pid 17961) 1s
ok: run: gitaly: (pid 17984) 0s
ok: run: gitlab-exporter: (pid 18023) 0s
ok: run: gitlab-workhorse: (pid 18025) 1s
ok: run: grafana: (pid 18054) 0s
ok: run: logrotate: (pid 18063) 1s
ok: run: nginx: (pid 18082) 0s
ok: run: node-exporter: (pid 18111) 1s
ok: run: postgres-exporter: (pid 18120) 0s
ok: run: postgresql: (pid 18129) 0s
ok: run: prometheus: (pid 18136) 1s
ok: run: puma: (pid 18151) 0s
ok: run: redis: (pid 18157) 1s
ok: run: redis-exporter: (pid 18173) 0s
ok: run: sidekiq: (pid 18183) 1s

总结

  • gitlab 服务器配置文件是 /etc/gitlab/gitlab.rb
  • gitlab 配置文中设置备份目录 gitlab_rails['manage_backup_path'],存储目录 git_data_dirs
  • gitlab-rake gitlab:backup:create 用于备份
  • gitlab 关闭组件 gitlab-ctl stop,开启组件 gitlab-ctl start,重启组件 gitlab-ctl restart
  • gitlab-ctl reconfigure 用于刷新配置
  • gitlab 迁移数据命令 rsync -av /var/opt/gitlab/git-data/repositories /data/gitlab-data/

==>> 反爬链接,请勿点击,原地爆炸,概不负责!<<==


曾经幅员辽阔,东征西讨的元朝占据了欧亚大陆,但持续时间不过百年,在历史长河中只是星星点点,若要在这长河中留下痕迹,必然要做出影响全人类的重大成就,而你我绝大多数都是普通人,承认自己是普通人的那一刻你已经成长了~

一个月黑风高的夜晚紧急完成gitlab服务器数据迁移相关推荐

  1. 项目案例之GitLab的数据迁移

    项目案例之GitLab的数据迁移 链接:https://pan.baidu.com/s/1CgaEv12cwfbs5RxcNpxdAg 提取码:fytm 复制这段内容后打开百度网盘手机App,操作更方 ...

  2. 服务器迁移域名和证书要改什么用,服务器数据迁移方案介绍 怎样更换网站域名?...

    服务器数据迁移方案介绍 怎样更换网站域名? 分类:云服务资讯 编辑: 浏览量:100 2021-07-12 08:32:44 由于企业在不断发展,现有的网站可能无法满足企业的需求,此时就需要对网站的硬 ...

  3. 阿里云服务器数据迁移

    关于阿里云服务器数据迁移 本文章献给阿里云服务器体验到期而又不知道如何将数据迁移到新服务器上的初级开发人员.如有不足,请大家指正! 1. 首先登录阿里云服务器官网.进人云服务器 ,找到过期或即将过期的 ...

  4. liunx服务器项目迁移,linux服务器数据迁移

    linux服务器数据迁移 内容精选 换一换 华为云帮助中心,为用户提供产品简介.价格说明.购买指南.用户指南.API参考.最佳实践.常见问题.视频帮助等技术文档,帮助您快速上手使用华为云服务. 部分云 ...

  5. 项目级服务器数据迁移流程

    项目级服务器数据迁移流程 创建时间: 2022/09/24 更新时间: 2022/09/24 编辑: 徐俊杰 项目级服务器数据迁移流程 以下操作针对最终迁移目标为移动机房托管的硬件服务器,其它服务器进 ...

  6. FastDFS服务器数据迁移

    一.FastDFS服务器数据迁移 1.1 安装FastDFS 首先搭建好新的FastDFS服务器(Tracker, Storage), 先配置好不用启动 1.2 修改新的Storage配置文件/etc ...

  7. GitLab 服务器的迁移以及注意点

    Git 已经是代码托管工具中的主流了,如果是自己搭建私有的 Git 服务器我们一般会使用 GitLab ,在<在CentOS7中安装GitLab> 一文中有介绍怎样在 CentOS7 中安 ...

  8. GitLab默认仓库存储目录更换及项目迁移 GitLab跨服务器数据迁移

    一.GitLab的数据从旧服务器迁移到新服务器 注释:旧服务器.新服务器GitLab版本保持一致,如果不一致得需要升级 1旧服务器上的安装版本 [root@iZbp1ac9uozodszcdkd98n ...

  9. 阿里云服务器数据迁移(同一个账号内)

    最近免费试用的阿里云服务器到期,购买了学生优惠的服务器,为了将数据迁移到新的服务器中,大费周章了一会,终于迁移完毕. 注意:此篇文章为自己学习JavaWeb过程中使用,请勿以专业目光审视,只负责给予部 ...

最新文章

  1. 国外AI教学网红网站
  2. 如何在Simulink中添加延迟环节
  3. Unity TIP3: 注入现有对象
  4. Linux多线程之线程同步(条件变量)
  5. mysql数据库开发经历_六年开发经验,整理Mysql数据库技巧笔记,全网最详细的笔记集合!...
  6. Docker结合Jenkins的持续构建实践
  7. mysql navicat报表_使用Navicat定时备份mysql数据库和创建报表并邮件自动发送
  8. Android 逆向分析(三)之动态调试Smali
  9. 使用大数据可视化平台有什么好处
  10. 小波 奇异点 matlab,Matlab小波变换对于奇异点的检测.doc
  11. idea overlays文件夹_怎样把cyanogenmod移植到你自己的设备
  12. 计算机学院的横幅,毕业横幅标语(精选50句)
  13. 笔记:python 绘图进阶
  14. 利用个人U盘制作简易加密狗
  15. STM32的推挽输出和开漏输出
  16. ajax 提交form表单,上传文件
  17. Ubuntu最全问题汇总(好东西分享了)
  18. CSS3 弹性布局 flex 项目属性
  19. Vue3究竟好在哪里?
  20. 小伙伴们都惊呆了!玩转raid10

热门文章

  1. “二进制负数 补码右移和原码算术右移 产生的真值偏差”分析
  2. Boot(重点SCSS☆☆☆☆☆)(day03)
  3. 知道生产日期和保质期来计算有效期至的方法和代码
  4. CSS常用五类选择器,经典好文
  5. SVG动画解释-学习笔记
  6. 背景差法目标识别python_运动目标检测(4)—背景差分法
  7. Office2016 Excel 快捷键备忘录
  8. html显示隐藏图片,简单的图片显示与隐藏
  9. 百度飞桨携手精诺数据打造智慧熔炼,AI让年轻人一秒变身“老师傅”
  10. 人间炼狱,人性在哪儿---------------- 二十年穿铁衣取胆,母熊含泪杀子并自杀...