artifactory - JFrog Artifactory 系统还原失败
问题描述
在我们的组织中,我们正在运行 Artifactory Pro 版本,每天将数据导出到 NAS 驱动器(完整系统导出)。每天晚上它会运行大约 4 个小时,并写下“系统导出成功”。是时候将我们的实例迁移到基于 PostgreSQL(现在在 derby 上运行)了。我已阅读您需要使用完整的系统导入来完成此操作。
几个数字:
- 文物:近100万件
- 数据大小:超过2TB的数据
- 导出数据量:超过5TB数据
如果您还在思考为什么导出数据量比磁盘空间使用量大 2 倍以上,我们的猜测是 docker 镜像在存储在 docker 注册表中时(每层)进行了重复数据删除,但在导出时没有重复数据删除。
此外,我通过将数据同步到另一台服务器,然后在那里启动完全相同的设置,成功迁移了实例。工作得很好。
在另一台机器上启动完全相同的设置(全新安装)并运行系统导入时,它会失败并显示以下日志:
[/data/artifactory/logs/artifactory.log] - "errors" : [ {
[/data/artifactory/logs/artifactory.log] - "code" : "INTERNAL_SERVER_ERROR",
[/data/artifactory/logs/artifactory.log] - "message" : "Unable to import access server",
[/data/artifactory/logs/artifactory.log] - "detail" : "File '/root/.jfrog-access/etc/access.bootstrap.json' does not exist"
[/data/artifactory/logs/artifactory.log] - } ]
[/data/artifactory/logs/artifactory.log] - }
完整日志在这里:https ://pastebin.com/ANZBiwHC
/root/.jfrog-access 目录是 Access 主目录(Access 也使用 derby)。
我在这里想念什么?
解决方案
根据 Artifactory 文档,我们做错了几件事:
- 导出不是备份大实例的正确方法。在使用 derby 运行 Artifactory 的情况下,将文件存储和 derby 目录同步到 NAS 就足够了。
- 不支持多个 Artifactory 版本的增量导出。意思是,如果您在 4.xx 版上进行了完全导出,那么您升级到 5.xx 版,然后升级到 6.xx 版,并且您在此过程中进行了增量导出......那么您的导出将不会导入到版本中6.xx 每次版本升级后,都需要创建实例的新完整导出。
我通过删除导出并执行完整的系统导出(大约 30 小时)解决了这种情况。完整系统导出已成功导入另一个实例(大约 12 小时)。
PS这个错误对我来说仍然很神秘。
推荐阅读
- c - Doxygen 如何处理枚举声明中的包含
- python-3.x - 如何在不等待响应的情况下使用 request.post() 方法
- java - 如何将 registerNetworkCallback 与 PendingIntent 一起使用?
- build - 我应该设置 src_uri 吗?
- php - 信息未提交到数据库
- ejs - VSCode 中的 .ejs 格式
- angular - 在嵌套的导入模块中导入 ReactiveFormsModule 会使应用程序崩溃
- git - 使用 .gitmodules 文件构建多个存储库的 TFS 无法正常工作
- batch-file - 从批处理文件窗口在程序中打开文件
- c++11 - 如何制作非阻塞服务器