逻辑解码输出插件安装PostgreSQL

本文档描述了数据库设置所需的流数据变化开云体育电动老虎机PostgreSQL。这包括配置应用到数据库本身的安装开云体育电动老虎机decoderbufs逻辑解码输出插件。安装和测试执行在以下环境/配置:

Debezi开云体育官方注册网址um 0.10,连接器支持PostgreSQL 10 +逻辑流复制使用pgoutput。这意味着一个逻辑解码输出插件不再是必要的和变化可以直接从复制流发出的连接器。

逻辑解码插件

提取所有持久化逻辑解码的过程更改数据库的表成一个连贯的、易于理解的格式,可以解释不详细的知识数据库的内部状态。开云体育电动老虎机

PostgreSQL 9.4,逻辑解码由解码实现的内容写前日志,它描述的变化在一个存储层面上,为一个特定于应用程序形式如流的元组或SQL语句。上下文的逻辑复制,一个槽位代表一个流的变化,可以重放客户的顺序与它们的起源服务器。每个槽流序列的变化从一个数据库。开云体育电动老虎机写前日志的输出插件转换数据的内部表示格式复制槽的消费欲望。插件是用C编写、编译和安装在机器运行PostgreSQL服务器,并使用PostgreSQL特定api,如所描述的PostgreSQL的文档

开云体育官方注册网址Debezium PostgreSQL连接器与Debezium之一的支持逻辑解码插件,

编码的变化Protobuf格式或逻辑复制格式。

为简单起见,Debezium图像开云体育官方注册网址基于香草还提供了一个容器PostgreSQL服务器映像上面的编译和安装插件。

Debe开云体育官方注册网址zium逻辑解码插件只有被安装和测试Linux机器。为Windows和其他平台可能需要不同的安装步骤

插件之间的差异

跟踪所有最新的差异在一个测试套件Java类

逻辑解码和输出插件的更多信息可以发现:

安装

在当前安装的示例中,decoderbufs输出插件使用逻辑解码。decoderbufs输出插件产生Protobuf每个数据库信息变化。开云体育电动老虎机每个消息包含一个更新的新/旧元组表行. .该插件编译和安装通过执行相关命令执行提取开云体育官方注册网址Debezium Dockerfile

在执行命令之前,确保用户编写的特权decoderbufs图书馆在PostgreSQL自由目录(在测试环境中,该目录是:/usr/lib64/pgsql/)。还要注意,安装过程需要PostgreSQL效用pg_config。验证路径环境变量设置实用程序可以找到。如果不是,更新路径适当的环境变量。例如在测试环境:

decoderbufs安装命令
美元git克隆https://github.com/debez开云体育官方注册网址ium/postgres-decoderbufs v - b {debezium-version}——单个的分支\ & & cd postgres-decoderbufs \ & & & & make install \ & & cd . .\ & & rm射频postgres-decoderbufs
decoderbufs安装输出
克隆到“postgres-decoderbufs”……远程:列举对象:288年完成。远程:计数对象:100%(4/4),完成。远程:压缩对象:100%(4/4),完成。远程:288(δ0),再利用1(δ0),284年pack-reused接收对象:100%(288/288),91.62简约| 3.66 MiB / s,完成。解决增量:100%(131/131),完成。注:切换到“c9b00aa8c093fa77e08b256bb09d33069a30db86”。你在“分离头”状态。你可以看看周围,做实验修改和提交他们,你可以丢弃任何承诺你在这个状态不会影响任何分支切换回的一个分支。如果你想创建一个新的分支,保留提交您创建,你可以这样做(现在或以后)通过使用- c开关命令。 Example: git switch -c  Or undo this operation with: git switch - Turn off this advice by setting config variable advice.detachedHead to false gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -Wno-format-truncation -Wno-stringop-truncation -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fPIC -std=c11 -I/usr/local/include -I. -I./ -I/usr/include/pgsql/server -I/usr/include/pgsql/internal -D_GNU_SOURCE -I/usr/include/libxml2 -c -o src/decoderbufs.o src/decoderbufs.c gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -Wno-format-truncation -Wno-stringop-truncation -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fPIC -std=c11 -I/usr/local/include -I. -I./ -I/usr/include/pgsql/server -I/usr/include/pgsql/internal -D_GNU_SOURCE -I/usr/include/libxml2 -c -o src/proto/pg_logicaldec.pb-c.o src/proto/pg_logicaldec.pb-c.c gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -Wno-format-truncation -Wno-stringop-truncation -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fPIC -shared -o decoderbufs.so src/decoderbufs.o src/proto/pg_logicaldec.pb-c.o -L/usr/lib64 -Wl,-z,relro -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -Wl,--as-needed -lprotobuf-c /usr/bin/mkdir -p '/usr/lib64/pgsql' /usr/bin/mkdir -p '/usr/share/pgsql/extension' /usr/bin/install -c -m 755 decoderbufs.so '/usr/lib64/pgsql/decoderbufs.so' /usr/bin/install -c -m 644 .//decoderbufs.control '/usr/share/pgsql/extension/'

安装在Fedora 30 +

开云体育官方注册网址Debezium提供RPM包对于Fedora操作系统。更新包后总是最后一个Debezium释放。开云体育官方注册网址使用RPM问题只是标准Fedora安装命令:

$ sudo dnf - y postgres-decoderbufs安装

其余的相同配置如下所述。

PostgreSQL服务器配置

一旦decoderbufs插件已经安装,数据库服务器应该配置。开云体育电动老虎机

建立图书馆,细胞膜和复制参数

添加以下行结束的时候postgresql.confPostgreSQL的插件配置文件以包含共享库和调整一些细胞膜流复制设置。配置里提炼的postgresql.conf.sample。您可能需要修改它,如果你有另外安装shared_preload_libraries

postgresql.conf 配置文件参数设置
# # # # # # # # # # # #复制# # # # # # # # # # # # # # #模块shared_preload_libraries =“decoderbufs”(1)#复制wal_level =逻辑(2)max_wal_senders = 4(3)max_replication_slots = 4(4)
1 告诉它应该在启动时加载的服务器decoderbufs(插件的名称decoderbufsMakefile)
2 告诉服务器它应该使用逻辑解码写前日志
3 告诉服务器它应该使用最多4单独的进程来处理WAL变化
4 告诉它应该允许最多的服务器4创建复制槽为流WAL变化

开云体育官方注册网址Debezium使用PostgreSQL的逻辑解码,它使用复制插槽。复制槽保证保留所有细胞膜所需Debezium即使在Debezium中断。开云体育官方注册网址是重要的因为这个原因密切监控复制槽为了避免太多的磁盘消费和其他条件,如目录膨胀如果Debezium槽保持闲置太久。开云体育官方注册网址有关更多信息,请参阅官方Postgres文档这个主题

我们强烈推荐阅读和理解官方文档关于力学和PostgreSQL写前日志的配置。

设置复制权限

复制只能由一个数据库用户,只有适当的权限和配置的主机数量。开云体育电动老虎机为了给用户复制权限,定义一个PostgreSQL的角色至少复制登录权限。例如:

创建角色名复制登录;

超级用户默认有两个以上的角色。

添加以下行结束的时候pg_hba.confPostgreSQL配置文件,配置客户端身份验证数据库的复制。开云体育电动老虎机PostgreSQL服务器应该允许复制发生的服务器和主机之间Debezium PostgreSQL连接器正在运行。开云体育官方注册网址

注意,身份验证是指数据库超级用户开云体育电动老虎机postgres。你可以改变这一因此,如果其他用户复制登录权限已创建。

pg_hba.conf 配置文件参数设置
# # # # # # # # # # # #复制# # # # # # # # # # # # # #本地复制postgres的信任(1)主机复制postgres 127.0.0.1/32信任(2)主机复制postgres: 1/128的信任(3)
1 告诉服务器允许复制postgres在本地服务器上(即机器)
2 告诉服务器允许postgres本地主机使用接收复制更改IPV4
3 告诉服务器允许postgres本地主机使用接收复制更改IPV6

看到PostgreSQL的文档更多信息在网络的面具。