219 lines
5.7 KiB
Markdown
219 lines
5.7 KiB
Markdown
# 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-runtime-topology.md) 为准。
|
||
|
||
## 目标
|
||
|
||
本次升级的目标不是继续修补旧工作树,而是一次性把:
|
||
|
||
1. 本地三仓库收口为唯一源码真相。
|
||
2. `103` 收口为“只接收发布包”的正式运行机。
|
||
3. `105` 收口为入口 / 代理机,不再承担可写业务数据目录。
|
||
**后续禁止 SSH 直改 105 业务源码**;运维细则见 [105 服务器变更规范](105-server-operations.md)。
|
||
|
||
## 已确认的真实结构
|
||
|
||
### 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/users`
|
||
- `MINDSPACE_STORAGE_ROOT=/Users/john/Project/Memind/data/mindspace`
|
||
- `MEMIND_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 会失效
|
||
- 旧发布页 / 用户空间会出现访问中断
|
||
|
||
因此本次升级的正确策略是:
|
||
|
||
1. 保持这三条路径不变
|
||
2. 让新 release 继续继承这些目录
|
||
3. 把“源码目录可手改”废除,而不是把“数据根路径”迁走
|
||
|
||
## 本次备份结果
|
||
|
||
### 103
|
||
|
||
备份目录:
|
||
|
||
- `/Users/john/Project/backups/upgrade-20260626-094108`
|
||
|
||
包含:
|
||
|
||
- `103-Memind-live.tgz`
|
||
- `103-Memind-persistent.tgz`
|
||
- `103-memind_adm-live.tgz`
|
||
- `103-memind_plaza-live.tgz`
|
||
|
||
其中最关键的是:
|
||
|
||
- `103-Memind-persistent.tgz`
|
||
|
||
它单独保存了:
|
||
|
||
- `MindSpace`
|
||
- `data`
|
||
- `users`
|
||
- `public/plaza-covers`
|
||
- `.env`
|
||
|
||
### 105
|
||
|
||
备份目录:
|
||
|
||
- `/root/service_backup/tkmind-upgrade-20260626-094109`
|
||
|
||
包含:
|
||
|
||
- `105-h5-live.tgz`
|
||
- `105-plaza-live.tgz`
|
||
- `105-h5.env`
|
||
- `105-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`,而应优先保证:
|
||
|
||
1. `Memind` 的持久目录不丢
|
||
2. `105` 的入口配置不丢
|
||
3. 三个本地仓库的首次正式 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`
|
||
|
||
### 第二步:三项目按发布包重建代码版本
|
||
|
||
建议顺序:
|
||
|
||
1. `Memind`
|
||
2. `memind_adm`
|
||
3. `memind_plaza`
|
||
|
||
原因:
|
||
|
||
1. `Memind` 决定主持久目录和 105 的共享挂载根
|
||
2. `memind_adm` 独立但依赖 `Memind` 共享实现
|
||
3. `memind_plaza` 最后切,避免前端入口先于主共享资源变化
|
||
|
||
### 第三步:105 只保留入口角色
|
||
|
||
本次升级后,105 应保留:
|
||
|
||
1. `goose-h5.service`
|
||
2. 反代 / 入口相关配置
|
||
3. 指向 103 的共享挂载与远端 API 目标
|
||
|
||
本次升级后,105 不应继续承担:
|
||
|
||
1. 可写业务数据真身
|
||
2. 源码发布主线
|
||
3. Goose 实例
|
||
|
||
## 这次如何做到“无缝”
|
||
|
||
无缝的关键不是不重启,而是:
|
||
|
||
1. 数据路径保持不变
|
||
2. 新版本继承同一批持久目录
|
||
3. 入口配置不突然指向新路径
|
||
4. 每次切换都有可回退包
|
||
|
||
因此本次切换原则是:
|
||
|
||
1. 先切代码
|
||
2. 不搬数据根
|
||
3. 不改共享路径
|
||
4. 切完再验证挂载和业务路径
|
||
|
||
## 切换后必须验证
|
||
|
||
### 103
|
||
|
||
1. `http://127.0.0.1:8081/api/status`
|
||
2. `http://127.0.0.1:3001/plaza`
|
||
3. MindSpace 已有用户空间可读
|
||
4. 发布页可打开
|
||
5. `data/mindspace/users/*` 能继续访问对应资产
|
||
|
||
### 105
|
||
|
||
1. `goose-h5.service` 正常
|
||
2. `/mnt/memind-shared/MindSpace` 挂载正常
|
||
3. `/mnt/memind-shared/data/mindspace` 挂载正常
|
||
4. H5 请求仍能正确回源 103 的 Goose / shared data
|