请选择 进入手机版 | 继续访问电脑版

大道数据社区

 找回密码
 立即注册
查看: 315|回复: 6

PostgreSQL CDC 请教

[复制链接]

4

主题

17

帖子

80

积分

注册会员

发表于 2020-6-30 20:29:21 | 显示全部楼层 |阅读模式
一般话题
副标题: -

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
谢谢开这个板块,我问一个我手头的问题。
我正在尝试用 PostgreSQL 里的 Changing Data Capture, 由熟悉这个功能的大佬吗?谢谢先!
回复

使用道具 举报

93

主题

115

帖子

666

积分

管理员

荣誉管理

发表于 2020-6-30 21:17:47 | 显示全部楼层
直接在 postgresql.conf 里设置就行了,把 wal_level 改为 logical, 重新启动。
回复

使用道具 举报

4

主题

17

帖子

80

积分

注册会员

 楼主| 发表于 2020-7-1 00:01:28 | 显示全部楼层
Lee 发表于 2020-6-30 21:17
直接在 postgresql.conf 里设置就行了,有什么具体的问题吗?

我们现在用 AWS RDS 里的 Postgre SQL, 不知道怎么设置呢。还没有找到官网具体的设置方法呢。
回复

使用道具 举报

93

主题

115

帖子

666

积分

管理员

荣誉管理

发表于 2020-7-7 05:26:52 | 显示全部楼层
春暖花开 发表于 2020-7-1 00:01
我们现在用 AWS RDS 里的 Postgre SQL, 不知道怎么设置呢。还没有找到官网具体的设置方法呢。 ...

在 PostgreSQL 里没有像SQL Server 一样的 CDC服务,但是可以通过 Logical Replication 来实现,既把用户的Insert/Update/Delete 记录在Log里。
基本上跟本地服务器差不多,只是服务器端的设定是通过AWS Console 完成的。
1)必须在 RDS 新建一个 Parameter Group,然后修改其中的: rds.logical_replication, 从0改成1
2)max_replication_slots, 最少要有1个 slots3)把 PostgreSQL 的默认parameter group 改成这个用户自定义的group,然后重新启动服务。
几个有用的命令:
show wal_level, 这个值应该是 logical
  1. select pg_create_logical_replication_slot('<slot name'>,'<description>')  --新建一个 slot
  2. select * from pg_catalog.pg_replication_slots   -- 查看slots
复制代码
如果你完成的Insert/update/delete,可以通过下面的语句查看:
  1. select pg_logical_slot_peek_changes('<slot name>',null,null, ['include-timestamp','on'])   --保留slot
  2. select * from pg_logical_slot_get_changes('<slot name>',null,null, ['include-timestamp','on'])   --看完就删
复制代码


回复

使用道具 举报

4

主题

17

帖子

80

积分

注册会员

 楼主| 发表于 2020-7-21 05:26:42 | 显示全部楼层
Lee 发表于 2020-7-7 05:26
在 PostgreSQL 里没有像SQL Server 一样的 CDC服务,但是可以通过 Logical Replication 来实现,既把用户 ...

谢谢大佬!!
回复

使用道具 举报

4

主题

17

帖子

80

积分

注册会员

 楼主| 发表于 2020-8-6 06:25:45 | 显示全部楼层
老师好,
我基本上把 Logical replication 搞定了!但是我发现它只能记录记录、表和字段的修改。我想知道是哪个用户修改的,可以做到吗?谢谢!
回复

使用道具 举报

93

主题

115

帖子

666

积分

管理员

荣誉管理

发表于 2020-8-6 06:39:15 | 显示全部楼层
春暖花开 发表于 2020-8-6 06:25
老师好,
我基本上把 Logical replication 搞定了!但是我发现它只能记录记录、表和字段的修改。我想知道是 ...

logical replication 还是来自的 WAL (write ahead logging), 本身不带 User Audit, 如果你想用 User Audit, 可以看看 pgAudit extension.
https://aws.amazon.com/premiumsupport/knowledge-center/rds-postgresql-pgaudit/
简单地说就是在 parameter group 里设置:
(例子)
pgaudit.role: rds_pgaudit
pgaudit.log_level: info
pgaudit.log: 'ROLE,DDL'
pgaudit.log_statement_once: 1
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|大道数据社区

GMT+8, 2020-9-20 18:22 , Processed in 0.040740 second(s), 24 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表