tencent cloud

文档反馈

PostgreSQL 数据源

最后更新时间:2024-11-01 16:54:35
    数据集成提供了 PostgreSQL 的读取和写入能力,本文为您介绍使用 PostgreSQL 进行实时数据同步的前置环境配置以及当前能力支持情况。

    支持版本

    目前数据集成已支持 PostgreSQL 单表及整库级实时读取和写入,使用实时同步能力需遵循以下版本限制:
    类型
    版本
    PostgreSQL
    9.6及以上版本

    使用限制

    PostgreSQL 一个数据源只能对应一个数据库,所以一个实时整库任务只支持同步一个数据库下的表,不支持跨库选择表。
    无主键的表由于无法保证 exactly once 可能会有数据重复,因此实时同步任务最好保证有主键。
    PostgreSQL 源端的 Schema 变更依赖有数据传输,Schema 变更后有数据发送时才能感知到 Schema 变更。
    PostgreSQL 源端的重命名列会被识别为删除列和新增列
    PostgreSQL 源端删除表、清空表操作无法同步到目标端,默认忽略此类变更。

    数据库环境准备

    1. 修改 postgres.conf,开启 wal:
    wal_level = logical
    2. 对于需要同步的表,开启全量复制:
    ALTER TABLE <table> REPLICA IDENTITY FULL
    3. 需要的权限:(my_开头的需要替换成真实的库、schema、表、用户名)
    GRANT CONNECT ON DATABASE my_db TO my_user;
    GRANT USAGE ON SCHEMA my_schema TO my_user;
    GRANT SELECT ON ALL TABLES IN SCHEMA my_schema TO my_user;
    ALTER USER my_user REPLICATION;
    GRANT CREATE ON DATABASE my_db TO my_user;
    4. 提前创建名为 dbz_publication 的 pg_publication 可以不使用如下权限:
    GRANT CREATE ON DATABASE my_db TO my_user;

    整库来源配置

    数据来源设置

    
    
    
    参数
    说明
    数据来源
    选择需要同步的 PostgreSQL数据源。
    来源表
    PostgreSQL 只支持指定表和指定库,不支持所有所有库表:
    指定表:此选项下需指定到具体表名称,设置后任务仅同步指定表,只能选择一个库下的表,不支持跨库选择;若需要新增同步表需暂停并重启任务。
    
    
    
    指定库:此选项下需指定具体库名、表名正则表达式。其中库名必须要相同,不支持多个数据库。设置后,任务运行期间符合表名表达式的新增表默认将同步至目标端。
    
    
    
    读取模式
    全量 + 增量:数据同步分为全量和增量同步阶段,全量阶段完成后任务进入增量阶段。全量阶段将同步库内历史数据,增量阶段从任务启动后 binlog cdc 的位点开始同步。
    增量:仅从任务启动后的 binlog cdc 位点开始同步数据。
    时区
    设置日志时间所属时区,默认上海。
    过滤操作
    支持插入、更新和删除三种操作,设置后将不同步指定操作类型的数据。
    一致性语义
    仅代表读取端的一致性语义。支持 At-least-once 和 Exactly-once。
    At-least-once:数据可能存在重复读取,依赖目标端支持去重来保证数据的一致性。适用于全量阶段数据量大且使用非数值型主键、对同步性能要求高的场景。
    Exactly-once:数据严格只读取一次,性能上有一定损失,不支持无主键且无唯一索引列的表。适用于源表有数值型主键或唯一索引列的通用场景。
    当前版本两种模式状态不兼容,任务提交后如果修改模式,不支持带状态重启。
    高级设置(可选)
    可根据业务需求配置参数。

    整库写入配置

    
    
    
    参数
    说明
    数据去向
    选择需要同步的 PostgreSQL 目标数据源。
    写入模式
    Upsert:更新方式写入目标表。此方式下要求目标表中已设置主键。任务将默认使用主键作为唯一键进行记录更新。
    若表无主键则 Append 写入。
    Append:追加模式写入数据表。
    库/Schema/表匹配策略
    默认与来源库/表同名,也可以自定义配置,输入匹配规则即可(鼠标放至“查看内置参数”即可查看匹配规则)。
    PostgreSQL 目标端暂不支持自动建库/Schema/表能力,仅支持同步至已有库、已有 Schema、已有表中,任务运行前需保证目标表已存在。
    说明:
    当前仅支持将 MySQL 类型的数据整库同步到 PostgreSQL。

    单表读取节点配置

    1. 在数据集成页面左侧目录栏单击实时同步。
    2. 在实时同步页面上方选择单表同步新建(可选择表单和画布模式)并进入配置页面。
    
    
    
    参数
    描述
    数据来源
    选择需要同步的表所在数据源。
    支持选择、或者手动输入需读取的库名称。
    默认将数据源绑定的数据库作为默认库,其他数据库需手动输入库名称。
    当数据源网络不联通导致无法直接拉取库信息时,可手动输入数据库名称。在数据集成网络连通的情况下,仍可进行数据同步。
    Schema
    支持选择、或者手动输入需读取该数据源下可用的模式。
    支持选择、或者手动输入需读取的表名称。
    读取模式
    全量 + 增量:数据同步分为全量和增量同步阶段,全量阶段完成后任务进入增量阶段。全量阶段将同步库内历史数据,增量阶段从任务启动后 binlog cdc 的位点开始同步。
    仅增量:仅从任务启动后的 binlog cdc 位点开始同步数据。
    高级设置(选填)
    可根据业务需求配置参数。
    

    单表写入节点配置

    1. 在数据集成页面左侧目录栏单击实时同步。
    2. 在实时同步页面上方选择单表同步新建(可选择表单和画布模式)并进入配置页面。
    
    
    
    参数
    描述
    数据去向
    选择需要写入的表所在数据源。
    支持选择、或者手动输入需写入的库名称。
    默认将数据源绑定的数据库作为默认库,其他数据库需手动输入库名称。
    当数据源网络不联通导致无法直接拉取库信息时,可手动输入数据库名称。在数据集成网络连通的情况下,仍可进行数据同步。
    Schema
    支持选择或者手动输入需写入该数据源下可用的模式。
    支持选择或者手动输入需写入的表名称。
    主键
    选择一个字段作为写入表的主键。
    高级设置(选填)
    可根据业务需求配置参数。

    日志采集写入节点配置

    
    
    
    参数
    说明
    数据源
    选择当前项目中可用的 PostgreSQL 数据源。
    库/表
    选择 PostgreSQL 数据源中对应的库表。
    模式
    选择 PostgreSQL 数据源中的模式。
    主键
    选择一个字段作为数据表主键
    高级设置(可选)
    可根据业务需求配置参数。

    数据类型转换支持

    读取

    PostgreSQL 读取支持的数据类型及转换对应关系如下:
    PostgreSQL 类型
    内部类型
    -
    TINYINT
    SMALLINT,INT2,SMALLSERIAL,SERIAL2
    SMALLINT
    INTEGER,SERIAL
    INT
    BIGINT,BGSERIAL
    BIGINT
    -
    DECIMAL(20, 0)
    REAL,FLOAT4
    FLOAT
    FLOAT8,DOUBLE PRECISION
    DOUBLE
    NUMERIC(p, s),DECIMAL(p, s)
    DECIMAL(p, s)
    BOOLEAN
    BOOLEAN
    DATE
    DATE
    TIME [(p)][WITHOUT TIMEZONE]
    TIME [(p)][WITHOUT TIMEZONE]
    TIMESTAMP [(p)]WITHOUT TIMEZONE
    TIMESTAMP [(p)][WITHOUT TIMEZONE]
    CHAR(n),CHARACTER(n),VARCHAR(n),CHARACTER ,VARYING(n),TEXT
    STRING
    BYTEA
    BYTES

    写入

    PostgreSQL 写入支持的数据类型及转换对应关系如下:
    内部类型
    PostgreSQL 类型
    TINYINT
    -
    SMALLINT
    SMALLINT,INT2,SMALLSERIAL,SERIAL2
    INT
    INTEGER,SERIAL
    BIGINT
    BIGINT,BIGSERIAL
    DECIMAL(20, 0)
    -
    FLOAT
    REAL,FLOAT4
    DOUBLE
    FLOAT8,DOUBLE PRECISION
    DECIMAL(p, s)
    NUMERIC(p, s),DECIMAL(p, s)
    BOOLEAN
    BOOLEAN
    DATE
    DATE
    TIME [(p)][WITHOUT TIMEZONE]
    TIME [(p)][WITHOUT TIMEZONE]
    TIMESTAMP [(p)][WITHOUT TIMEZONE]
    TIMESTAMP [(p)]WITHOUT TIMEZONE
    STRING
    CHAR(n),CHARACTER(n),VARCHAR(n),CHARACTER VARYING(n),TEXT
    BYTES
    BYTEA
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持