跳至主要内容

一般说明

注意

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');

publishstring

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

您可以详细了解 PostgreSQL 的CREATE PUBLICATION、支持的版本并查看更多示例此处

提交您的发布槽

您可以在中提交发布名称,然后启用 Prisma Pulse。

  1. 要查看您的发布项,请执行以下操作。

    SELECT * FROM pg_publication_tables;
  2. 导航到Prisma 数据平台以启用 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;

特定提供程序说明

如果您想查看数据库的具体说明,请选择您的数据库提供商