跳到主要内容

通用说明

注意

Prisma Pulse 需要启用逻辑复制的 PostgreSQL(版本 12+)数据库。要为 Prisma Pulse 配置特定的数据库提供商,请访问此处

数据库复制是创建数据库副本并将其存储在各种本地或云目的地的过程。Prisma Pulse 使用逻辑复制来监控数据库的更改。

启用逻辑复制

必需设置

您可以通过将 wal_level 设置为数据库中的 logical 来启用逻辑复制。

ALTER SYSTEM SET wal_level = logical;

更改此设置后,您需要重启数据库。

注意:某些提供商可能不允许直接访问此设置。如果您无法通过上述 SQL 命令更改此设置,请参阅特定于提供商的指南以获得进一步帮助。

可选设置

wal_keep_size

设置 wal_keep_size 会增加 PostgreSQL 数据库上预写式日志的内存使用量。

我们建议为 wal_keep_size 设置一个值,该值根据数据库的存储容量量身定制。这确保了数据库和 Prisma Pulse 的平稳运行。

ALTER SYSTEM SET wal_keep_size = 2048;

max_replication_slots

Prisma Pulse 只需要一个可用的复制槽。如果您有其他复制正在使用,则可以设置 max_replication_slots

ALTER SYSTEM SET max_replication_slots = 20;

REPLICA IDENTITY

对于更新和删除事件,您可以选择在事件中包含执行操作之前记录的值

  • 对于 update:在名为 before 的字段中包含执行更新之前更新的记录的值
  • 对于 delete:包含已删除记录的值。

如果您启用此功能,您还可以按这些字段进行过滤。

要包含此数据,您必须将要获取字段值的表上的 REPLICA IDENTITY 设置为 FULL

例如,运行以下 SQL 命令会将表名为 User 的表的 REPLICA IDENTITY 设置为 FULL

ALTER TABLE public."User" REPLICA IDENTITY FULL;

管理 Pulse 监控的表

默认情况下,Pulse 监控数据库中所有表的更改。如果您想为特定模型启用复制,或者如果您使用的数据库提供商限制 Prisma Pulse 的超级用户访问权限,您可以配置自己的发布槽。发布槽是主数据库中的保留空间,用于将数据发布到副本。它允许数据库通过发布来自特定表或操作的数据来跟踪更改。如果您想配置自己的发布槽并启用 Pulse,则需要选择我们的付费计划之一。

创建发布槽

您可以通过以下方式根据您的 PostgreSQL 数据库版本创建发布。

所有模型的发布。

CREATE PUBLICATION all_models FOR ALL TABLES;
特定字段的发布。

例如,创建一个发布,发布表 users 的所有更改,但仅复制列 user_idfirstname

   CREATE PUBLICATION users_filtered FOR TABLE users (user_id, firstname);
特定模型的发布。

例如,创建一个发布,发布两个表中的所有更改

CREATE PUBLICATION user_and_department_publication FOR TABLE users, departments;
带有 WHERE 子句的模型的发布。

例如,创建一个发布,发布来自活动 departments 的所有更改

CREATE PUBLICATION active_departments FOR TABLE departments WHERE (active IS TRUE);
基于 DML 操作的发布。

例如,创建一个发布,仅发布一个表中的 INSERT 操作

CREATE PUBLICATION insert_only FOR TABLE departments
WITH (publish = 'insert');

publish (string)

此参数确定新发布将向订阅者发布哪些 DML 操作。该值是以逗号分隔的操作列表。允许的操作包括 insertupdatedeletetruncate。默认设置为发布所有操作,因此此选项的默认值为 'insert, update, delete, truncate'

您可以在此处了解有关 PostgreSQL 的 CREATE PUBLICATION、支持的版本并查看更多示例。

提交您的发布槽

您可以在以下位置提交发布名称,在启用 Prisma Pulse 之前

  1. 要查看您的发布,请执行

    SELECT * FROM pg_publication_tables;
  2. 导航到 Prisma Data Platform 以启用 Pulse。

  3. 数据库连接部分中提交数据库连接字符串和区域。

  4. 在 Pulse 的项目环境配置中,在发布名称字段中输入发布名称。要访问此功能,请在数据库复制部分切换自动设置按钮(在付费计划中可用)。

  5. 切换自动设置后,按钮将转换为高级设置,并出现一个标记为发布名称的文本框。

  6. 步骤 2 复制并粘贴发布名称。

  7. 单击启用 Pulse

移除发布

如果您独立管理复制并选择为特定环境禁用 Prisma Pulse,您可以参考以下 SQL 查询来移除您的发布。

  1. 要删除发布

    DROP PUBLICATION IF EXISTS "my_publication";
  2. 查看您的发布

    SELECT * FROM pg_publication_tables;

特定于提供商的说明

如果您想查看特定于您的数据库的说明,请选择您的数据库提供商