方法一:备份方式
Artifactory 支持两个级别的数据导入和导出:
- System:Artifactory 可以导出和导入整个 Artifactory 服务器:配置、安全信息、存储的数据和元数据。使用的格式与系统备份格式相同。这在手动运行备份以及迁移和恢复完整的 Artifactory 实例时非常有用(作为使用数据库级备份和恢复的替代方法)。
系统导出导入
在源主机Artifactory|Admin|Import&Export中,您可以通过选择导出路径,点击Export
![](https://img-blog.csdnimg.cn/8dcbfe11457e429a97a7110aa2d2f3e6.png)
服务器上的导入文件应该由运行 Artifactory 进程的同一用户读取和拥有,这一点非常重要。
![](https://img-blog.csdnimg.cn/860d280dbd8348f4a8e8f43d0aa10326.png)
在目标主机的Artifactory|Administration|Artifactory | Import&Export | System中,使用Improt System菜单导入它
![](https://img-blog.csdnimg.cn/23f38c574ca44f318e91fd47378b2a03.png)
导入/导出操作的源/目标是Artifactory 服务器本身上的文件夹(不推荐 Zip
存档
,
因为
zip
存档导入或导出大量数据可能非常耗时)。您可以使用 Artifactory 中内置的服务器端浏览来选择服务器端源/目标文件夹:
![](https://img-blog.csdnimg.cn/1b70690824db4195b1220d5ee1407efa.png)
检查
导入或导出大量数据可能非常耗时。在导入/导出操作期间,您可以离开页面浏览并采样系统日志以监控进度。
最后访问页面各项功能,验证功能正常:
通过
|
检查项
|
备注
|
|
节点启动成功,日志正常
| |
|
登入正常
| |
|
其他节点健康状态正常
| |
|
页面查看制品数据正常
| |
|
页面下载制品正常
|
方法二:复制方式
本方式是以最少的停机时间迁移 Artifactory。参考(
本文)。
此方法通过一些巧妙的脚本和 Artifactory REST API 来解决大量重复的推送复制设置。您还需要下载
最新的 JFrog CLI利用其复制配置系统。
在新的 Artifactory 上创建存储库和设置
即使是大规模的,也可以使用系统导出将 Artifactory 配置从旧 Artifactory 导入到新 Artifactory。在大规模(超过 100 万个工件)下,默认的完整系统导出需要很长时间才能完成。我们只需要在另一端创建存储库。
在源Artifactory|Admin|Import&Export中,您可以通过选中两个“排除”复选框来排除配置和用户以外的所有内容。这将保存 旧(源)Artifactory 的配置和权限的几乎为空的备份;它应该很快完成。
![](https://img-blog.csdnimg.cn/1291fc16b07a47e79fe550471496e912.png)
说明:
Exclude Content : 设置后,二进制文件和元数据将从导出中排除。仅导出配置文件。
Exclude Metadata:
设置后,存储库元数据将从导入
/
导出中排除。
接下来,将导出复制到新的 Artifactory 中。
![](https://img-blog.csdnimg.cn/ba9499985353422aa5ccb59aeb846cc8.png)
在目标Artifactory|Administration|Artifactory | Import&Export | System中,使用“导入系统”菜单导入它以自动创建所有目标存储库:
![](https://img-blog.csdnimg.cn/7e989f696e6043d689398be0651d3f3d.png)
如果在导入时选中了两个复选框,内容和原数据都不会被删除,这样以后可以再次导入以更新存储库列表和权限。如果复制设置不正确,这也是您可以恢复的方法。
说明:
Exclude Content : 设置后,存储库二进制文件将从导入中排除。
Exclude Metadata: 设置后,存储库元数据将从导入/导出中排除。
步骤 1:获取存储库名称
手动设置 Push Replications 需要对每个仓库进行设置。这里为手动设置的示例:
第一步:找到本地仓库
![](https://img-blog.csdnimg.cn/026f1f0d89f44ee19d235ed82ce7d03d.png)
第二步:点击仓库
![](https://img-blog.csdnimg.cn/5d3430a48e2e401f819caed3c008be4d.png)
第三步:点击Replications,点击New添加
![](https://img-blog.csdnimg.cn/ad38d0986a244885a7002ea15e4416ac.png)
第四步:输入要推送到的目标Artifactory URL、Username、Password,并点击Test测试,Save保存。
![](https://img-blog.csdnimg.cn/86758af68c184b20a835c120d3c6a8ee.png)
第五步:点击按钮,推送。
![](https://img-blog.csdnimg.cn/f10f7df90ce549adafee91f5c1402540.png)
由上可见,面对非常多的仓库时这种方法就不适用了。我们将使用JFrog Cli 简化上列步骤。
下载
最新的 JFrog CLI利用其复制配置系统
![](https://img-blog.csdnimg.cn/f894659153e546fea31a48e5b27e1f96.png)
![](https://img-blog.csdnimg.cn/dd956bd9d4414dc09b1f38bf9f1ac837.png)
建议您创建一个项目文件夹来保存我们即将创建的模板文件:
第一,获取存储库列表来自旧(源)Artifactory。下面的命令仅保存存储库密钥,即存储库的名称。密钥是我们设置复制所需的全部。此命令将保存我们将在下一步中使用的“repositories.list”文件:
![](https://img-blog.csdnimg.cn/e0b09499ffb543b8b1085307c0b78502.png)
[预期输出]
![](https://img-blog.csdnimg.cn/0a0debedca0647b9b4b4aa8585bd60d9.png)
通过“repositories.list”文件,我们实际上已经获得了在任何地方设置复制所需的所有信息。下一步是为JFrog CLI 创建正确的模板文件。
步骤 2:创建复制设置
JFrog CLI 提供
“
复制创建
”动作
A] 首先,
![](https://img-blog.csdnimg.cn/fd52381d148b4550a328f096bdf3e2c7.png)
B] 生成复制模板配置文件。下面的循环将读取“repositories.list”文件的每一行,并根据键创建一个模板文件:
# JFrog CLI
使用名称
“target”
并在配置复制时填写正确的
URL
c
cat
repositories.list |
while
read
line
do
#Variable setup
#Get the repository key, remove "key": from the JSON
REPO=$(
echo
$line
|
cut
-d
':'
-f 2)
REPO_FILENAME=$(
echo
${REPO%??}
|
cut
-c 2-)
#Get a good looking filename
#Insert the static default parameters
echo
'{ "enabled": "true","cronExp":"0 0 12 * * ?",'
>
$REPO_FILENAME
-template.json
#Insert the repository Key
echo
'"repoKey": '
$REPO
>>
$REPO_FILENAME
-template.json
#Insert the remaining parameters, note we're replicating to the same repository name
echo
'"serverId": "target", "targetRepoKey": '
$REPO
' "enableEventReplication":"true" }'
>>
$REPO_FILENAME
-template.json
done
[预期的 JSON 文件内容]
![](https://img-blog.csdnimg.cn/08d0c65e60344aab98d06d31cd5e9952.png)
循环结束后,
请检查生成的文件
它们看起来都应该像上面的示例图像。在我们将模板大量部署到源之前仔细检查模板非常重要,以防止将错误配置的设置部署到旧的 Artifactory 中。
C]运行“
" 在每个 JSON 文件上执行 CLI 命令,此脚本将为您执行此操作:
jfrog
配置使用源
ls
| while
read line
do
echo “jf rt replication-create $line ”
jf rt replication-create $line
done
这会将每个模板推送到源 Artifactory,最后所有 Artifactory 的本地存储库都将配置为推送到目标:
此操作需要两个artifactory有不同的license才可完成复制。
![](https://img-blog.csdnimg.cn/589933168ea64418a9c6aee1b73b42ad.png)
![](https://img-blog.csdnimg.cn/75bb09832c554558bb79547145254ba8.png)
步骤 3:正式迁移
如果前面的步骤成功完成,随着时间的推移,Production Artifactory 会将其所有数据推送到 Target,并且两者将拥有相同的信息。您可以通过单击 UI 中的“立即运行”按钮来启动迁移。
最后访问页面各项功能,验证功能正常:
通过
|
检查项
|
备注
|
|
节点启动成功,日志正常
| |
|
登入正常
| |
|
其他节点健康状态正常
| |
|
页面查看制品数据正常
| |
|
页面下载制品正常
|
查看日志,是否正常启动
tail -f /opt/jfrog/artifactory/var/log/console.log
![](https://img-blog.csdnimg.cn/35113850050f417692c33bbda8ab3dc0.png)
用户登录是否正常,用户权限是否迁移
![](https://img-blog.csdnimg.cn/e648c99da1564cee8024a3c46d1bc766.png)
![](https://img-blog.csdnimg.cn/1f5a2343a1cd49d884fb5acaa1f5113a.png)
查看节点状态
![](https://img-blog.csdnimg.cn/a6e45b619a4b4021a59a566fb11f12c6.png)
查看仓库制品信息是否正确显示
![](https://img-blog.csdnimg.cn/484f7a8f581741598ef85594f3bfe8e7.png)
下载制品是否正常
![](https://img-blog.csdnimg.cn/f210f0f4d0e94b0b9f25e4eae7b57205.png)
![](https://img-blog.csdnimg.cn/dd798f58a23446a5b23b94a2f2e239ec.png)
故障排除问题
如果上述步骤中使用的复制信息不正确,Source Artifactory 将以大量错误的复制设置告终。恢复应用程序的最快方法是从配置描述符中删除复制设置。
推荐的方法是使用 REST API 来重新部署“artifactory.config.xml”
你已经保存在空系统导出在此过程开始时捕获。
要使用的文件位于导出文件夹中,例如20211215.195625/artifactory.config.xml.
![](https://img-blog.csdnimg.cn/8e8ed8c1de2948b58e503a2f8d212706.png)