1. 概述
通过本地宝连接 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. 操作步骤
注:当前不支持同步视图。
3.1 确认当前使用的数据库版本
当前仅支持 PostgreSQL 9.4及以上的单实例非只读数据库。
3.2 修改REPLICA IDENTITY
1)该属性决定了当数据发生UPDATE,DELETE时,日志记录的字段
DEFAULT - 更新和删除将包含primary key列的现前值
NOTHING - 更新和删除将不包含任何先前值
FULL - 更新和删除将包含所有列的先前值
INDEX index name - 更新和删除事件将包含名为index name的索引定义中包含的列的先前值 如果有多表合并同步的场景,则Tapdata需要调整该属性为FULL 示例
修改代码如下:
alter table schema.tablename REPLICA IDENTITY FULL
2)windows 版本可以进入 SQL shell,如下图所示:
3)后使用默认的 postgres 账号登录:
4)例如将模式为 public 的表 student 修改设置,则输入如下语句:
3.3 安装插件
本文提供 windows 版本的安装步骤,Linux 版本需要用户自行安装。
3.3.1 安装 wal2json
1)点击获取 wal2json 安装包:wal2json_windows_x64.zip
2)解压后,从目录中找到对应版本的 wal2json.dll,然后把 wal2json.dll 拷贝到前边安装的 PostgreSQL 的 lib 目录下,如下图所示:
3.3.2 修改配置文件
1)进入 PosgreSQL 安装目录下的 data 文件夹,进入 data 文件夹中,找到 postgresql.conf 在文件末尾追加以下配置:
shared_preload_libraries = 'wal2json'
wal_level = logical
max_wal_senders = 10
max_replication_slots = 10
2)然后在 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. 后续步骤
配置好数据库环境后,使用本地宝连接 SQL Server 数据库。详情参见文档:连接数据库
5. 注意事项
如果出现启动不了的情况,可以在计算机管理的应用程序下,双击查看错误原因,如下图所示:
对于9.6及以前版本,工具命令pg_resetwal 叫 pg_resetxlog,它的本职工作是清理不需要的WAL文件,可以进入postgresql安装路径下的 bin 文件夹,在这里打开命令行,执行下面的命令:
.\pg_resetxlog.exe -f ..\data
在日志重置后,再尝试启动数据库。即:进入postgresql安装路径下的 bin 文件夹,在这里打开命令行,执行下面的命令:
.\pg_ctl start -D ..\data