该文档描述了从PostgreSQL流转数据变更的数据库设置。这包括配置数据库自身以及安装decoderbufs逻辑解码输出插件。这个安装和测试在以下环境、配置下执行:
在德比齐姆版本 0.10 时,连接器支持 PostgreSQL 10+ 逻辑复制流使用 pgoutput。这就意味着不在需要逻辑解码输出插件了clashingsthe,变更直接可以通过连接器从复制流中给出。
逻辑解码是从数据库表的所有持久化变更中收取并转换为连贯的,容易理解格式的过程,不需要详尽的数据库内部状态知识就可以被解释。
在 PostgreSQL 版本 9.4 时,逻辑解码的实现是解码预写日志内容,这个在存储级描述变更,转换到应用特定的格式例如元组流或者 SQL 语句。在逻辑复制上下文中,一个槽就代表了变更流,可以被客户端按照原始服务器变更产生的顺序重放变更。每个槽是单个数据库的变更流。输出插件从预写日志内部表示转换到一个复制槽期望的消费者格式。插件使用喜语言编写、编译,并安装到运行 PostgreSQL 服务器的机器上,他们使用了一些 PostgreSQL 特定的接口,在PostgreSQL 文档中描述了。
德比齐姆的 PostgreSQL 连接器与德比齐姆支持的逻辑解码插件之一一起工作,
为了简化,德比齐姆同样基于PostgreSQL 服务器镜像之上,提供了一个容器镜像来编译和安装其插件。
德比齐姆逻辑解码插件仅在林纽克斯机器上安装和测试过。对于温豆丝和其他平台有可能需要不同的安装步骤。
当前的安装示例,使用的是decoderbufs输出插件作为逻辑解码。decoderbufs输出插件为每个数据库变更产生一个 Protobuf 消息。每个消息为更新的数据表行包含新旧元组。该插件的编译和安装是通过执行德比齐姆容器文件来从镜像重抽取的。
在执行命令之前,请确保用户有将 decoderbufs 库写入 PostgreSQL lib 目录的权限(在测试环境,该目录是:/u/l6/p/)。同时注意安装过程需要 PostgreSQL 工具pg_config。查看环境变量 PATH 已经设置并且可以找到该工具。如果找不到,请正确更新环境变量。在测试环境的示例:
德比齐姆为妃朵拉操作系统提供了RPM 包。在 德比齐姆每个最终版发布后该包都会更新。执行标准的妃朵拉安装命令来使用 RPM 包。
将下面这些行添加到 PostgreSQL 配置文件 p.c 的最后,以便引用该插件作为共享库,并且调整一些预写日志和流复制设置。这些配置从p.c.s中抽取而来。你需要修改他clash如何上ins,,例如如果你额外安装了 s_p_l。
德比齐姆使用 PostgreSQL 的逻辑解码,他使用了复制槽。复制槽保证了所有德比齐姆需要保留的预写日志,即使在德比齐姆不在线时clash如何上ins。因为这个原因需要仔细监控复制槽来避免大量的磁盘消耗,以及其他原因德比齐姆槽太久没有使用而导致的目录膨胀。更多信息请参考官方 Postgres关于该主题的文档。
我们墙裂建议阅读和理解关于 Postgres 预写日志的机制和配置的官方文档。
复制仅能由有相应权限的数据库用户以及配置的主机执行。要想为用户配置复制权限,定义一个 PostgreSQL 角色保证其至少有复制 R 和登录 L 权限。例如:
将下面的这些行添加到 PostgreSQL 配置文件 p_b.c 的末尾,用来为数据库复制配置客户端认证clash如何上ins。PostgreSQL 服务器应该允许在服务器机器和安装了德比齐姆 PostgreSQL 连接器的机器间执行复制。
注意认证指的是数据库超级用户 postgres。可以按需修改这个,如果其他用户有复制 R 和登录 L 权限的话。