跳到主内容

备份

Prisma Postgres 每 24 小时对您的数据库进行完整快照,以备份您的数据。

如果您使用的是 Pro、Business 或 Enterprise 计划,您可以联系我们的支持团队以获取过去的快照。备份在 Starter 计划中不可用。请使用与您的 Prisma Console 账户关联的电子邮件地址与我们联系,以便我们快速验证您的账户并加快恢复过程。

请注意,最近一次快照之后发生的任何数据库更改或事件可能无法恢复。

有关备份可用性和计划特定功能的更多详细信息,请访问我们的定价页面

未来,Prisma Postgres 将基于用户特定配置提供更细粒度的备份机制,并具备时间点恢复功能。

通过 @prisma/ppg-tunnel 创建备份文件

如果您想创建数据库备份文件,可以使用 @prisma/ppg-tunnel CLI。这对于在数据库之间迁移数据或创建数据库的本地副本非常有用。

先决条件

在开始之前,请确保您已安装:

  • 安装了 Node.js (版本 16 或更高)。
  • PostgreSQL CLI 工具 (pg_dump) 用于创建备份。请使用 Postgres 17 版本,因为 Prisma Postgres 基于此版本。
  • 您的 Prisma Postgres 数据库的数据库连接字符串

要创建备份,请确保已安装 PostgreSQL 命令行工具。根据您的操作系统运行以下命令:

brew install postgresql@17
which pg_dump
which pg_restore
提示

如果您安装了 PostgreSQL,但仍然看到 pg_dump 或 pg_restore 的“命令未找到”错误,请确保您的安装目录位于系统的 PATH 环境变量中。

注意

请确保您正在安装 PostgreSQL 17 版本。其他版本可能会在备份过程中导致错误。

1. 通过 @prisma/ppg-tunnel 直接连接到数据库

在您的终端中,运行 npx @prisma/ppg-tunnel 以建立与数据库的安全隧道。

如果您当前目录中已经存在一个设置了 DATABASE_URL.env 文件,tunnel CLI 会自动读取它,无需手动导出。但是,如果您尚未设置 .env 文件,则需要明确设置 DATABASE_URL 环境变量。

设置环境变量(使用您实际的数据库 URL)

export DATABASE_URL="prisma+postgres://accelerate.prisma-data.net/?api_key=eyJhbGciOiJIUzI..."
注意

如果您在终端中显式设置 DATABASE_URL,该值将优先于 .env 文件中的值。

运行隧道

npx @prisma/ppg-tunnel --host 127.0.0.1  --port 5432

如果需要,您可以提供任何其他端口。如果未提供端口值,将分配一个随机端口。您应该看到类似以下输出:

Prisma Postgres auth proxy listening on 127.0.0.1:5432 🚀

Your connection is authenticated using your Prisma Postgres API key.
...

==============================
hostname: 127.0.0.1
port: 5432
username: <anything>
password: <none>
==============================
注意

请注意,您在输出中看到的端口将是一个随机分配的端口,可能与此处提到的端口不同。此外,请保持此终端窗口打开,以便隧道保持活动状态!如果您关闭它,隧道将断开连接。

从终端输出中复制端口号,在下一步的 pg_dump 命令中您将需要它。

2. 使用 pg_dump 创建备份

隧道运行后,您现在可以通过运行以下命令来转储数据库:

PGSSLMODE=disable \
pg_dump \
-h 127.0.0.1 \
-p 5432 \
-Fc \
-v \
-d postgres \
-f ./mydatabase.bak \
&& echo "-complete-"

PGSSLMODE=disable 表示本地不需要 SSL,因为隧道已经对连接进行了加密。

`-h` is the host (127.0.0.1)
`-p` is the port, which should match the one from the tunnel output.
`-Fc` uses the custom format for backups, recommended for pg_restore.
`-d` postgres is the default database name used in Prisma Postgres.
`-f` ./mydatabase.bak specifies the backup file name and location.
`-v` runs pg_dump in verbose mode.

这将在当前目录中创建名为 mydatabase.bak 的备份文件。