Pallas 3.0 迁移指南(MongoDB -> PostgreSQL)
字数
611 字
阅读时间
3 分钟
本文用于从 2.x 升级到 3.0 时的数据迁移与验证。
适用范围
- 适用于已有历史数据、准备升级到
3.0的实例。 - 核心变化:
3.0引入pallas_protocol与pallas_webui,并支持 PostgreSQL 数据后端。
升级前检查
- 停止 Bot 写入流量(避免迁移期间源数据持续变化)。
- 备份 MongoDB(至少包含业务库)。
- 准备 PostgreSQL 空库,并确保账号具备建表与写入权限。
- 确认
config/pallas.toml中连接信息可用([bootstrap]/[bootstrap.mongo]/[bootstrap.postgres]),或从旧.env运行tools/migrate_env_to_pallas.py。
依赖安装
bash
uv sync --extra pg迁移命令
全量迁移
bash
uv run --extra pg python tools/migrate_mongo_to_pg.py指定库名
bash
uv run --extra pg python tools/migrate_mongo_to_pg.py --pg-db MyBot --mongo-db PallasBot仅迁移部分表
bash
uv run --extra pg python tools/migrate_mongo_to_pg.py --tables context message --batch 500仅演练(不写入目标库)
bash
uv run --extra pg python tools/migrate_mongo_to_pg.py --dry-run验证清单
迁移完成后,建议至少确认以下内容:
- 脚本输出汇总中
failed为0或可解释范围。 - 核心业务表行数与预期一致(
context、message、botconfig、groupconfig、userconfig)。 - 启动 Bot 后基础功能可用(复读、配置读取、实例状态查询)。
- WebUI 页面可正常加载,数据库概览接口可返回。
回滚方案
如迁移后发现异常,可按以下顺序回退:
- 停止 3.0 实例。
- 保留 PostgreSQL 现场数据用于排查。
- 恢复到升级前代码与 MongoDB 备份。
- 回退后先执行功能自检,再恢复对外流量。
已知事项
- 迁移脚本支持断点续跑。
--restart当前仅清空迁移状态表(pallas_migration_state),不会自动清空目标业务表。- 若目标库已有历史数据,重复执行迁移前请先确认策略(避免非幂等场景下重复写入)。
建议流程
- 测试环境先完整跑通迁移与回归。
- 生产环境按“停写 -> 迁移 -> 验证 -> 切换”的顺序执行。
- 切换后观察一段时间,再做历史环境清理。