postgresql及wal2json插件安装

1、安装postgres

安装文档见:https://www.postgresql.org/download/linux/redhat/
我这里是centos7系统,选择安装postgresql11

# Install the repository RPM:
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

# Install PostgreSQL:
sudo yum install -y postgresql11-server
sudo yum install -y postgresql11-devel
sudo yum install  -y postgresql11-contrib.x86_64 --这个主要是安装pg_recvlogical

# Optionally initialize the database and enable automatic start:
sudo /usr/pgsql-11/bin/postgresql-11-setup initdb
#设置开机启动
sudo systemctl enable postgresql-11
#启动pg
sudo systemctl start postgresql-11

在这里插入图片描述
可以看到pg已经启动

切换到postgres用户:su postgres
psql命令进入命令行:

#创建用户
CREATE USER dev WITH PASSWORD '123456';

创建数据库:
createdb mydb

修改配置允许远程访问,
vim /var/lib/pgsql/11/data/pg_hba.conf
添加配置:

host    all             all             0.0.0.0/0               md5

重启pg:sudo systemctl start postgresql-11
即可通过navicat工具,使用dev用户连接pg

2、安装wal2json插件

sudo yum install -y wal2json11

vim /var/lib/pgsql/11/data/postgresql.conf
添加配置:

shared_preload_libraries = 'wal2json'
wal_level = logical
max_wal_senders = 4
max_replication_slots = 8

listen_addresses = '*'

重启pg:sudo systemctl start postgresql-11

注意,后续pg相关命令需要切换到postgres用户执行
建议把/usr/pgsql-11/bin/加入到环境变量,这样就可以直接执行pg_recvlogical等命令了

#创建slot
/usr/pgsql-11/bin/pg_recvlogical -d mydb --slot mydb_test_slot --create-slot -P wal2json

#查看slot列表
select * from pg_replication_slots;

#启动slot,即可监听数据变化
/usr/pgsql-11/bin/pg_recvlogical -d mydb --slot mydb_test_slot --start -o pretty-print=1 -o add-msg-prefixes=wal2json -f -

在mydb库下创建表并插入数据:

CREATE TABLE "user" (
  "id" int4 NOT NULL,
  "name" varchar(255) COLLATE "pg_catalog"."default" NOT NULL DEFAULT ''::character varying,
  CONSTRAINT "user_pkey" PRIMARY KEY ("id")
)
;

INSERT INTO "user" VALUES (1, 'test');

可以在slot监听窗口看到刚刚插入的数据
在这里插入图片描述

后续通过debezium拉取wal日志数据发到kafka时,会遇到kafka消息中before字段为null的问题
需要执行命令:ALTER TABLE “public”.“user” REPLICA IDENTITY FULL;
在这里插入图片描述
默认情况下,REPLICA IDENTITY值为DEFAULT,oldkeys只有主键数据
见下图的前后对比,上面是DEFAULT的情况,oldkeys只有id;下面是FULL的情况,oldkeys包含了name
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值