Nexus File类型Blob Stores迁移至Minio操作指南(下)

#作者:闫乾苓

文章目录

  • 迁移步骤
    • 停止nexus3服务
    • 备份nexus原始数据
    • 修改Blob Stores中元数据文件中类型为s3
    • 将Blob Stores中的二进制构件文件数据复制s3(minio)存储
    • 修改OrientDB中相关Blob Stores的属性
    • 修复OrientDB的文件权限
    • 开启nexus3服务
    • 迁移完成后数据验证
    • 迁移完成后repository上传下载功能测试
  • 迁移失败回滚步骤
    • 停止nexus服务
    • 回滚原始数据
    • 修复OrientDB数据库文件的权限为200
    • 回滚修改blob store元数据文件
  • 重新启动nexus服务
    • 验证是否回滚成功

迁移步骤

停止nexus3服务

因nexus3服务使用k8s deployment部署的1副本pod,所以停止服务只需将pod副本数缩减为0即可。

# kubectl scale --replicas=0 deployment devops-nexus -n nexus-2

在这里插入图片描述

备份nexus原始数据

对nexus的持久化的原始数据进行备份,以便迁移失败进行回滚操作,如果迁移的blob store中的数据量较大,可以不对其备份。
本例以default blob store进行说明,使用rsync工具进行数据备份时,使用—exclude参数排除不对blobs/default目录进行备份。

# rsync -a * --exclude 'blobs/default' /home/yanqianling/nexus/nexus_backup/file2s3/data_bak/

在这里插入图片描述

修改Blob Stores中元数据文件中类型为s3

在nexus 数据持久化的nfs server 服务器上,进入数据存储目录,比如本例:

# cd /home/nfsdata/nexus-2-nexus-pvc-pvc-8583da75-34f3-4710-be9c-c3532a3c9764/blobs

修改需要迁移的Blob Store(本例为default)的元数据文件metadata.properties,将类型由file改为s3
在这里插入图片描述

将Blob Stores中的二进制构件文件数据复制s3(minio)存储

使用aws命令将default目录下的所有文件复制到minio中已经创建的bucket: nexus-default

# aws s3 cp /home/nfsdata/nexus-2-nexus-pvc-pvc-8583da75-34f3-4710-be9c-c3532a3c9764/blobs/default/ s3://nexus-default/ --recursive --endpoint-url http://192.168.123.240:44127

注意:/home/nfsdata/nexus-2-nexus-pvc-pvc-8583da75-34f3-4710-be9c-c3532a3c9764/blobs/default/及s3://nexus-default/ 两个路径最后的“/”不可省略,表示将default目录下的所有文件复制到minio中名为nexus-default的bucket中。

复制过程如下:
在这里插入图片描述
复制完成后查看minio中名为nexus-default的bucket中的数据与default目录的文件大小基本一致:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
default目录暂时不要删除,等neuxs后续使用s3(minio)存储运行一段时间可稳定运行后后,再考虑是否对其进行删除,以释放磁盘空间。

修改OrientDB中相关Blob Stores的属性

首先启动OrientDB cli工具中console.sh,其路径为:orientdb-community-2.2.37/bin
在这里插入图片描述
在这里插入图片描述
再连接Nexus Orient DB

connect plocal:/home/nfsdata/nexus-2-nexus-pvc-pvc-8583da75-34f3-4710-be9c-c3532a3c9764/db/config/ admin admin

在这里插入图片描述
注意:
config为要操作的Orient DB的库名
默认的账号和密码均为admin

执行以下sql命令修改default bolb store的属性,增加s3(minio)的信息

UPDATE repository_blobstore MERGE {attributes: {s3: {region: 'us-east-1', bucket: 'nexus-default', prefix: '', expiration: -1, accessKeyId: '65WNgqImKSD3c0qX', secretAccessKey: 'n7iXpeOECUX3u3OOmzGPmS9M7JT4Y2nd', endpoint: 'http://169.169.174.183:29000', forcepathstyle: 'true'} } } WHERE name='default';

执行以下sql命令,将default blob store 类型改为s3

UPDATE repository_blobstore SET type = 'S3' WHERE name = 'default';

执行以下命令,查看是否修改完成

SELECT * FROM repository_blobstore

执行过程如下:
在这里插入图片描述
修改数据库完成后断开与数据库的连接并退出终端工具。
disconnect
exit
在这里插入图片描述

修复OrientDB的文件权限

因为上面修改OrientDB使用的是root权限,修改完成后,其相关数据库文件的熟悉被改为了root,需要将其修复为nexus服务pod容器中nexus账号的属主,属组的ID号200。以确保pod中服务启动时不会报权限错误。

# cd /home/nfsdata/nexus-2-nexus-pvc-pvc-8583da75-34f3-4710-be9c-c3532a3c9764/db
# chown -R 200:200 config/

在这里插入图片描述

开启nexus3服务

使用scale将pod副本数从0扩容到1,即开启nexus服务。

# kubectl scale --replicas=1 deployment devops-nexus -n nexus-2

在这里插入图片描述

# kubectl logs -f pod/devops-nexus-8574ff68f-6nwrw -n nexus-2

在这里插入图片描述
在这里插入图片描述

迁移完成后数据验证

nexus服务重新启动完成后,登录web管理界面,查看迁移的blob store的类型是否改为s3,数据大小是否符合预期。
在这里插入图片描述
点击迁移完成的blob store,正确应该可以进入到编辑页面,可以对其属性进行再次修改。
在这里插入图片描述
检查原repository中的文件:
在这里插入图片描述

迁移完成后repository上传下载功能测试

测试手动上传
在这里插入图片描述
提示上传完成
在这里插入图片描述
查看刚上传的文件包
在这里插入图片描述
blob store 显示文件数量和数据量都有相应的增加,说明上传功能正常。
在这里插入图片描述

下载测试
在这里插入图片描述
点击下载后,会弹出保存文件的窗口
在这里插入图片描述
文件下载完成
在这里插入图片描述
对比其md5值,验证其完整性,在win10系统进入powershell,进入下载文件的目录,使用以下命令计算其md5值

Get-FileHash -Path .\repo-03-testfile_10 -Algorithm MD5

在这里插入图片描述
对比nexus web界面此文件的md5值一致,说明迁移后原有文件的完整无损坏。
在这里插入图片描述

迁移失败回滚步骤

停止nexus服务

# kubectl scale --replicas=0 deployment devops-nexus -n nexus-2

在这里插入图片描述

回滚原始数据

将备份的原始数据复制回nexus的nfs 持久化存储

#cd /home/yanqianling/nexus/nexus_backup/file2s3/data_bak
# rsync -a * /home/nfsdata/nexus-2-nexus-pvc-pvc-8583da75-34f3-4710-be9c-c3532a3c9764/

修复OrientDB数据库文件的权限为200

# chown -R 200:200 config/

在这里插入图片描述
如果忘记修改权限,nexus pod将启动失败,日志会有如下提示:
在这里插入图片描述

回滚修改blob store元数据文件

将default/metadata.properties中类型由s3改为file
在这里插入图片描述

重新启动nexus服务

# kubectl scale --replicas=1 deployment devops-nexus -n nexus-2

在这里插入图片描述
查看日志,如下为nexus服务正常启动
在这里插入图片描述

验证是否回滚成功

登录web管理界面查看default blob store是否回滚为file类型、文件数量、数据量大小是否和迁移前一致
查看repository内文件列表,可以进行上传下载测试,验证功能是否正常。
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/33366.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mapbox基础,使用线类型geojson加载symbol符号图层,用于标注文字

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️symbol符号图层样式1.4 ☘️line线图层…

《C语言中“输入魔法师”:scanf函数的奥秘与技巧》

🚀个人主页:fasdfdaslsfadasdadf 📖收入专栏:C语言 🌍文章目入 一、引言二、scanf函数的基本语法三、格式说明符的种类及用法(一)整数输入(二)浮点数输入(三&…

Quickwit+Jaeger+Prometheus+Grafana搭建Java日志管理平台

介绍 生产服务应用可观测性在当下比较流行的方案,其中出现了大量高性能、开箱即用、易上手的的开源产品,大大丰富了在可观测性领域产品的多样性,本文讲述基于OTLP协议推送Java项目遥测数据(日志、指标、链路)到后端存储…

Unity Timeline 扩展

这里认为大家已经会timeline的基本使用了,只介绍怎么自定义扩展。 第一步.自定义Track 首先要自定义一条轨道。剪辑是要在轨道里跑的,系统自带的轨道我们加不了自定义剪辑,得新建自己用的。这个很简单。 [TrackClipType(typeof(TransformTw…

文生图技术的演进、挑战与未来:一场重构人类创造力的革命

摘要 文生图(Text-to-Image Generation)技术作为生成式人工智能(Generative AI)的核心分支,正在以颠覆性力量重塑内容生产范式。本文系统梳理文生图技术从早期实验到多模态大模型的演进路径,分析其在设计、…

如何手动使用下载并且运行 QwQ-32B-GGUF

首先使用安装 pip install ModelScope 使用 ModelScope 下载对应的模型 modelScope download --model Qwen/QwQ-32B-GGUF qwq-32b-q4_k_m.gguf 第二步开始下载 ollama git clone https://githubfast.com/ggerganov/llama.cpp # githubfast.com 可以加速下载 切换到目录&am…

SPring 学习积累1 关于下载相关jdk maven 版本

3.15.1 注意下载的版本 有些是不适配的,官网有提示; 3.15.2 注意配置环境变量时需要注意admistartor 中的java路径和系统变量是否一致,一行要一致,不然后续安装maven之后,使用命令 mvn -version时会显示以下错误&…

Excel(函数篇):Vlookup函数 详细用法

目录 Vlookup函数基础用法精确查找易错问题员工信息查询表 进阶用法近似匹配(模糊查找)结合通配符查找反向查找 高级技巧多条件查找动态列查询 错误处理屏蔽错误值处理数字/文本格式问题注意事项常见错误解决方案 拓展用法跨表与跨工作簿查找查找返回多列…

对最近的刷题做一个小总结(关于动态规划和贪心)

文章目录 1. 小总结2. 两道算法题2.1 数组中两个字符串的最小距离2.2 孩子们的游戏 1. 小总结 最近刷了很多算法题,真正了解到的算法应是dfs,多元dfs,以及动态规划和贪心。 dfs和多元dfs目前并没有真正深入研究过,不过熟悉套路之…

jmeter分布式原理及实例

一、执行原理 二、相关注意事项 关闭防火墙所有上网控制机、代理机、服务器都在同一个网络上所有机器的jmeter和java版本必须一致关闭RMI.SSL开关 三、配置和执行 配置: 修改bin/jmeter.properties文件: 代理机: 修改服务端口&#xff1…

C++ STL 详解 ——vector 的深度解析与实践指南

一、vector 的核心概念与底层机制 1.1 动态数组的本质 连续内存存储:与普通数组相同,vector 使用连续的内存空间,支持 O (1) 时间复杂度的随机访问。动态扩容特性:通过push_back等操作自动调整容量,无需手动管理内存…

【SpringBoot】——在做一些项目中所学到的新的技术栈和一些小技巧(主要为MQ,详细请看目录和文章)

🎼个人主页:【Y小夜】 😎作者简介:一位双非学校的大三学生,编程爱好者, 专注于基础和实战分享,欢迎私信咨询! 🎆入门专栏:🎇【MySQL&#xff0…

0经验cursor开发一款跨端app

设备:mac电脑cursor 1.输入诉求 我要实现一个跨端的地址应用,使其可以在ios、安卓、小程序和网页端都可以使用。这是一个demo的项目,功能不必要太过复杂,下面需要你和我多次沟通完成这个任务。你先根据我的内容输入&#xff0c…

Element Ui - 编辑时表单校验信息未清空问题处理

Element Ui 关闭对话框清空验证消息&#xff0c;清除form表单的操作 首先在对话框 取消按钮 添加 click事件&#xff0c;例如&#xff1a;&#xff08;ps&#xff1a;callOf 里面的addGroupData和ref - - &#xff09; <div slot"footer" class"dialog-foo…

OpenCV图像加权函数:addWeighted

1 addWeighted函数 在OpenCV 里&#xff0c;addWeighted 函数的作用是对两个图像进行加权求和&#xff0c;常用于图像融合、图像过渡等场景。函数如下&#xff1a; cv2.addWeighted(src1, alpha, src2, beta, gamma[, dst[, dtype]])2 参数解释 src1&#xff1a;第一个输入图…

Science Robotics 利用机器学习进行鳐鱼的仿生设计

对于海洋生物而言&#xff0c;生物力学和流体动力学力都会对游泳速度施加物理限制&#xff0c;促使游泳策略和鳍形状的趋同进化。鉴于这些限制是与尺度相关的&#xff0c;如雷诺数&#xff08;Re&#xff09;&#xff0c;这就产生了自然运动缩放定律&#xff0c;该定律根据生物…

基于ssm的一家运动鞋店的产品推广网站的设计

项目简介 一家运动鞋店实现了以下功能&#xff1a; 实现了用户在线选择试题并完成答题&#xff0c;在线查看考核分数。管理员管理收货地址管理、购物车管理、字典管理、留言版管理、新闻信息管理、产品管理、产品收藏管理、产品评价管理、产品订单管理、单页数据管理、用户管…

什么是后训练?大语言模型训练后优化方法综述,87页pdf

大语言模型&#xff08;LLMs&#xff09;的出现彻底改变了自然语言处理领域&#xff0c;使其在从对话系统到科学探索的各个领域中变得不可或缺。然而&#xff0c;其预训练架构在特定场景中往往表现出局限性&#xff0c;包括推理能力受限、伦理不确定性以及领域特定性能欠佳等问…

python开发订单查询功能(flask+orm bee)

1. 搭建python环境。 可以参考其它文档。 此处python使用 3.12 IDE随意&#xff0c;PyCharm 或 Eclipse PyDev也可以。 2. Flask 2.1 安装Flask pip install Flask 2.2 一个最简单的flask实例 创建一个工程&#xff0c; 新建一个 main.py文件&#xff0c; 输入以下内容…

工作记录 2017-01-11

工作记录 2017-01-11 序号 工作 相关人员 1 协助BPO进行Billing的工作。 修改邮件上的问题。 更新RD服务器。 郝 更新的问题 1、修改了Patient Insurance的文件上传。 1.1 文件存储改为MedI“EHRWfs”Account“patientInfo”MRN 1.2 “Upload Files” to “Upload/Vie…