Gitlab服务器数据迁移及版本升级

server/2025/3/27 6:04:09/

公司目前使用的GITLAB服务器,docker方式部署,GITLAB版本为13.11.0,由于版本太老存在安全漏洞,原服务器还部署了其他应用,不方便做升级操作,解决思路是将数据迁移新版本的gitlab服务器

由于gitlab数据备份恢复必须在同一版本之间进行,所以要在新的服务器部署同版本gitlab,恢复原服务器备份文件数据后再进行升级。

根据gitlab官方文档,gitlab服务器不支持跨大版本升级,只能按官网给出的升级路径一步步升级。

从当前的gitlab13.11.0升级到最新要依次完成以下版本升级:

gitlab/gitlab-ce:13.12.15-ce.0

gitlab/gitlab-ce:14.0.12-ce.0

gitlab/gitlab-ce:14.3.6-ce.0

 gitlab/gitlab-ce:14.9.5-ce.0

 gitlab/gitlab-ce:14.10.5-ce.0

 gitlab/gitlab-ce:15.0.5-ce.0

 gitlab/gitlab-ce:15.4.6-ce.0

 gitlab/gitlab-ce:15.11.13-ce.0

 gitlab/gitlab-ce:16.3.9-ce.0

 gitlab/gitlab-ce:16.7.10-ce.0

 gitlab/gitlab-ce:16.11.10-ce.0

 gitlab/gitlab-ce:17.1.8-ce.0

 gitlab/gitlab-ce:17.3.7-ce.0

 gitlab/gitlab-ce:17.5.5-ce.0

 gitlab/gitlab-ce:17.8.5-ce.0

 gitlab/gitlab-ce:17.9.2-ce.0

一、新GITLAB服务器的安装部署

参见DOCKER模式部署GITLAB_docker部署gitlib-CSDN博客

二、原服务器数据备份及导出

1、停止GitLab服务进程‌

在容器内停止GitLab核心服务以冻结数据写入:

进入容器

# docker exec -it gitlab bash 

停止核心服务

# gitlab-ctl stop puma

# gitlab-ctl stop sidekiq

2、备份数据

# gitlab-backup create

或者

# gitlab-rake gitlab:backup:create

生成的备份文件如1741851022_2025_03_13_13.11.0_gitlab_backup.tar

3、数据导出到新服务器

备份文件可以直接在gitlab容器配置的data卷目录下的backups中找到

也可用

# docker cp gitlab:/var/opt/gitlab/backups/1741851022_2025_03_13_13.11.0_gitlab_backup.tar  /home复制出来

用scp或sftp 将备份文件和配置文件(gitlab-secrets.json和gitlab.rb)传输到新服务器

三、数据恢复

在新服务器启动gitlab容器后

1、将备份文件配置文件复制到容器中

备份文件可以直接复制到配置的data卷目录下(例如 /gitlab/data/backups)

配置文件可以直接复制到配置的config卷目录下(例如 /gitlab/config)

# cp /home/1741851022_2025_03_13_13.11.0_gitlab_backup.tar /gitlab/data/backups

或用docker cp

# docker cp /home/1741851022_2025_03_13_13.11.0_gitlab_backup.tar  gitlab:/var/opt/gitlab/backups/

2、进入容器

# docker exec -it gitlab bash

3、修改备份文件权限

# cd /var/opt/gitlab/backups

# chown git:git /var/opt/gitlab/backups/1741851022_2025_03_13_13.11.0_gitlab_backup.tar

4、停止核心服务

# gitlab-ctl stop puma

# gitlab-ctl stop sidekiq

5、恢复数据

# gitlab-rake gitlab:backup:restore BACKUP=1741851022_2025_03_13_13.11.0

这一步会有报错:

025-03-18 08:50:34 +0000 -- Restoring database ...

Restoring PostgreSQL database gitlabhq_production ...

ERROR: must be owner of extension pg_trgm

ERROR: must be owner of extension btree_gist

ERROR: must be owner of extension btree_gist

ERROR: must be owner of extension pg_trgm

虽有报错,数据恢复仍可完成,重启gitlab后登录可看到原服务器数据。

此错误是由于PostgreSQL扩展的所有者权限不匹配导致的,可采用以下方法消除:

进入GitLab容器

# docker exec -it gitlab bash

进入PostgreSQL控制台

gitlab-psql -d gitlabhq_production

提升当前用户为超级用户

ALTER ROLE gitlab SUPERUSER;

退出PostgreSQL控制台

\q

恢复数据

# gitlab-rake gitlab:backup:restore BACKUP=1741851022_2025_03_13_13.11.0

进入PostgreSQL控制台

gitlab-psql -d gitlabhq_production

撤销超级用户权限(安全恢复)

ALTER ROLE gitlab NOSUPERUSER;

退出PostgreSQL控制台

\q

最后退出容器,重启容器。

四、版本升级

1、停止容器

# docker compose down

2、修改版本号

# vi docker-compose.yml

3、启动容器

# docker compose up -d

循环上述过程直至最新版本。

注:每次GITLAB容器启动后,后台升级任务需要一段时间才能完成,可在管理中心—监控—后台迁移/后台任务页面查看,迁移任务全部完成后才能进行下一版本升级,否则可能升级失败。


http://www.ppmy.cn/server/176965.html

相关文章

Word 小黑第40套

对应大猫43 主题 -浏览主题 -选择W样式标准文件就行 1级段落和2级段落(用项目符号不影响原本段落文字符号 颜色修改为自动) 整段变红的 不是把光标定位到红色字体那里 要选择几个红色字体 再创建样式 插入的空白页一定要是下一页,不能插空白…

Git(12)GitLab持续集成(CICD)

Git(12)之GitLab持续集成(CI/CD) Author: Once Day Date: 2025年3月18日 一位热衷于Linux学习和开发的菜鸟,试图谱写一场冒险之旅,也许终点只是一场白日梦… 漫漫长路,有人对你微笑过嘛… 全系列文章可查看专栏: Git使用记录_Once_day的博…

对接OpenAI 4O RealTime实现语音实时翻译

目录 资源获取后端实现ffmpeg处理音频文件 前端实现效果 资源获取 OpenAI官网Azure OpenAI 我这里用的是第二种,从Azure上获取的模型资源,想要从这获取得先注册Azure,并添加OpenAI资源,并且部署OpenAI 4O RealTime模型&#xff0…

Git笔记(5):GIT停止跟踪已提交的文件

例如:你误将 node_modules 或 logs 等目录提交到了 Git,后来添加到 .gitignore 但发现 Git 仍在跟踪它们, 此时需要: # 从暂存区移除全部文件(保留本地文件) git rm -r --cached . # 重新暂存需要的文件(.gitignore 已…

去中心化交易所与中心化交易所的差异

在2025年数字货币市场爆发式增长的背景下,去中心化交易所(DEX)与中心化交易所(CEX)的竞争已从技术维度延伸至金融治理范式层面。两者的差异不仅体现在资产托管方式,更折射出对金融权力分配、风险控制逻辑和…

SpringBoot的启动原理?

大家好,我是锋哥。今天分享关于【SpringBoot的启动原理?】面试题。希望对大家有帮助; SpringBoot的启动原理? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Spring Boot的启动原理主要是通过 SpringApplication 类来…

使用 Redis 实现接口缓存:提升性能的完整指南

1. 为什么需要接口缓存? 接口缓存的主要目的是减少重复计算和数据库查询,从而提升性能。常见场景包括: • 高并发请求:缓存热门数据,避免频繁访问数据库。 • 复杂计算:缓存计算结果,减少 CPU …

hadoop集群配置-scp拓展使用

任务1:在hadoop102上,将hadoop101中/opt/module/hadoop-3.1.3目录拷贝到hadoop102上。 分析:使用scp进行拉取 操作: 先登录到hadoop2使用命令: scp -r roothadoop101:/opt/module/hadoop-3.1.3 /opt/module/ 任务2&…