以下部分介绍了如何配置 AlloyDB for PostgreSQL 数据库。
在 Datastream 和 AlloyDB 之间建立连接
如需使 Datastream 能够连接到 AlloyDB 实例,您需要在使用方项目中设置 TCP 代理。TCP 代理映像已面向所有客户公开提供。
启动代理容器:
- 在使用方项目中激活 Cloud Shell。
- 运行以下脚本以创建 TCP 代理并停用网桥 以免出现连接问题:
gcloud compute instances create-with-container \ --zone=REGION_ID VM_NAME \ --container-image gcr.io/dms-images/tcp-proxy \ --tags=dms-tcp-proxy \ --container-env=SOURCE_CONFIG=ALLOYDB_IP:ALLOYDB_PORT \ --can-ip-forward \ --network=SOURCE_AND_DEST_VPC \ --machine-type=VM_TIER \ --metadata=startup-script='#! /bin/bash mkdir -p /etc/docker cat <<EOF > /etc/docker/daemon.json {"bridge":"none"} EOF systemctl restart docker'
替换以下内容:
- REGION_ID:您要在其中创建 TCP 代理的区域。
- VM_NAME:虚拟机的名称。
- ALLOYDB_IP:AlloyDB for PostgreSQL 实例的 IP 地址。
- ALLOYDB_PORT:AlloyDB for PostgreSQL 实例的端口号。
- SOURCE_AND_DEST_VPC:源和目标连接到的 VPC 网络。
- VM_TIER:虚拟机的类型。
包含更新后的参数的示例命令:
gcloud compute instances create-with-container \ --zone=us-central1-c ds-tcp-proxy \ --container-image gcr.io/dms-images/tcp-proxy \ --tags=ds-tcp-proxy \ --container-env=SOURCE_CONFIG=10.16.0.5:5432 \ --can-ip-forward \ --network=default \ --machine-type=e2-micro --metadata=startup-script='#! /bin/bash mkdir -p /etc/docker cat <<EOF > /etc/docker/daemon.json {"bridge":"none"} EOF systemctl restart docker'
输入以下内容,运行脚本以输出 TCP 代理的 IP 地址:
gcloud compute instances describe VM_NAME \ --format="yaml(networkInterfaces[].networkIP)" \ --zone=REGION_ID
替换以下内容:
- VM_NAME:虚拟机的名称。
- REGION_ID:您在其中创建了 TCP 代理的区域。
(可选)创建防火墙规则来限制 TCP 代理的入站流量:
gcloud compute firewall-rules create FIREWALL_RULE_NAME \ --direction=INGRESS \ --priority=1000 \ --target-tags=dms-tcp-proxy \ --network=SOURCE_VPC \ --action=ALLOW \ --rules=tcp:ALLOYDB_PORT \ --source-ranges=IP_RANGE
替换以下内容:
- FIREWALL_RULE_NAME:您的防火墙规则的名称。
- SOURCE_VPC:源连接到的 VPC 网络。
- ALLOYDB_PORT:AlloyDB for PostgreSQL 实例的端口号。
- IP_RANGE:您要限制入站流量的 IP 地址范围。
允许来自所有 IP 地址的入站流量的示例命令:
gcloud compute firewall-rules create ds-proxy1 \ --direction=INGRESS \ --priority=1000 \ --target-tags=ds-tcp-proxy \ --network=default \ --action=ALLOW \ --rules=tcp:5432
配置 AlloyDB 以进行复制
为 AlloyDB 主实例启用逻辑解码。在 Google Cloud 中,将
alloydb.logical_decoding
标志的值设置为开启。如需了解如何更新数据库标志,请参阅配置实例的数据库标志。在同一 VPC 中的任何虚拟机上运行以下命令,使用 TCP 代理 IP 地址连接到 AlloyDB 实例:
psql -h PROXY_IP \ -U DB_USER \ -d DB_NAME
替换以下内容:
- PROXY_IP:TCP 代理的 IP 地址。
- DB_USER:AlloyDB 数据库的用户名。
- DB_NAME:AlloyDB 数据库名称。
运行以下命令,向数据库用户授予复制权限:
ALTER USER DB_USER WITH REPLICATION;
创建发布内容。我们建议您仅为 您要复制的表数量这样,Datastream 就能以只读模式 相关数据,并降低数据库和 Datastream 的负载:
CREATE PUBLICATION PUBLICATION_NAME FOR TABLE SCHEMA1.TABLE1, SCHEMA2.TABLE2;
替换以下内容:
- PUBLICATION_NAME:出版物的名称。在 Datastream 数据流创建向导中创建数据流时,您需要提供此名称。
- SCHEMA:包含表的架构的名称。
- TABLE:您要复制的表的名称。
您可以为架构中的所有表创建发布内容。通过这种方法, 您可以复制对指定架构列表中表的更改,包括 您将来创建的表:
CREATE PUBLICATION PUBLICATION_NAME FOR TABLES IN SCHEMA1, SCHEMA2;
您还可以为数据库中的所有表创建发布内容。请注意,这种方法会增加源数据库和 Datastream 的负载:
CREATE PUBLICATION PUBLICATION_NAME FOR ALL TABLES;
执行以下命令,创建复制槽。
SELECT PG_CREATE_LOGICAL_REPLICATION_SLOT('REPLICATION_SLOT_NAME', 'pgoutput');
替换以下内容:
- REPLICATION_SLOT_NAME:复制槽的名称。 在 Datastream 中创建数据流时,您需要提供此名称 视频流创建向导
创建 Datastream 用户
如需创建 Datastream 用户,请输入以下 PostgreSQL 命令:
CREATE USER USER_NAME WITH REPLICATION LOGIN PASSWORD 'USER_PASSWORD';
替换以下内容:
- USER_NAME:您要创建的数据流用户的名称。
- 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 来源搭配使用。