本文记录了如何将 旧服务器上的 Affine 数据 迁移到 新服务器上的 1Panel 部署环境。核心思路是 直接导出 / 导入 PostgreSQL 数据库,绕过 1Panel 的应用备份限制。
一、前提条件
- 源服务器:已有运行中的 Affine(Docker 部署),数据库容器名为
affine_postgres
。 - 目标服务器:使用 1Panel 部署 Affine,并提前创建好数据库(PostgreSQL)。
- 数据库信息:数据库名
affine
,用户affine
。
二、在旧服务器导出数据库
进入宿主机执行以下命令:
# 导出为 SQL 文件
docker exec -t affine_postgres pg_dump -U affine -d affine > affine.sql
如需压缩:
docker exec -t affine_postgres pg_dump -U affine -d affine | gzip > affine.sql.gz
此时会在当前目录生成 affine.sql
或 affine.sql.gz
。
三、在新服务器准备数据库
在 1Panel 界面中新建 PostgreSQL 数据库:
- 数据库名:
affine
- 用户名:
affine
- 密码:自行设置
确保新建的数据库为空。
四、在新服务器导入数据库
将 affine.sql
文件上传到新服务器。然后执行:
# 导入 sql 文件
docker exec -i affine_postgres psql -U affine -d affine < affine.sql
如果是压缩包:
gunzip -c affine.sql.gz | docker exec -i affine_postgres psql -U affine -d affine
导入成功后,数据就已经写入到新建的数据库中。
五、部署 Affine 并绑定数据库
在 1Panel 中部署 Affine 应用时,选择刚刚导入数据的数据库(affine
)。
部署完成后,Affine 会自动读取数据库里的数据。
六、验证数据
- 使用原有账号登录 Affine
- 确认笔记内容完整
- 确认附件、图片等正常显示
如果都无误,迁移成功 🎉
七、经验总结 & 避坑
- 不要直接用 1Panel 应用导入功能
- 它要求
.tar.gz
内必须包含app.json
和app.tar.gz
,和普通pg_dump
文件格式不兼容。 - 所以直接走命令行导入数据库更稳妥。
- 它要求
- 注意数据库用户权限
- 确保
affine
用户对数据库有完整的读写权限,否则导入会报错。
- 确保
- 建议保留源数据库备份
- 即使迁移完成,也建议保留
affine.sql.gz
作为冷备。
- 即使迁移完成,也建议保留
✅ 至此,Affine 已经成功迁移到 1Panel 环境,可以无缝继续使用。