# Affine 数据迁移到 1Panel 教程

好的 ✅ 我帮你整理成一份详细的 **《Affine 数据迁移到 1Panel 教程》**，格式为 Markdown，方便你直接放到你的知识库或博客。

***

# Affine 数据迁移到 1Panel 教程

> 本文记录了如何将 **旧服务器上的 Affine 数据** 迁移到 **新服务器上的 1Panel 部署环境**。核心思路是 **直接导出 / 导入 PostgreSQL 数据库**，绕过 1Panel 的应用备份限制。

***

## 一、前提条件

* **源服务器**：已有运行中的 Affine（Docker 部署），数据库容器名为 `affine_postgres`。
* **目标服务器**：使用 1Panel 部署 Affine，并提前创建好数据库（PostgreSQL）。
* **数据库信息**：数据库名 `affine`，用户 `affine`。

***

## 二、在旧服务器导出数据库

进入宿主机执行以下命令：

```shell
# 导出为 SQL 文件
docker exec -t affine_postgres pg_dump -U affine -d affine > affine.sql

```

如需压缩：

```shell
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` 文件上传到新服务器。然后执行：

```shell
# 导入 sql 文件
docker exec -i affine_postgres psql -U affine -d affine < affine.sql

```

如果是压缩包：

```shell
gunzip -c affine.sql.gz | docker exec -i affine_postgres psql -U affine -d affine

```

导入成功后，数据就已经写入到新建的数据库中。

***

## 五、部署 Affine 并绑定数据库

在 1Panel 中部署 Affine 应用时，选择刚刚导入数据的数据库（`affine`）。
&#x20;部署完成后，Affine 会自动读取数据库里的数据。

***

## 六、验证数据

* 使用原有账号登录 Affine
* 确认笔记内容完整
* 确认附件、图片等正常显示

如果都无误，迁移成功 🎉

***

## 七、经验总结 & 避坑

1. **不要直接用 1Panel 应用导入功能**
   * 它要求 `.tar.gz` 内必须包含 `app.json` 和 `app.tar.gz`，和普通 `pg_dump` 文件格式不兼容。
   * 所以直接走命令行导入数据库更稳妥。
2. **注意数据库用户权限**
   * 确保 `affine` 用户对数据库有完整的读写权限，否则导入会报错。
3. **建议保留源数据库备份**
   * 即使迁移完成，也建议保留 `affine.sql.gz` 作为冷备。

***

✅ 至此，Affine 已经成功迁移到 1Panel 环境，可以无缝继续使用。

***


