备份
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 命令行工具。根据您的操作系统运行以下命令:
- macOS
- Windows
- Linux
brew install postgresql@17
which pg_dump
which pg_restore
# Download from the official PostgreSQL website:
# https://postgresql.ac.cn/download/windows/
# During installation, select "Command Line Tools".
# Then verify with:
where pg_dump
where pg_restore
sudo apt-get update
sudo apt-get install postgresql-client-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
的备份文件。