5.7 KiB
5.7 KiB
103 / 105 一次性升级实施记录(2026-06-26)
历史记录说明:本文记录 2026-06-26 当时的一次性升级事实。2026-07-03 后,103 的 MindSpace Service 已独立部署到
/Users/john/MindSpace;/Users/john/Project/Memind/MindSpace只作为旧链路兼容/存量目录处理。当前生产拓扑以 103 runtime topology 为准。
目标
本次升级的目标不是继续修补旧工作树,而是一次性把:
- 本地三仓库收口为唯一源码真相。
103收口为“只接收发布包”的正式运行机。105收口为入口 / 代理机,不再承担可写业务数据目录。
后续禁止 SSH 直改 105 业务源码;运维细则见 105 服务器变更规范。
已确认的真实结构
103
- 主机:
john@58.38.22.103 - 主运行根目录:
/Users/john/Project - 当前业务目录:
/Users/john/Project/Memind/Users/john/Project/memind_adm/Users/john/Project/memind_plaza
- 当前产物目录骨架已经存在:
/Users/john/Project/backups/Users/john/Project/incoming/Users/john/Project/releases
105
- 可达 SSH 入口:
root@120.26.184.105 - 旧文档中的固定内网地址
100.101.255.32当前已视为废弃,不应继续写入脚本或说明 - 当前 H5 运行目录:
/root/tkmind_go/ui/h5 - 当前 Plaza 目录:
/root/tkmind_go/ui/plaza - 105 上没有 Goose 双实例,只是入口 / portal 层
关键结论
1. MindSpace 数据真身在 103,不在 105
103 .env 明确指向:
H5_USERS_ROOT=/Users/john/Project/Memind/usersMINDSPACE_STORAGE_ROOT=/Users/john/Project/Memind/data/mindspaceMEMIND_SHARED_PUBLISH_ROOT=/Users/john/Project/Memind/MindSpace
因此:
103是 MindSpace 用户空间、发布页、资产存储的真实落盘位置- 105 不是这批数据的主存储
2. 105 通过 rclone 挂载 103 的共享目录
105 现有 systemd mount:
memind-shared-mindspace.mount.service- 把
memind-mac:/Users/john/Project/Memind/MindSpace挂到/mnt/memind-shared/MindSpace
- 把
memind-shared-storage.mount.service- 把
memind-mac:/Users/john/Project/Memind/data/mindspace挂到/mnt/memind-shared/data/mindspace
- 把
这意味着:
- 105 的无缝升级前提是 103 上这两条真实路径不能变
- 可以重建代码目录
- 不能随意移动这两棵持久目录的位置
3. 本次升级不能把 MindSpace 数据从路径上“迁走”
如果本次升级把以下路径改掉:
/Users/john/Project/Memind/MindSpace/Users/john/Project/Memind/data/mindspace/Users/john/Project/Memind/users
那么:
- 103 本地服务会断引用
- 105 的 rclone mount 会失效
- 旧发布页 / 用户空间会出现访问中断
因此本次升级的正确策略是:
- 保持这三条路径不变
- 让新 release 继续继承这些目录
- 把“源码目录可手改”废除,而不是把“数据根路径”迁走
本次备份结果
103
备份目录:
/Users/john/Project/backups/upgrade-20260626-094108
包含:
103-Memind-live.tgz103-Memind-persistent.tgz103-memind_adm-live.tgz103-memind_plaza-live.tgz
其中最关键的是:
103-Memind-persistent.tgz
它单独保存了:
MindSpacedatauserspublic/plaza-covers.env
105
备份目录:
/root/service_backup/tkmind-upgrade-20260626-094109
包含:
105-h5-live.tgz105-plaza-live.tgz105-h5.env105-service-config.tgz
当前数据体量
103
/Users/john/Project/Memind/MindSpace:95M/Users/john/Project/Memind/data:40M/Users/john/Project/Memind/users:52K/Users/john/Project/memind_adm:112M/Users/john/Project/memind_plaza:617M/Users/john/Project/tkmind_go:45G
重要说明
/Users/john/Project/tkmind_go 很大,但它不是本次无缝迁移的关键业务数据真身。
本次升级不应先去搬这 45G,而应优先保证:
Memind的持久目录不丢105的入口配置不丢- 三个本地仓库的首次正式 bundle 发布可回退
推荐升级顺序
第一步:保留 103 持久路径不动
以下路径本次不改名、不挪位置:
/Users/john/Project/Memind/MindSpace/Users/john/Project/Memind/data/mindspace/Users/john/Project/Memind/users/Users/john/Project/Memind/public/plaza-covers
第二步:三项目按发布包重建代码版本
建议顺序:
Memindmemind_admmemind_plaza
原因:
Memind决定主持久目录和 105 的共享挂载根memind_adm独立但依赖Memind共享实现memind_plaza最后切,避免前端入口先于主共享资源变化
第三步:105 只保留入口角色
本次升级后,105 应保留:
goose-h5.service- 反代 / 入口相关配置
- 指向 103 的共享挂载与远端 API 目标
本次升级后,105 不应继续承担:
- 可写业务数据真身
- 源码发布主线
- Goose 实例
这次如何做到“无缝”
无缝的关键不是不重启,而是:
- 数据路径保持不变
- 新版本继承同一批持久目录
- 入口配置不突然指向新路径
- 每次切换都有可回退包
因此本次切换原则是:
- 先切代码
- 不搬数据根
- 不改共享路径
- 切完再验证挂载和业务路径
切换后必须验证
103
http://127.0.0.1:8081/api/statushttp://127.0.0.1:3001/plaza- MindSpace 已有用户空间可读
- 发布页可打开
data/mindspace/users/*能继续访问对应资产
105
goose-h5.service正常/mnt/memind-shared/MindSpace挂载正常/mnt/memind-shared/data/mindspace挂载正常- H5 请求仍能正确回源 103 的 Goose / shared data