关于从 mx core v11 迁移到 v13 的经历
这一路升级下来,坑还是挺多的。就比如数据库迁移等。
从 v11 迁移到 v13 最大的问题就是数据库了,我就在这栽了,然后东西全没了。然后又因为不知道怎么配置代码片段又回滚到 v11 重新配置了。
开始更新
迁移数据库
如果你是从 v11 升级到 v13 的,首先第一件事就是去先备份,防止因为这一次更新导致东西全没了
#进入你放 docker-compose.yml 的文件夹,也就是你的core文件夹
cd ~/mx-space/core
#备份 MongoDB 数据
docker exec -i $(docker ps -q -f name=mongo) mongodump --archive > backup-mongo-$(date +%Y%m%d).archive
#同时打包整个数据目录(包含配置文件、图片等)
tar czvf mx-space-full-backup-$(date +%Y%m%d).tar.gz ./data
后面就是开始迁移数据库,让我们先从停止 core 开始。
cd ~/mx-space/core
docker compose stop app
接下来更新我们的 core 的 docker compose 配置文件。
cp docker-compose.yml docker-compose.yml.v11.backup
# 拉取最新的 docker-compose.yml
wget -O docker-compose.yml https://fastly.jsdelivr.net/gh/mx-space/core@master/docker-compose.yml
让我们开始迁移数据库。这边我使用的是docker来迁移,因为我的mongodb没对外网开放。
docker compose up -d postgres redis
docker run --rm --network core_mx-space \
-e MONGO_URI="mongodb://mongo:27017/mx-space" \
-e PG_URL="postgres://mx:mx@postgres:5432/mx_core" \
node:22-alpine \
npx -y @mx-space/mongo-pg-cli@latest --mode apply
运行后输出 ✅ Migration finished without missing references. 的时候就完成了,可以开始启动v13了。
docker compose up -d
后面就是在管理端自查环节了。
迁移前端和后端的 Api
在 v13 中 mixspace 将 /api/v2 换成了 /api/v3 。所以需要对api的端点进行迁移。简单的地方我就不说了,就说那些易踩坑的点了。
前端的 .env
如果不修改会导致你的站点直接无法访问
GitHub Actions 的 环境变量
如果你是前端在自己服务器上的,你需要修改这个,否则你会发现你的前端能访问,但是看网络请求会发现一直在请求 /api/v2
超级大坑
如果你在你的 mix space 中没有任何一篇手记,会导致你的前端无法正常请求你的主题代码片段。这也是让我排查半天才找到的原因。所以innei你什么时候修下
结束
在最后没问题的话就可以去删 MongoDB 了
cd ~/mx-space/core
docker compose rm -f mongo