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

#作者:闫乾苓

迁移步骤

停止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内文件列表,可以进行上传下载测试,验证功能是否正常。
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值