nexus仓库的数据备份及恢复

1 Nexus备份

nexus完整的备份需要执行如下备份步骤:

1、Blob文件的备份

2、数据库备份

Blob文件备份:

可以直接使用tar命令将$data-dir/blobs目录下的所有目录打包进行备份。$data-dir缺省在sonatype-work/nexus3目录。

数据库备份:

1、在管理页面中新建Tasks,创建定时备份任务。配置Admin - Export databases for backup

2、填入备份文件的存放路径和执行频率。

2 nexus恢复

1、停止nexus服务:service nexus stop

2、移除$data-dir/db中的下列目录:

。accesslog

。analytics

。audit

。component

。config

。security

3、将备份目录中的所有.bak文件拷贝到$data-dir/restore-from-backup

4、删除$data-dir/blobs下的所有文件,然后将备份的Blob文件解压到$data-dir/blobs。

5、重启nexus。

3 记录一次nexus异常停机造成OrientDB数据库损坏处理

描述:

启动报错:unable to read database frozen state marker file

  1. nexus无法启动,日志报错如上。
  2. 备份的文件无法正常恢复数据库

3.1 尝试修复数据库

参考:https://blog.csdn.net/qq_27384769/article/details/114671745

https://blog.csdn.net/mutian6655/article/details/112758278

停止服务

1
2
3
# 停止nexus
nexus stop
# 备份$nexus-data/nexus3/db 目录

使用自带的jar包工具连接数据库

1
2
3
4
5
6
7
8
# 到Nexus安装目录下/lib/support下,运行nexus-orient-console.jar
cd nexus-3.21.2-03/lib/support

# 启动console
java -jar nexus-orient-console.jar

# 如果Nexus库已经很大,在执行后面的导出操作时可能会报heap OOM错误,可以在启动时调大内存
java -jar -Xms4g -Xmx4g nexus-orient-console.jar

数据库的相关操作命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 连接出错的数据库(注意出错的库不见得与笔者一致,注意查看出错日志)
# 备注:windows路径反斜杠要改成 /,例如:G:/nexus/db
orientdb> connect PLOCAL:/home/app/nexus/sonatype-work/nexus3/db/component admin admin

# 导出
orientdb {db=component}> EXPORT DATABASE /backup/orientdb-component.export

# 关闭连接
orientdb {db=component}> DISCONNECT

# 删除出问题的库
orientdb> DROP DATABASE PLOCAL:/home/app/nexus/sonatype-work/nexus3/db/component admin admin

# 重新创建出问题的库
orientdb> CREATE DATABASE PLOCAL:/home/app/nexus/sonatype-work/nexus3/db/component admin admin

# 导入
orientdb {db=component}> IMPORT DATABASE /backup/orientdb-component.export.gz

# 关闭连接
orientdb {db=component}> DISCONNECT

# 退出控制台
orientdb> EXIT

连接数据库后,尝试修复数据库

备注:修复前,请删除对应数据库目录下的 *.wal文件

1
2
3
4
5
6
7
8
# 尝试修复数据库,重建索引等信息
# 修复
REBUILD INDEX *
REPAIR DATABASE --fix-graph
REPAIR DATABASE --fix-links
REPAIR DATABASE --fix-ridbags
REPAIR DATABASE --fix-bonsai
DISCONNECT

3.2 本次出问题的数据库如下

问题数据库: component config 2个数据库,component 经过修复恢复,config无法修复。

解决办法:

  1. 通过上面步骤尝试修复数据库
  2. 重新解压缩neuxs安装包文件,并启动服务进行初始化
  3. 关闭nexus服务
  4. 删除 db目录下的component conf securtiy 数据目录
  5. 拷贝G:/backup下的2020年的备份文件到新$data-dir/restore-from-backup目录
  6. 拷贝blobs下的数据到新$data-dir/blobs
  7. 启动nexus,恢复数据成功
  8. 关闭nexus
  9. 拷贝旧版本下的数据库目录component和securtiy到新$data-dir/db
  10. 启动nexus成功,出现新问题(com.orientechnologies.orient.core.exception.OCommandExecutionException: Target index ‘BROWSE_NODE_REPOSITORY_NAME_PARENT_PATH_NAME_IDX’ not found
    DB name="component")造成Browse浏览数据都为空![image-20221008165046779](https://operationman-1258630122.cos.ap-nanjing.myqcloud.com/images-master/image-20221008165046779.png)
    
  11. 通过数据库连接工具,删除browse_node及浏览器索引(参考https://issues.sonatype.org/browse/NEXUS-16419处理)
1
2
3
4
5
6
7
8
# 执行此命令,将路径的 nexus-3.9.0-01 部分替换为您的 nexus 安装路径:

java -jar nexus-3.9.0-01/lib/support/nexus-orient-console.jar
# 在命令提示符下执行:

connect plocal:sonatype-work/nexus3/db/component admin admin
drop class browse_node
exit
  1. 启动nexus,数据自动重建,可正常浏览数据。

备注:根据这次处理,说明服务的自动备份存在一定问题,一定要定期做数据恢复测试

-------------本文结束感谢您的阅读-------------
坚持原创技术分享,您的支持将鼓励我继续创作!