将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配 ...
随机推荐
- VMware 15 搭建win 10 实操步骤+共享文件+激活操作
写于:2018.12.22 一.简介: VMware 15 里搭建win 10是件很坑的事.我尝试了3种方法,最后才搭建成功.为了不让网友们不在走我走过的坑,特写了本文. 坑一:用老毛桃.大白菜搭 ...
- Linux命令行下常用svn命令
1.Linux命令行下将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/pro/do ...
- shouyexinlianjie
http://7xj7xs.com1.z0.glb.clouddn.com/trail_1.mp4
- 算法所产生的性能改进已经超过了硬件所带来的性能提升 The future is algorithms, not code
w 大数据的发展,伴随的将是软件工程师的渐退,算法工程师的崛起 http://mp.weixin.qq.com/s/XTz2HnzwlgTD3g5zU2u5Tg
- 十一、python函数学习
1. 定义函数 def 函数名(形参): 函数体 return xxx--------其下面的内容不再执行 ---------------------------------------- ...
- leetcode 52 N皇后问题 II
51的简化版,省去根据排列话棋盘的工作,直接计数,代码: class Solution { public: int totalNQueens(int n) { ; vector<); dfs(n ...
- python 网络编程 代码版
写博客最怕写什么? 系统原理,框架内核... #!/usr/bin/env python # -*- coding:utf-8 -*- import socket sk = socket.socket ...
- 009-Spring Boot 事件监听、监听器配置与方式、spring、Spring boot内置事件
一.概念 1.事件监听的流程 步骤一.自定义事件,一般是继承ApplicationEvent抽象类 步骤二.定义事件监听器,一般是实现ApplicationListener接口 步骤三.启动时,需要将 ...
- Java中使用MATLAB作图 .
最近做一个项目,需要很多进行很多信号处理——小魏就是学软件的,对信号处理简直是个小白,最简单的实现就是傻瓜似的调用MATLAB的各种工具箱,达到目的就行. 同时,MATLAB是种解释性语言,执行效率比 ...
- IntelliJ IDEA的常用设置
1.设置IDEA主题样式 ①设置方法: ②效果:设置为Darcula之后整体的风格就是暗黑主题,如上图. 2.设置编辑区主题 ①设置方法: 注:由于IDEA自带的编辑区主题比较少,想要更多的编辑区主题 ...