历史版本4 :PostgreSQL环境准备 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

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,如下图所示:

1.png

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

2.png

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

3.png

3.3 安装插件

本文提供 windows 版本的安装步骤,Linux 版本需要用户自行安装。

3.3.1 安装 wal2json

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

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

4.png

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,把下图中红圈中的两行前边的 # 去掉

5.png

3.4 重启数据库

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

6.png

3.5 用户权限确认

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

  • 创建用户命令:

GRANT SELECT ON ALL TABLES IN SCHEMA schemaname TO username;

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

7.png

  • 设置用户账号密码:

CREATE USER username WITH REPLICATION LOGIN PASSWORD 'password';

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

8.png

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

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

9.png

3.6 检查权限是否可用

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

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

10.png

4. 后续步骤编辑

配置好数据库环境后,使用九数云本地宝连接 SQL Server 数据库。详情参见文档:连接数据库

5. 注意事项编辑

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

11.png

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

.\pg_resetxlog.exe -f ..\data

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

.\pg_ctl start -D ..\data