将postgresql中的数据实时同步到kafka中
参考地址: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中的更多相关文章
- Mysql数据实时同步
企业运维的数据库最常见的是 mysql;但是 mysql 有个缺陷:当数据量达到千万条的时候,mysql 的相关操作会变的非常迟缓; 如果这个时候有需求需要实时展示数据;对于 mysql 来说是一种灾 ...
- SQLServer数据实时同步PostgreSQL
SQLServer数据实时同步至PostgreSQL 前言: 为迎合工作需求有时候传送的数据保存在SQLServer中但由于工作需要需要保存到PostgreSQL中进行处理,本文主要通过在SQLSer ...
- MySQL 到 ES 数据实时同步技术架构
MySQL 到 ES 数据实时同步技术架构 我们已经讨论了数据去规范化的几种实现方式.MySQL 到 ES 数据同步本质上是数据去规范化多种实现方式中的一种,即通过"数据迁移同步" ...
- Linux下Rsync+sersync实现数据实时同步
inotify 的同步备份机制有着缺点,于是看了sersync同步,弥补了rsync的缺点.以下转自:http://www.osyunwei.com/archives/7447.html 前言: 一. ...
- sersync实现数据实时同步
1.1 第一个里程碑:安装sersync软件 1.1.1 将软件上传到服务器当中并解压 1.上传软件到服务器上 rz -E 为了便于管理上传位置统一设置为 /server/tools 中 2.解压软件 ...
- CentOS 6.5 rsync+inotify实现数据实时同步备份
CentOS 6.5 rsync+inotify实现数据实时同步备份 rsync remote sync 远程同步,同步是把数据从缓冲区同步到磁盘上去的.数据在内存缓存区完成之后还没有写入到磁盘 ...
- Rsync+sersync实现数据实时同步
前言: 一.为什么要用Rsync+sersync架构? 1.sersync是基于Inotify开发的,类似于Inotify-tools的工具 2.sersync可以记录下被监听目录中发生变化的(包括增 ...
- Linux下Rsync+Inotify-tools实现数据实时同步
Linux下Rsync+Inotify-tools实现数据实时同步 注意:下面的三个案例都是rsync 每次都是全量的同步(这就坑爹了),而且 file列表是循环形式触发rsync ,等于有10个文件 ...
- CentOS7下Rsync+sersync实现数据实时同步
近期公司要上线新项目,后台框架选型我选择当前较为流行的laravel,运行环境使用lnmp. 之前我这边项目tp32+apache,开发工具使用phpstorm. 新建/编辑文件通过phpstorm配 ...
随机推荐
- jquery 获取 input type radio checked的元素
.find('input:radio:checked'):.find("input[type='radio']:checked");.find("input[name=' ...
- 移动端续讲及zepto移动端插件外加touch插件介绍
媒体查询:针对不同设备,显示不同的样式. 设备像素比:dpr device-piexl-ratio 在he开发中,要一个3陪高清图片: 1080>=320*3 (主要是为了解决图片的失真问题) ...
- be of +名词 = 形容词 (词性变化) ; || it is adj. of + 人称宾格 = 人称主格 + 形容词 (人称变化)
be of +名词 = 形容词 这是一种常用的构词法 of + 名词 就等于 对应的形容词, 这也是, 扩展词汇的一种方法. 原则上你可以任意使用, 但是, 通常只是针对 那些形容词, 名词相对来说比 ...
- 错误 error: The following untracked working tree files would be overwritten by merge:README.md
问题类型 相信很多小伙伴在创建新的git仓库后,会选上添加README.md文件,开始我也没太在意,应该也没有什么问题. 但是当我通过git添加远程仓库,给这个仓库上传代码时,出现了如下问题:erro ...
- nacos 使用 servlet 异步处理客户端配置长轮询
config 客户端 ClientWorker#ClientWorker 构造方法中启动定时任务 ClientWorker.LongPollingRunnable 长轮询的任务,在 run 方法的结尾 ...
- vue-methods方法与computed计算属性的差别
好吧,我就是单纯的举个例子:实现显示变量 message 的翻转字符串 第一种:methods:我们可以通过在表达式中调用方法来达到同样的效果: 第二种:computed:计算属性 上面的2中方法都实 ...
- 重置Docker里的gitlab管理员用户密码
1.docker ps 找出容器的唯一标识 2.docker exec -it ad9b8c3e20f0 /bin/bash 进入Docker容器运行环境 3.开始重置gitlab管理员用户密码 ...
- vue—两个数组,去重相同项
- 如何创建Windows虚拟机
Windows虚拟机搭建 第1步:运行"Vmware WorkStation",看到主页面,创建新的虚拟机 第2步:新建虚拟机向导——典型(推荐) 第3步:选择光盘映像文件 第4步 ...
- linux command --- terminal common commands
switch to root : sudo su.su root.sudo -s switch to users : su god(user name) set root password : sud ...