参考地址:https://blog.csdn.net/weixin_33985507/article/details/92460419

参考地址:https://mp.weixin.qq.com/s/sccRf9u0MWnHMsnXjlcRGg

一、安装kafkacat

kafkacat 是一个C语言编写的 kafka 生产者、消费者程序。

安装kafkacat 之前,需要安装一下依赖

sudo apt-get install librdkafka-dev libyajl-dev

二、重点是安装avro-c

安装avro-c的依赖

(1)、 其中安装libcur时会出错,因此先执行

sudo apt-get install libjansson-dev

(2)、接着安装aptitude(若没有安装)

apt install aptitude

(3)、安装curl

tar jxvf  curl-7.66..tar.bz2
cd curl-7.66.0
./configure
make
make insall

安装完成之后将curl-7.66.0/include/curl 目录拷贝到/usr/include目录下面(需要包含curl 目录)

sudo cp -r /home/yzh/curl-7.66./include/curl /usr/include

(4)、安装zlib

sudo apt install zlib1g-dev

(5)、安装snappy

sudo apt install libsnappy-dev

(6)、安装PkgConfig

sudo apt install pkg-config

(7)、安装liblzma

sudo apt install liblzma-dev

(8)、安装cmake

tar zxvf cmake-3.15..tar.gz
cd cmake-3.15.
./bootstrap
make
make install cmake -version
cmake version 3.15.
CMake suite maintained and supported by Kitware (kitware.com/cmake).

(9)、安装avro-c

需要root用户

tar -zvxf avro-c-1.9..tar.gz
cd avro-c-1.9./
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/opt/avro -DCMAKE_BUILD_TYPE=Release -DTHREADSAFE=true
make
make test
make install

导入库文件

# vi /etc/ld.so.conf
/opt/avro/lib # ldconfig

安装完成之后,需要将/opt/avro(安装时指定的路径 )中的相关文件拷贝到/usr相关路径下面

cp -r /opt/avro/lib/* /usr/lib
cp -r/opt/avro/include /usr/include

三、安装libserdes

git clone https://github.com/confluentinc/libserdes

cd libserdes
./configure
make
sudo make install

四、安装kafkacat

git clone https://github.com/edenhill/kafkacat

./configure
make
sudo make install

安装之后,需要添加环境变量

sudo vim /etc/profile

exoprt LD_LIBRARY_PATH=/usr/local/lib
export PATH=$PATH:$LD_LIBRARY_PATH

五、安装wal2json

git clone https://github.com/eulerto/wal2json

 cd wal2json

make
sudo make install

六、修改postgresql相关配置文件

posgresql.conf

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

创建具有Replication和Login授权的用户

CREATE ROLE <name> WITH REPLICATION PASSWORD 'password' LOGIN;

修改pg_hba.conf,使该用户可以远程或本地访问数据库

############ REPLICATION ##############
local replication <name> trust
host replication <name> 127.0.0.1/ trust host replication <name> ::/ trust

七、测试

1、建立测试环境(创建的表必须要有主键)

CREATE DATABASE test;

CREATE TABLE test_table (
id char() NOT NULL,
code char(),
PRIMARY KEY (id)
);

2、创建slot

pg_recvlogical   -h localhost -p  -U postgres -d testdb --slot test_slot --create-slot -P wal2json

3、启动zookeeper、kafka(略)

5、启动slot

pg_recvlogical -h localhost -p  -U postgres -W  -d testdb -S test_slot(对应创建的slot) --start -f - | kafkacat -b 127.0.0.1: -t testdb_topic

6、消费testdb_topic

bin/kafka-console-consumer.sh --topic testdb_topic --bootstrap-server 127.0.0.1: --from-beginning 

将postgresql中的数据实时同步到kafka中的更多相关文章

  1. Mysql数据实时同步

    企业运维的数据库最常见的是 mysql;但是 mysql 有个缺陷:当数据量达到千万条的时候,mysql 的相关操作会变的非常迟缓; 如果这个时候有需求需要实时展示数据;对于 mysql 来说是一种灾 ...

  2. SQLServer数据实时同步PostgreSQL

    SQLServer数据实时同步至PostgreSQL 前言: 为迎合工作需求有时候传送的数据保存在SQLServer中但由于工作需要需要保存到PostgreSQL中进行处理,本文主要通过在SQLSer ...

  3. MySQL 到 ES 数据实时同步技术架构

    MySQL 到 ES 数据实时同步技术架构 我们已经讨论了数据去规范化的几种实现方式.MySQL 到 ES 数据同步本质上是数据去规范化多种实现方式中的一种,即通过"数据迁移同步" ...

  4. Linux下Rsync+sersync实现数据实时同步

    inotify 的同步备份机制有着缺点,于是看了sersync同步,弥补了rsync的缺点.以下转自:http://www.osyunwei.com/archives/7447.html 前言: 一. ...

  5. sersync实现数据实时同步

    1.1 第一个里程碑:安装sersync软件 1.1.1 将软件上传到服务器当中并解压 1.上传软件到服务器上 rz -E 为了便于管理上传位置统一设置为 /server/tools 中 2.解压软件 ...

  6. CentOS 6.5 rsync+inotify实现数据实时同步备份

    CentOS 6.5 rsync+inotify实现数据实时同步备份 rsync    remote sync 远程同步,同步是把数据从缓冲区同步到磁盘上去的.数据在内存缓存区完成之后还没有写入到磁盘 ...

  7. Rsync+sersync实现数据实时同步

    前言: 一.为什么要用Rsync+sersync架构? 1.sersync是基于Inotify开发的,类似于Inotify-tools的工具 2.sersync可以记录下被监听目录中发生变化的(包括增 ...

  8. Linux下Rsync+Inotify-tools实现数据实时同步

    Linux下Rsync+Inotify-tools实现数据实时同步 注意:下面的三个案例都是rsync 每次都是全量的同步(这就坑爹了),而且 file列表是循环形式触发rsync ,等于有10个文件 ...

  9. CentOS7下Rsync+sersync实现数据实时同步

    近期公司要上线新项目,后台框架选型我选择当前较为流行的laravel,运行环境使用lnmp. 之前我这边项目tp32+apache,开发工具使用phpstorm. 新建/编辑文件通过phpstorm配 ...

随机推荐

  1. 12 November

    [SCOI2005] Mine BZOJ 1088: 相信大家都玩过扫雷的游戏.那是在一个 n×m的矩阵里面有一些雷,要你根据一些信息找出雷来.万圣节到了 ,"余"人国流行起了一种 ...

  2. vue中动态加载图片路径的方法

    assets:在项目编译的过程中会被webpack处理解析为模块依赖,只支持相对路径的形式,如< img src=”./logo.png”>和background:url(./logo.p ...

  3. PROD异机全备份恢复验证实施文档

    PROD异机全备份恢复验证实施文档 ******利用10月25日的全量备份.10月26日当天的归档日志及当前redo日志,恢复数据库到故障前数据库状态****** 准备工作:source 源库:PRO ...

  4. Java Bean 使用包装类型 还是基本类型

    参考:实体类中用基本类型好,还是用包装类型好_ - 牵牛花 - 博客园 int优缺点 优点: 1.用于Bean的时候,有默认值.比如自己拼接sql增加一个User时,会方便很多,不过现在都用ORM框架 ...

  5. js 创建对象的方法

    <script> //1.字面量语法 var rectangle1 = {}; rectangle1.name="mindong"; rectangle1.width ...

  6. python爬虫——爬取淘票票正在热映电影

    今天正好学习了一下python的爬虫,觉得收获蛮大的,所以写一篇博客帮助想学习爬虫的伙伴们. 这里我就以一个简单地爬取淘票票正在热映电影为例,介绍一下一个爬虫的完整流程. 首先,话不多说,上干货——源 ...

  7. OuterXml和InnerXml(2)

    官方例子:https://msdn.microsoft.com/en-us/library/system.xml.xmlnode.outerxml.aspx using System; using S ...

  8. Python基础-1 python由来 Python安装入门 注释 pyc文件 python变量 获取用户输入 流程控制if while

    1.Python由来 Python前世今生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚 ...

  9. [Web 前端] 019 css 定位之绝对定位与相对定位

    1. 关于定位 我们可以使用 css 的 position 属性来设置元素的定位类型 postion 的设置项如下 设置项 释义 relative 生成相对定位元素元素所占据的文档流的位置不变元素本身 ...

  10. [Web 前端] 012 css 元素溢出

    overflow 当子元素的尺寸超过父元素的尺寸时,需要设置父元素显示溢出的子元素的方式 通过 overflow 属性来设置 概览 参数 释义 visible(默认值) 内容不会被修剪会呈现在元素框之 ...