您可以使用 Datastream 将 Cloud SQL for PostgreSQL
数据库中的变更数据捕获 (CDC) 更新流式传输到 受支持的目标,例如
BigQuery 或 Cloud Storage。如需准备源实例,请启用 cloudsql.logical_decoding
标志,创建发布内容和复制槽,并配置 Datastream 用户。
启用逻辑复制
在 Google Cloud 控制台中前往 Cloud SQL。
打开 Cloud SQL 实例,然后点击修改 。
前往标志 部分。
点击添加标志 。
从下拉菜单中选择
cloudsql.logical_decoding标志。将标志值设置为 on 。
点击保存 以保存更改。您需要重启实例,才能应用更改来更新实例。
实例重启后,在概览 页面的数据库标志 下确认您所做的更改。
创建发布内容和复制槽
以具有足够权限来创建复制槽的用户身份连接到数据库;否则,请运行以下命令:
ALTER USER USER_NAME WITH REPLICATION;
替换以下内容:
- USER_NAME:您要向其授予 复制权限的用户的名称。
创建发布内容。建议您仅为要复制的表创建发布内容。这样,Datastream 就可以只读取相关数据,并降低数据库和 Datastream 的负载:
CREATE PUBLICATION PUBLICATION_NAME FOR TABLE SCHEMA1.TABLE1, SCHEMA2.TABLE2;
替换以下内容:
- PUBLICATION_NAME:发布内容的名称。您需要在 Datastream 数据流创建向导中创建数据流时提供此名称。
- SCHEMA:包含表的架构的名称。
- TABLE:您要复制的表的名称。
您还可以为数据库中的所有表创建发布内容。请注意,这种方法会增加源数据库和 Datastream 的负载:
CREATE PUBLICATION PUBLICATION_NAME FOR ALL TABLES;
输入以下 SQL 命令,创建复制槽:
SELECT PG_CREATE_LOGICAL_REPLICATION_SLOT('REPLICATION_SLOT_NAME', 'pgoutput');替换以下内容:
- REPLICATION_SLOT_NAME:复制槽的名称。 您需要在 Datastream 数据流创建向导中创建数据流时提供此名称。
创建 Datastream 用户
使用 PostgreSQL 客户端连接到数据库。
输入以下 PostgreSQL 命令:
CREATE USER USER_NAME WITH REPLICATION LOGIN PASSWORD 'USER_PASSWORD';
替换以下内容:
- USER_NAME:您要创建的 Datastream 用户的名称。
- USER_PASSWORD:您要创建的 Datastream 用户的登录密码。
向您创建的用户授予以下特权:
GRANT SELECT ON ALL TABLES IN SCHEMA SCHEMA_NAME TO USER_NAME; GRANT USAGE ON SCHEMA SCHEMA_NAME TO USER_NAME; ALTER DEFAULT PRIVILEGES IN SCHEMA SCHEMA_NAME GRANT SELECT ON TABLES TO USER_NAME;替换以下内容:
- SCHEMA_NAME:您要向其授予 特权的架构的名称。
- USER_NAME:您要向其授予特权的用户。
后续步骤
- 详细了解 Datastream 如何与 PostgreSQL 源搭配使用。