企业级微服务构建-01搭建和使用Maven私有仓库(Nexus)-03备份和恢复
亲历的企业级微服务的完整构建过程-系列文章目录
本人参与了这次的企业级微服务的完整构建,想要记录下来以便以后复习,同时也想分享给小伙伴们,抛砖引玉,欢迎大家提出自己的意见和建议,大家一起探讨一起成长。以下为该系列所有文章的链接:
- 搭建和使用Maven私有仓库(Nexus)(更新中。。。)
- API网关(待发布)
- 认证中心(待发布)
- Redis框架(待发布)
- RabbitMQ(待发布)
- MyBatis(待发布)
- Web模块(待发布)
- 低代码(待发布)
- Core
- JSON工具类(待发布)
- 日期工具类(待发布)
- String工具类(待发布)
- Number工具类(待发布)
- Spring操作工具类(待发布)
- API结构统一封装(待发布)
- 监控和告警(待发布)
- MongoDB(待发布)
搭建和使用Maven私有仓库(Nexus)-系列文章目录
说明:
- 以下部分模块,绝大多数人,在日常工作中都是用不到的,所以我就没有介绍,毕竟时间是最重要的成本,没必要花大量时间在我们用不到的内容上。
- 下面的“1 通用”章节,系列文章中的每一篇内容都相同,介绍一些背景、约定和官网链接等,大家只要知道这些内容了,就不用每篇文章都去看了。
- 安装步骤
- 登录和界面
- 备份和恢复
- 管理:讲述了Nexus的管理功能,包括用户管理、权限管理、任务管理等
- 管理菜单
- 仓库管理
- 格式(Formats)(暂时用不到,略)
- 分期(Staging)(暂时用不到,略)
- 标记(Tagging)(暂时用不到,略)
- Maven和Jenkins插件(暂时用不到,略)
- 任务(Tasks)
- 访问控制
- 领域(Realms)管理
- 权限(Privileges)管理
- 角色(Roles)管理
- 用户(Users)管理
- 默认角色(Default Role)管理
- 内容选择器(Content Selectors)管理
- 用户认证(暂时用不到,略)
- 能力(Capabilities)(暂时用不到,略)
- 节点(Nodes)
- 配置SSL
- HTTP和HTTPS请求和代理设置(暂时用不到,略)
- 电子邮件服务器配置
- 重试限制配置(暂时用不到,略)
- 审计
- 安装和更新许可证
- 支持功能
- 使用Nexus仓库:讲述了使用(而非管理) Nexus Repository 的方方面面的知识
- 仓库管理器概念:使用 Nexus 需要先理解一些概念,该节内容提供了必要的背景和知识
- 组件、仓库和仓库格式(暂时用不到,略)
- 一个示例 - Maven 仓库格式(暂时用不到,略)
- 管理仓库(暂时用不到,略)
- 软件供应链自动化(暂时用不到,略)
- 代理仓库概念(暂时用不到,略)
- 用户界面概述
- 搜索组件(暂时用不到,略)
- 浏览仓库和仓库组
- 管理当前登录用户的资料
- 上传组件
- 查看标签(仅可用于Pro版本,略)
- 仓库管理器概念:使用 Nexus 需要先理解一些概念,该节内容提供了必要的背景和知识
- 集成(主要讲述了如何使用 APIs 和 集成外部工具)(暂时用不到,略)
- Maven中配置和使用Nexus
本文目录
- 亲历的企业级微服务的完整构建过程-系列文章目录
- 搭建和使用Maven私有仓库(Nexus)-系列文章目录
- 正文
- 1 通用
- 1.1 前言
- 1.2 约定
- 1.3 官方文档
- 2 备份和恢复
- 2.1 OrientDB数据库数据备份
- 2.2 所有数据备份
- 2.3 OrientDB数据库数据恢复
正文
1 通用
1.1 前言
在构建微服务之前,需要先做一些准备工作,比如Maven私有仓库的管理。因为有些微服务模块是作为公共组件被其他微服务引用的,这些公共的微服务,就要设置为依赖,并用Maven仓库管理起来,将自定义的依赖上传到Maven中央仓库并不是一个明智的选择。原因如下:
- 最重要的是隐私和安全问题,我们不可能把企业内部开发的组件上传到公共网络,让所有人能够随便下载;
- 上传很麻烦,上传方法详见 https://blog.csdn.net/agonie201218/article/details/124800163;
- 可能不允许上外网,则无法上传;
- 可能会有网络延迟、上传缓慢的问题。
- 降低了中央仓库的负担。
综上,我们最好是搭建自己的私有Maven仓库,而当前最流行的就是 Sonatype Nexus Repository Manager
,以下简称 Nexus
。
1.2 约定
- 我使用的版本是
OSS 3.40.1-01
,整个系列的文章都是在该版本上展开介绍,你们可能使用的是 Pro 版,少数模块是我的 OSS 版上没有的。不过一般使用的话,OSS 版已经够用了 - 文中出现的
Repository
,中文称之为“仓库” - 文中出现的变量
$install-dir
,值为/opt/sonatype/nexus
- 文中出现的变量
$data-dir
,值为/opt/sonatype/sonatype-work/nexus3
,或/nexus-data
,两者都是在docker容器nexus中的路径,一个是软链接,一个是实际路径 - 文中出现的变量
${jetty.etc}
,值为/opt/sonatype/nexus/etc/jetty
- NXRM:Nexus Repository Manager,即 Nexus 仓库管理器
- RBAC:Role-Based Access Control,即 基于角色的访问控制
1.3 官方文档
提供Nexus的官方文档:https://help.sonatype.com/repomanager3/
官方文档包含了系统要求、搭建方法,以及各种操作方法等,内容已经非常全面了。
2 备份和恢复
背景: Nexus有2种版本:OSS,免费版;Pro,收费版。因为OSS版本只能使用OrientDB数据库,Pro版本才能使用其他数据库(如H2, PostgreSQL),而我使用的是免费的OSS版,所以这里就介绍下如何备份和恢复 OrientDB。以后如果用到Pro版,再补上其他数据库的备份恢复步骤。
2.1 OrientDB数据库数据备份
创建备份任务:点击图中的“Create task”按钮
创建备份任务:点击“Admin - Export databases for backup”项
创建备份任务:点击“Admin - Export databases for backup”项,配置备份项目
需要配置 任务名称、通知邮箱、通知时机、备份路径、任务频率等。其中,“Task frequency”(任务频率),可以配置为基础的“每日、每周”等,也可以使用高级的CRON表达式,上面2张截图中分别使用了2种方式。创建备份任务:配置完点击“Save”按钮,就可以在 Tasks列表中看到我们刚刚配置好的任务记录了
如下图所示:
点击上图中的“bak-data”记录,进入到详情页面,可以删除、手动运行、手动停止 任务,也可以查看任务运行汇总信息,还可以修改任务(点击 ‘Settings’按钮):
运行任务:可以点击上图中的“Run”按钮手动运行,也能等待定时任务自动运行
备份任务运行完成后可以在配置的备份路径下找到备份文件,一共3个:# 我这里是在宿主机的物理路径下查看的 root@work:/var/lib/docker/volumes/nexus-data/_data/bak# ll 总用量 580 drwxr-xr-x 2 200 200 4096 7月 1 10:45 ./ drwxr-xr-x 16 200 200 4096 7月 1 10:46 ../ -rw-r--r-- 1 200 200 233985 7月 1 10:45 component-2022-07-01-02-45-00-3.40.1-01.bak -rw-r--r-- 1 200 200 211691 7月 1 10:45 config-2022-07-01-02-45-00-3.40.1-01.bak -rw-r--r-- 1 200 200 134769 7月 1 10:45 security-2022-07-01-02-45-00-3.40.1-01.bak
注:
6. 当任务运行时,它会将备份数据导出到“Backup location”字段中指定的路径。一次备份会生成3个 .bak 文件:
·component - 构成仓库管理器中组件的所有相关数据
·config - 常规管理配置,例如计划任务和电子邮件服务器配置
·security - 所有用户和访问权限管理内容
所有备份文件都基于任务开始时间的时间戳格式显示。
配置了通知邮箱没用,任务成功或失败后,并没有发送邮件给该邮箱,后台日志中有一个提示消息:
2022-07-01 02:49:24,866+0000 WARN [event-12-thread-38] *SYSTEM org.sonatype.nexus.internal.email.EmailManagerImpl - No email enabled but asked to send anyway.
。谁研究出解决办法,可以告诉我。2022-07-05 15:51: 这个问题我解决了,是因为我没有配置和启用发送邮件服务器(注意:
Enable
复选框必须打勾,启用它):
2.2 所有数据备份
数据库数据备份(参考5.1节)
在运行导出任务的同时备份安装目录和数据目录中的自定义配置
备份所有 blob 存储
直接备份存储 blob 的目录,通常是$data-dir/blobs
。节点ID 备份
每个 Nexus Repository 实例都与一个不同的 ID 相关联。我们必须备份此 ID,以便 Blob 存储指标(磁盘上 Blob 的大小和数量)和 Nexus Firewall 报告在还原时起作用。要备份以保留节点 ID 的文件位于以下位置:$data-dir/keystores/node/
。将所有备份的配置和导出的数据存储在一起
注:对数据库的写访问被暂时挂起,直到备份完成。建议在下班时间安排备份任务(比如写备份脚本,放到定时任务中运行)。
2.3 OrientDB数据库数据恢复
- 停止 Nexus
- 进入目录
$data-dir/db
,删除以下3个目录:- component/
- config/
- security/
- 进入存储导出数据库备份文件的目录
$data-dir/bak
- 将相应的
.bak
文件复制到$data-dir/restore-from-backup
进行恢复(注意:对于版本 3.10.0 或更早版本,请使用$data-dir/backup
作为恢复位置) - 还原与 DB 备份对应的 Blob 存储备份
- 重新启动 Nexus
- 验证 Nexus 仓库是否正常运行
- 从目录
$data-dir/restore-from-backup
中删除恢复用到的.bak
文件 - 验证:我们可以通过查看之前从
$data-dir/nexus3/db
中删除的数据库目录及其中的内容是否完全恢复,来验证恢复是否完成
注意:
当组件数据库恢复时,包含组件的相应 blob 存储也必须恢复。不这样做会导致 blob存储和数据库之间出现同步问题。
如果 Blob 存储和数据库备份不是在完全相同的时刻进行的,它们可能在还原后不同步。 要解决此问题,请在
Adminitration
管理界面中的System → Tasks
下安排并运行任务Repair - Reconcile component database from blob store
。
企业级微服务构建-01搭建和使用Maven私有仓库(Nexus)-03备份和恢复相关推荐
- 企业级微服务构建-01搭建和使用Maven私有仓库(Nexus)-17审计
亲历的企业级微服务的完整构建过程-系列文章目录 本人参与了这次的企业级微服务的完整构建,想要记录下来以便以后复习,同时也想分享给小伙伴们,抛砖引玉,欢迎大家提出自己的意见和建议,大家一起探讨一起成长. ...
- 企业级微服务构建-01搭建和使用Maven私有仓库(Nexus)-05仓库管理
亲历的企业级微服务的完整构建过程-系列文章目录 本人参与了这次的企业级微服务的完整构建,想要记录下来以便以后复习,同时也想分享给小伙伴们,抛砖引玉,欢迎大家提出自己的意见和建议,大家一起探讨一起成长. ...
- 企业级微服务构建-01搭建和使用Maven私有仓库(Nexus)-09权限(Privileges)
亲历的企业级微服务的完整构建过程-系列文章目录 本人参与了这次的企业级微服务的完整构建,想要记录下来以便以后复习,同时也想分享给小伙伴们,抛砖引玉,欢迎大家提出自己的意见和建议,大家一起探讨一起成长. ...
- 企业级微服务构建-01搭建和使用Maven私有仓库(Nexus)-29上传组件
亲历的企业级微服务的完整构建过程-系列文章目录 本人参与了这次的企业级微服务的完整构建,想要记录下来以便以后复习,同时也想分享给小伙伴们,抛砖引玉,欢迎大家提出自己的意见和建议,大家一起探讨一起成长. ...
- 搭建Maven私有仓库
内部的项目并且需要多团队协作模块化开发的时候,自然会想到搭建自己的maven私有仓库,本文主要介绍如何搭建maven私服和如何在项目中添加依赖. Maven 的远程仓库分为中央仓库和私服仓库.中央仓库 ...
- springcloud架构特点_打造企业级微服务平台架构,分布式应用场景管理
微服务平台架构是一项在云中部署应用和服务的新技术.大部分围绕微服务的争论都集中在容器或其他技术是否能很好的实施微服务. 微服务系统可以在"自己的程序"中运行,并通过"轻量 ...
- 《深入理解 Spring Cloud 与微服务构建》第十二章 服务注册和发现 Consul
<深入理解 Spring Cloud 与微服务构建>第十二章 服务注册和发现 Consul 文章目录 <深入理解 Spring Cloud 与微服务构建>第十二章 服务注册和发 ...
- 《深入理解Spring Cloud与微服务构建》出版啦!
作者简介 方志朋,毕业于武汉理工大学,CSDN博客专家,专注于微服务.大数据等领域,乐于分享,爱好开源,活跃于各大开源社区.著有<史上最简单的Spring Cloud教程>,累计访问量超过 ...
- 利用微服务构建现代应用(一)
本文讲的是利用微服务构建现代应用(一),[编者的话]本文介绍了微服务如何消除传统的整体化软件架构存在的问题,微服务跟SOA的关系,微服务所利用的新技术如容器.编排框架等,以及使用微服务带来的好处. 本 ...
最新文章
- 遮挡人脸检测--Detecting Masked Faces in the Wild with LLE-CNNs
- ubuntu安装五笔输入法(ibus-table-wubi)
- “约见”面试官系列之常见面试题之第五十八篇之join和split(建议收藏)
- mysql 检查_检查MySQL的健康状况
- 蓝桥杯 ADV-187 算法提高 勾股数
- 关于审核被拒申诉那点事
- 细节模拟题:素数回文
- 如何简单访问HTTP的GET、POST、PUT、DELETE,MOCK数据
- emacs linux 教程,Emacs基础入门教程(三)使用 Emacs 必知必会
- recordcount=-1的原因以及解决方法
- 昭通脱贫致富-农业大健康·林裕豪:从玉农业谋定“责任”
- 十大深网搜索引擎,它们提供了你无法从Google和Bing获取的信息
- 电报与二极管三极管的出现
- SDIO wifi Marvell8801/Marvell88w8801 介绍(四) ---- Marvell8801/Marvell88w8801命令/事件/数据格式
- 从菜鸟到入门(一)- 开发工具
- 徐小平谈创业三大诀窍,真格基金的历程
- 129、基于51单片机数字万用表测电压电流电阻仿真设计
- python秒表倒计时模块
- 毕业论文格式注意事项
- ABB机器人与c#程序socket通信连接不上解决方法