Snowflake Connector for PostgreSQL 数据源的先决条件

备注

使用 Snowflake Connector for PostgreSQL 需遵守 Connector 条款

在安装 Snowflake Connector for PostgreSQL 之前,请通过执行以下任务来准备关联的数据源:

配置关联的数据源

确保您有一台 PostgreSQL 版本 11 或更高版本的服务器,其中包含您要与 Snowflake 同步的数据。安装 Snowflake Connector for PostgreSQL 之前,请在 PostgreSQL 环境中执行以下操作:

配置 wal_level

Snowflake Connector for PostgreSQL 需要将 wal_level (https://www.postgresql.org/docs/current/runtime-config-wal.html#GUC-WAL-LEVEL) 设置为 logical

根据 PostgreSQL 服务器的托管位置,可以通过不同的方式执行此操作

本地

以超级用户或具有 ALTER SYSTEM 权限的用户身份执行以下查询:

ALTER SYSTEM SET wal_level = logical;
Copy

RDS

代理使用的用户需要已分配 rds_superuserrds_replication 角色。

您还需要执行以下操作:

  • rds.logical_replication 静态参数设置为 1。

  • 根据数据库和复制设置,设置 max_replication_slotsmax_connectionsmax_wal_senders 参数。

AWS Aurora

rds.logical_replication 静态参数设置为 1。

GCP

设置以下标记:

  • cloudsql.logical_decoding=on

  • cloudsql.enable_pglogical=on

有关更多信息,请参阅 Google Cloud 文档 (https://cloud.google.com/sql/docs/postgres/replication/configure-logical-replication#set-up-logical-replication-with-pglogical)。

Azure

将复制支持设置为 Logical。有关更多信息,请参阅 Azure 文档 (https://learn.microsoft.com/en-us/azure/postgresql/single-server/concepts-logical#set-up-your-server)。

配置发布

Snowflake Connector for PostgreSQL 需要创建和配置 发布 (https://www.postgresql.org/docs/current/logical-replication-publication.html#LOGICAL-REPLICATION-PUBLICATION)。

以具有 CREATE 权限的用户身份登录数据库并执行以下查询:

CREATE PUBLICATION <publication name>;
Copy

然后定义 Snowflake Connector for PostgreSQL 代理使用以下信息将能够看到的表:

ALTER PUBLICATION <publication name> ADD TABLE <table name>;
Copy

注意

对于 Postgres v15 及更高版本

如果为表列的子集创建了发布,请使用 ADD_TABLE_WITH_COLUMNS 过程添加用于复制的表,并准确指定相同的列集。

如果将使用 ADD_TABLES,连接器将运行,但将会出现以下不明显的副作用:

  • 在目标数据库中,未包含在筛选器中的列将以 _DELETED 作为后缀。在快照阶段复制的所有数据仍将存在。

  • 如果向发布添加更多列,表将导致 Permanently Failed 状态,需要重新启动复制。

有关更多信息,请参阅 ALTER PUBLICATION 文档 (https://www.postgresql.org/docs/current/sql-alterpublication.html)。

创建复制槽

Snowflake Connector for PostgreSQL 将在 PostgreSQL 服务器中创建 复制槽 (https://www.postgresql.org/docs/current/logicaldecoding-explanation.html#LOGICALDECODING-REPLICATION-SLOTS),其名称具有模式 sf_db_conn_rs_kbmd_<DATASOURCE NAME>,其中 <DATASOURCE NAME> 是在 ADD_DATA_SOURCE 过程中指定的名称。

如果不再使用连接器,则必须移除复制槽,以免在 PostgreSQL 服务器中累积数据。

select pg_drop_replication_slot(<slot_name>)
Copy

创建所需的用户

使用 REPLICATION 属性为 Snowflake Connector for PostgreSQL 创建用户。有关复制安全性的更多信息,请参阅 PostgreSQL 文档 (https://www.postgresql.org/docs/current/logical-replication-security.html)。

后续步骤

完成以上过程后,请按照 使用 Snowsight 设置 Snowflake Connector for PostgreSQL 中的步骤操作。

语言: 中文