使用示例(通过Skill接入第三方Agent)
工作流程
工作目录
源端采集操作步骤
源端采集场景:以使用OpenCode采集x86服务器的待迁移信息为例。
使用Skill进行迁移的过程中,需用户通过本地配置文件或在Agent交互中提供数据库或服务器的用户名和密码连接源数据库或源服务器,可能存在一定安全风险,为保障用户数据安全,使用后请及时删除配置文件中的密码。
迁移过程中不对用户名和密码做存储操作,仅作为迁移流程中的一次性使用。
- 已在OpenCode配置好系统迁移的Skill。
系统迁移的源端采集Skill为migration-source-collector,可在开源仓获取,配置方式可参考为第三方Agent配置Skill。
- 打开OpenCode输入提示词。
系统迁移采集192.168.x.x的成分信息
部分返回信息:
+ Thought: 769ms → Skill "migration-source-collector" + Thought: 2.3s $ WORK_DIR=/opt/kunpeng-migration/collection mkdir -p $WORK_DIR/{work,logs,credentials,runs} ls -la $WORK_DIR ... ... ... - 确认SSH用户、认证方式和配置信息等。
确认SSH用户、认证方式和配置信息:
... ... ... SSH用户 认证方式 Confirm 将对 192.168.x.x 执行 SSH 远程采集。请确认 SSH 连接信息:使用哪个 SSH 用户? 1. root 使用 root 用户直接采集(privilege=direct,需要 root 权限) 2. Type your own answer
确认后,初步采集完成后有如下回显信息:
Authorized users only. All activities may be monitored and reported. /opt/kunpeng-migration/collection/runs/migration-source-collector-192.168.x.x + Thought: 645ms 采集成功。查看采集结果 ... ... ... → Read /opt/kunpeng-migration/collection/runs/migration-source-collector-192.168.x.x/details/internal/scan-results/ports.txt + Thought: 9.5s 采集完成。源端为 *Kylin Linux Advanced Server V10 (x86)*,检测到 MySQL、Tomcat、JDK、Nginx、Redis 及 Java 应用。现在初始化迁移计划。 ... ... ... + Thought: 12.5s 采集结果已就绪。让我梳理成分清单并建立任务跟踪。 # Todos [✓] 阶段1: 采集机器确认与计划初始化 [✓] 阶段2: 源端系统成分采集 (remote-collect.sh) [·] 阶段3: 补充采集 (按需 collect-versions/artifacts/supplement) [ ] 阶段4: 迁移范围二次确认(强制交互门禁) [ ] 阶段5: 目标路线确认(强制交互门禁) [ ] 阶段6: 目标成份信息确认(强制交互门禁) [ ] 阶段7: Java应用与 SQL适配确认(强制交互门禁) [ ] 阶段8: 报告生成与源端清理 [ ] 阶段9: 打包与最终校验
- 确认迁移范围、迁移路线等信息。
+ Thought: 9.1s 采集数据完整。 采集到的成分: - 中间件/JDK: Apache Tomcat 8.0.53 (运行中,端口 8080/8009/8005)、JDK/JRE 11.0.30.7 (java-11-openjdk-headless)、Nginx 1.21.5 (已装未运行)、Redis 7.2.14 (已装未运行) - 数据库: MySQL 8.0.46-1.el8 (运行中,端口 3306/33060) - Java 应用: ruoyi-admin.war (primary, Tomcat webapps 中) 进入阶段4:迁移范围二次确认。 → Asked 2 questions ... ... ... 阶段4:请确认以下拟纳入迁移的中间件与 JDK/JRE 清单(可多选) Tomcat 8.0.53, JDK 11, Nginx 1.21.5, Redis 7.2.14 阶段4:请确认拟纳入迁移的数据库清单(可多选) MySQL 8.0.46 + Thought: 2.7s 用户已确认迁移范围。进入 阶段 5:目标路线确认。先读取路线参考和填写规则。 ... ... ... 所有目标产品与安装来源已确认。现在进入阶段 6:目标成份信息确认(URL下载组件的具体下载地址确认)。 ... ... ... 进入阶段 7:Java 应用与 SQL 适配确认。由于目标数据库已确认迁移至达梦 DM 8,需确认 SQL 适配决策: ... ... ... 所有确认完成。开始将确认结果写入 migration-plan.json。先读取当前计划文件: → Read /opt/kunpeng-migration/collection/runs/migration-source-collector-192.168.x.x/migration-plan.json + Thought: 1.6s
- 采集完成后查看输出结果。
源端采集完成后将生成migration-plan.json文件,在目标端可使用该文件进行迁移。
校验通过。进入阶段 8:报告生成与源端清理。查看报告模板与生成脚本: ... ... ... # 鲲鹏迁移采集与规划报告 ## 1. 采集概览 | 项目 | 结果 | |---|--- | | 采集编号 | {{collection_id}} | | 采集状态 | {{collection_status}} | | 采集方式 | {{collection_mode}} | | 源端主机 | {{source_host}} | 源端清理成功。进入阶段 9:打包与最终校验。执行 package.sh: ... ... ... 全部完成。采集包约 2.28GB(含大量候选 JAR 及配置制品)。最终结果: 最终交付(collector-final 校验通过) migration-plan.json: /opt/kunpeng-migration/collection/runs/migration-source-collector-192.168.x.x/migration-plan.json - 采集报告: .../migration-source-collector-192.168.x.x/collection-report.md - 详细归档: .../details/devkit-source-scan-details.tar.gz(含 architecture-summary.json 与全部扫描结果) - 最终采集包: /opt/kunpeng-migration/collection/runs/migration-source-collector-192.168.x.x.tar.gz(2.28GB) 采集编号(migration_id):23241865-e9ec-4aaf-b811-18658109c450(后续目标预检与迁移执行复用) 已确认迁移范围与路线 | 组件 | 源 | 目标 | 说明 | | --- | --- | --- | --- | | 数据库 | MySQL 8.0.46 | 达梦 DM 8 (Kylin10) | License 需要 | | 中间件 | Tomcat 8.0.53 | 东方通 TongWeb 7.0.4.9_M3 | License 需要 | | 中间件 | Nginx 1.21.5 | Nginx 1.24.0 | URL 下载 | | 中间件 | Redis 7.2.14 | Redis 7.0.15 | URL 下载 | | 运行时 | JDK 11.0.30 | 毕昇 JDK 11.0.26 | URL 下载 | | Java 应用 | ruoyi-admin.war (4.8.1) | TongWeb 部署 | SQL 适配 MySQL→DM |
目标端迁移操作步骤
目标端迁移场景:以使用OpenCode根据已采集的migration-plan.json在ARM环境中执行系统迁移为例。
- 已在OpenCode配置好系统迁移的Skill。
系统迁移的目标端迁移Skill为migration-target-execution,可在开源仓获取,配置方式可参考为第三方Agent配置Skill。
- 根据源端采集到的migration-plan.json文件,在ARM环境中执行系统迁移。
请使用 migration-target-execution 执行系统迁移。migration-plan.json 路径:/home/package/migration-source-collector-192.168.x.x/migration-plan.json
部分返回信息如下:
... ... ... 迁移计划已解析完毕。迁移范围如下: · 中间件 5 项:Nginx 1.30.4→1.26.3、Redis 7.2.15→7.0.15、Tomcat 9.0.120→9.0.65、JDK8→毕昇JDK 8u412、JDK11→毕昇JDK 11.0.26 · 数据库 1 项:MySQL 8.0.46→DM 8(需 License) · Java 应用 1 项:RuoYi-Vue-Pro(ROOT.war,需 SQL 适配 MySQL→DM) 当前环境为 aarch64 Kylin V10,符合目标环境特征。我先创建任务清单,然后按 SKILL 流程执行。 开始阶段 1。先执行 inspect 校验计划。 Bash(cd /home/skill/migration/system-migration/migration-target-execution && sh scripts/system-migration.sh inspect -migration-plan /home/package/migration-source-collector-192.168.x.x/migration-plan.json) { "migration_plan": "/home/package/migration-source-collector-192.168.28.107/migration-plan.json", "migration_work_dir": "/opt/kunpeng-migration/work/53431377-a049-46dd-8c22-5d03bae3cebb", ... (+27 lines) } * Thinking... (36s ↓ 8.5 kB) ■ 执行迁移计划检查与目标预检 □ 阶段2:目标变更确认 □ 阶段3:数据库迁移 MySQL→DM □ 阶段4:中间件迁移 □ 阶段5:Java 应用迁移 □ 阶段6:验收汇总 - 确认迁移信息。确认目标清单。
operation-plan.json 已生成,共 7 项迁移操作。向用户展示并请求批准。 AskUserQuestion(目标变更确认) 6 tasks (1 done, 1 in progress, 4 open) ✓ 阶段1: 迁移计划检查与目标预检 ■ 生成目标变更清单并请求用户确认 □ 阶段3: 数据库迁移 MySQL→DM □ 阶段4: 中间件迁移 □ 阶段5: Java 应用迁移 □ 阶段6: 验收汇总 ← □ 目标变更确认 → 目标变更确认:是否批准执行以下 7 项迁移操作?(当前目标环境:192.168.x.x, aarch64 Kylin V10, root) 1. 数据库:MySQL 8.0.46 → DM 8(需上传 License) 2. 中间件:Nginx 1.30.4 → Nginx 1.26.3(系统仓库) 3. 中间件:Redis 7.2.15 → Redis 7.0.15(系统仓库) 4. 中间件:Apache Tomcat 9.0.120 → 9.0.65 5. 中间件:JDK 1.8.0.482 → 毕昇JDK 8u412 6. 中间件:JDK 11.0.31 → 毕昇JDK 11.0.26 7. Java应用:RuoYi-Vue-Pro(含 SQL 适配 MySQL→DM)
安装过程中确认MySQL详细信息:
... ... ... MySQL 客户端(MariaDB 10.3.39)已安装,caching_sha2_password.so 认证插件已就位。现在按阶段 1 逐字段向用户确认源端 MySQL 连接信息。 先确认源端 MySQL 是否可访问(3306 端口之前不可达)。向用户逐项询问源端连接信息。 AskUserQuestion(源端主机,源端端口,源端用户,源端库名) 6 tasks (2 done, 1 in progress, 3 open) ✓ 阶段1: 迁移计划检查与目标预检 ✓ 阶段2: 目标变更确认 ■ 执行数据库迁移 □ 阶段4: 中间件迁移 □ 阶段5: Java 应用迁移 □ 阶段6: 验收汇总
迁移完成后确认验收信息:
... ... ... 数据库阶段完成(DM8 部署成功,数据迁移跳过)。进入阶段 4:中间件迁移。 先阅读中间件迁移文档。 Read(file_path: "/home/skill/migration/system-migration/migration-target-execution/middleware-migration/middleware-migration.md") # 中间件迁移 读取 `MIGRATION_PLAN_PATH` 指向的 `migration-plan.json` 的 `route.middleware`,逐项完成中间件迁移并输出原生汇总结果。
- 依次确认中间件和Java应用迁移过程中的安装信息和验证信息。
- 迁移完成后查看迁移报告
阶段5 Java 应用迁移完成 - 组件状态 SUCCESS / COMPLETE: 静态迁移 SUCCESS(兼容分析 + 制品变化报告) 目标环境验证 SUCCESS(WAR 部署 + 应用启动 + DM 连接) 标记任务5完成,启动任务6(验收汇总)。 * Thinking... (180s ↓ 24 kB) √ 阶段1: 迁移计划检查与目标预检 √ 阶段2: 目标变更确认 √ 阶段3: 数据库迁移 MySQL→DM √ 阶段4: 中间件迁移 √ 阶段5: Java 应用迁移 ■ 汇总迁移验收结果最终迁移结果输出如下:
... ... ... 验收汇总已生成。完成任务6。 系统迁移全部完成。最终汇总: ## 迁移完成总结 总体状态:COMPLETED(数据库 + 中间件 + Java 应用三大类全部迁移成功,应用已部署并通过启动验证) ### 各阶段结果
表1 各阶段结果 阶段
状态
关键产出
1-2 预检与确认
SUCCESS
目标预检、变更确认
3 数据库MySQL→DM
SUCCESS
DM8部署于/opt/dmdbms,端口5236,验证全通过
4 中间件
SUCCEED_WITH_WARNINGS
JDK8/11→毕昇、Tomcat→9.0.65(18080);nginx/redis复用系统服务
5 Java应用RuoYi-Vue-Pro
SUCCESS
SQL迁移Route A(6项兼容)、候选WAR部署、启动验证通过
6 验收汇总
COMPLETED
migration-acceptance-summary.json/.md
将输出部分在迁移过程中因跳过步骤而遗留的待办事项。
### 阶段5 关键完成项 SQL 迁移:Route A SQL 迁移:Route A, 6 项兼容,0 待处理 候选制品:ROOT-kunpeng-arm64.war -> 注入 DmJdbcDriver18.jar、数据源切换至 DM 后部署到 Tomcat 启动验证:YudaoServerApplication 16.9s 启动成功,/、/admin-api、/v3/api-docs 均 200, DM 数据源连接成功 ### 遗留待办(数据迁移被用户跳过的既定结果) 1. 源端 MySQL 192.168.x.x:3306 恢复侦听后重跑数据迁移 2. 导入 RuoYi 初始化 SQL 至 DM(RUOYI_VUE_PRO 用户已建好) 3. 数据补齐后补做业务功能验收(登录/数据查询) 产物集中在 `/opt/kunpeng-migration/work/53431377-a049-46dd-8c22-5d03bae3cebb/`,入口为 migration-acceptance-summary.md。 6 tasks (6 done, 0 open) √ 阶段1: 迁移计划检查与目标预检 √ 阶段2: 目标变更确认 √ 阶段3: 数据库迁移 MySQL→DM √ 阶段4: 中间件迁移 √ 阶段5: Java 应用迁移 √ 阶段6: 验收汇总
输出产物
- 源端采集场景
在采集信息时,使用migration-source-collector会在/opt/kunpeng-migration/collection/runs/<RUN_NAME>/目录下生成以下文件:
文件
说明
migration-plan.json
后续目标迁移执行的唯一业务计划输入
collection-report.md
源端采集结果摘要
details/devkit-source-scan-details.tar.gz
详细扫描和架构信息归档
migration-source-collector-x.x.x.x.tar.gz
包含本次采集交付内容的最终采集包
migration_id
后续目标预检与迁移执行复用
- 目标端迁移场景
迁移完成后,使用migration-target-execution读取各子模块原生结果形成最终结论:
模块
主要结果
目标预检
预检报告precheck/migration-plan-report.md
数据库
数据库总览报告deploy_summary_*.json、部署报告deploy_report_*.md及数据迁移报告
中间件
中间件总览报告middleware/reports/batch_migration_summary.json和batch_migration_summary.md
Java应用
Java应用各组件的迁移结果文件migration-result.json、最终制品变更报告artifact-change-report.json和artifact-change-report.md、验证报告reports/application-verification.md
Java应用只有静态迁移和目标环境验证都满足成功条件时才能归并为完全成功。统计时按以下类型区分:
- source_change_summary:源码改造文件。
- artifact_change_report.summary:候选JAR/WAR制品层变化条目。
