当前位置: 首页 > news >正文

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,即可监听数据变化
/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
在这里插入图片描述

相关文章:

  • 新手做网站服务器用什么/搜索引擎优化时营销关键词
  • wordpress分享/营销网站方案设计
  • 耒阳网站开发/三叶草gy5987
  • 重庆江北区网站建设公司/广告联盟平台自动赚钱
  • 高端设计网站建设/厦门seo关键词优化代运营
  • 做网站要遵守的基本原则/百度网盘搜索引擎入口官网
  • 计算机今年炸了?现在还适合入行吗?
  • 【Flask框架】——24 创建ROM映射
  • 嵌入式学习之Linux驱动:IO模型(1)概览
  • C++ Primer 13.5练习:实现StrVec和String
  • 【Linux】进程信号
  • Netty实战与源码剖析(二)——Netty线程模型
  • ROS node命令行参数详解
  • 数据库实验6 存储过程实验
  • 分治法算法
  • Android---Banner轮播图
  • jQuery 动画
  • JavaScript数组类型