反馈已提交

网络繁忙

【Windows环境】PostgreSQL环境准备

  • 文档创建者:Roxy
  • 历史版本:8
  • 最近更新:Wendy123456 于 2023-11-13
  • 1. 概述

    通过数据管道实时同步 PostgreSQL 的数据时,来源数据源为 PostgreSQL,执行同步任务前,需要参考本文在数据源中进行一些配置,为后续的数据同步做好准备。

    本文提供 Windows 版本的环境准备步骤,Linux 版本请参见:【Linux环境】PostgreSQL环境准备

    2. CDC原理和支持

    2.1 CDC原理

    PostgreSQL 的逻辑解码功能最早出现在9.4版本中,它是一种机制,允许提取提交到事务日志中的更改,并通过输出插件以用户友好的方式处理这些更改。 此输出插件必须在运行 PostgreSQL 服务器之前安装,并与一个复制槽一起启用,以便客户端能够使用更改。

    2.2 CDC支持

    • 逻辑解码(Logical Decoding):用于从 WAL 日志中解析逻辑变更事件

    • 复制协议(Replication Protocol):提供了消费者实时订阅(甚至同步订阅)数据库变更的机制

    • 快照导出(export snapshot):允许导出数据库的一致性快照(pg_export_snapshot)

    • 复制槽(Replication Slot):用于保存消费者偏移量,跟踪订阅者进度。

    所以,根据以上,我们需要安装逻辑解码器,当前FineDataLink 支持 wal2json 解码器,输出格式为 json 。

    3. 操作步骤

    注:当前不支持同步视图。

    同步来源数据库的数据至去向数据源之前,需要确保 PostgreSQL 数据库版本为数据管道支持的版本。

    3.1 确认当前使用的数据库版本

    确认是否为数据管道同步任务所支持的版本。

    当前仅支持 PostgreSQL 9.4及以上的单实例非只读数据库。支持情况详情参见:数据管道概述

    3.2 修改REPLICA IDENTITY

    该属性决定了当数据发生UPDATE,DELETE时,日志记录的字段

    • DEFAULT - 更新和删除将包含primary key列的现前值

    • NOTHING - 更新和删除将不包含任何先前值

    • FULL - 更新和删除将包含所有列的先前值

    • INDEX index name - 更新和删除事件将包含名为index name的索引定义中包含的列的先前值 如果有多表合并同步的场景,则Tapdata需要调整该属性为FULL 示例

    修改代码如下:

    alter table schema.tablename REPLICA IDENTITY FULL

    windows 版本可以进入 SQL shell,如下图所示:

    然后使用默认的 postgres 账号登录:

    例如将模式为 public 的表 student 修改设置,则输入如下语句:

    3.3 安装插件

    3.3.1 安装 wal2json

    点击获取 wal2json 安装包:wal2json_windows_x64.zip

    解压后,从目录中找到对应版本的 wal2json.dll,然后把 wal2json.dll 拷贝到前边安装的 PostgreSQL 的 lib 目录下,如下图所示:

    3.3.2 修改配置文件

    进入 PosgreSQL 安装目录下的 data 文件夹,进入 data 文件夹中,找到 postgresql.conf 在文件末尾追加以下配置:

    shared_preload_libraries = 'wal2json'
    wal_level = logical
    max_wal_senders = 10
    max_replication_slots = 10

    然后在 data 目录下找到 pg_hba.conf,把下图中红圈中的两行前边的 # 去掉

    3.4 重启数据库

    进入 windows 系统中的服务下,重启数据库,如下图所示:

    3.5 用户权限确认

    以上都是用默认的用户 Postgres 进行,若用其他用户进行配置,则需要该用户为 PostgreSQL replication 角色、PostgreSQL login 角色,并且有需要同步的表的 select / update 权限。

    • 创建用户命令:

    GRANT SELECT ON ALL TABLES IN SCHEMA schemaname TO username;

    注:schemaname 为模式名称,username为用户名称。

    • 设置用户账号密码:

    CREATE USER username WITH REPLICATION LOGIN PASSWORD 'password';

    注:username 为用户名,password 为用户密码。

    • 赋予用户 replication和login权限命令

    进入安装目录下的 data 文件夹,对配置文件 pg_hba.conf 检查,确保用户拥有这些权限

    3.6 检查权限是否可用

    进入 SQL shell 中,输入如下命令,若 slot 信息返回了记录,则说明配置成功:

    select * from pg_create_logical_replication_slot('slot_test', 'wal2json');

    4. 后续步骤

    在配置好数据库后,即可完成数据源配置。

    需要在使用数据管道进行实时同步任务配置前,在 FineDataLink 中配置好需要同步的源端和目标端数据库数据连接,以便在同步任务配置过程中,通过选择数据源名称来控制同步任务,详情参见:配置数据连接

    然后设置数据管道任务即可,详情参见:配置数据管道任务

    5. 注意事项

    如果出现启动不了的情况,可以在计算机管理的应用程序下,双击查看错误原因,如下图所示:

    对于9.6及以前版本,工具命令pg_resetwal 叫 pg_resetxlog,它的本职工作是清理不需要的WAL文件,可以进入postgresql安装路径下的 bin 文件夹,在这里打开命令行,执行下面的命令:

    .\pg_resetxlog.exe -f ..\data

    在日志重置后,再尝试启动数据库。即:进入postgresql安装路径下的 bin 文件夹,在这里打开命令行,执行下面的命令:

    .\pg_ctl start -D ..\data



    附件列表


    主题: 数据管道
    已经是第一篇
    已经是最后一篇
    • 有帮助
    • 没帮助
    • 只是浏览
    • 评价文档,奖励 1 ~ 100 随机 F 豆!

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持