BottledWater-PG安装部署
一 前言
Bottled Water是Confluent公司开发的一款可以将postgresql数据库转换为kafka events的工具。主要用于监视PG的数据增删改的变化,将变化的数据实时推送到kafka消息队列,其他关心数据变化的平台只要监听kafka的消息,就能得到改变的数据。具体参考德哥的博客《实时数据交换平台 - BottledWater-pg with confluent》,本文具体的安装步骤也参考了《Bottled Water: 实时集成postgresql与kafka》。
二 安装准备
安装完成PostgreSQL,参考《Centos7安装PostgreSQL9.6》;
安装完成Kafka,参考《Kafka部署》;
此外还依赖avro-c,Jansson,libcurl,librdkafka
三 安装步骤bottledwater-pg
3.1 安装libjansson
wget http://www.digip.org/jansson/releases/jansson-2.9.tar.bz2
tar -jxvf jansson-2.9.tar.bz2
cd jansson-2.9
./configure --prefix=/home/free/jansson
make
make installexport PKG_CONFIG_PATH=/home/free/jansson/lib/pkgconfig:$PKG_CONFIG_PATHpkg-config --cflags --libs jansson
-I/home/free/jansson/include -L/home/free/jansson/lib -ljansson
3.1 安装avro
wget http://mirrors.hust.edu.cn/apache/avro/avro-1.8.1/avro-src-1.8.1.tar.gztar -zxvf avro-src-1.8.1.tar.gzcd avro-src-1.8.1/lang/c
mkdir build
cd buildcmake .. -DCMAKE_INSTALL_PREFIX=/home/free/avro -DCMAKE_BUILD_TYPE=Release -DTHREADSAFE=true
make
make test
make install
export PKG_CONFIG_PATH=/home/free/avro/lib/pkgconfig:$PKG_CONFIG_PATH
在make这一步骤报错如下:
opt/avro-src-1.8.1/lang/c/src/schema.c:31:21: fatal error: jansson.h: No such file or directory#include "jansson.h"^
compilation terminated.
make[2]: *** [src/CMakeFiles/avro-shared.dir/schema.o] Error 1
make[1]: *** [src/CMakeFiles/avro-shared.dir/all] Error 2
make: *** [all] Error 2
这一步骤应该是编译缺少了头文件,先加上去,然后重新编译。
export C_INCLUDE_PATH=/home/free/jansson/include:$C_INCLUDE_PATH
3.3 安装libcurl
wget https://curl.haxx.se/download/curl-7.54.0.tar.gz
tar -zxvf curl-7.54.0.tar.gz
cd curl-7.54.0./configure --prefix=/home/free/curl
make
make install
export PKG_CONFIG_PATH=/home/free/curl/lib/pkgconfig:$PKG_CONFIG_PATH
3.4 安装librdkafka
git clone https://github.com/edenhill/librdkafka
cd librdkafka
./configure --prefix=/home/free/librdkafka
#假如报错如下:
#[root@bogon librdkafka]# ./configure --prefix=/home/freegis/librdkafka
#-bash: ./configure: Permission denied
#赋予执行权限
#[root@bogon librdkafka]# chmod 777 configuremake -j 32
make installexport PKG_CONFIG_PATH=/home/free/librdkafka/lib/pkgconfig:$PKG_CONFIG_PATH
在make的时候,64位的linux会报错如下:
/bin/ld:librdkafka.lds:1: syntax errer in VERSION script
只需要在Makefile.config里面的WITH_LDS=y这一行注释掉重新make就可以了。
3.5 安装bottledwater-pg
在环境变量中新增如下依赖:
vi /etc/profile
#编辑内容如下
export CURLHOME=/home/freegis/curl
PATH=$PATH:$HOME/.local/bin:$HOME/bin:$GCCHOME/bin:$CURLHOME/bin
# wq!保存
source /etc/profile
下载安装文件并编译部署:
git clone https://github.com/confluentinc/bottledwater-pgcd bottledwater-pg
#启用postgres的环境变量
source /home/postgres/.bashrc
make
make install
make可能报错如下:
ake[1]: Entering directory `/opt/bottledwater-pg-master/kafka'
gcc bottledwater.c -c -std=c99 -D_POSIX_C_SOURCE=200809L -I../client -I../ext -I/home/postgres/include -I/home/postgres/include/server -I/home/freegis/avro/include -DAVRO_1_8 -Wall -Wmissing-prototypes -Wpointer-arith -Wendif-labels -Wmissing-format-attribute -Wformat-security -o bottledwater.o
In file included from table_mapper.h:4:0,from json.h:5,from bottledwater.c:2:
registry.h:4:32: fatal error: librdkafka/rdkafka.h: No such file or directory#include <librdkafka/rdkafka.h>^
compilation terminated.
这种情况仍然是头文件找不到,为了麻烦,把用到的头文件都指定。
export C_INCLUDE_PATH=/home/free/jansson/include:$C_INCLUDE_PATH
export C_INCLUDE_PATH=/home/free/avro/include:$C_INCLUDE_PATH
export C_INCLUDE_PATH=/home/free/librdkafka/include:$C_INCLUDE_PATH
export C_INCLUDE_PATH=/home/free/curl/include:$C_INCLUDE_PATH
继续编译后报错:
/usr/bin/ld: cannot find -lrdkafka
详细如下:
建立依赖软连接:
ln -s /home/free/librdkafka/lib/librdkafka.so /home/postgres/lib/librdkafka.so
检查安装情况
su - postgres
psql
create extension bottledwater;
如果创建扩展报错如下:
mcsas=# create extension bottledwater;
ERROR: could not load library "/home/postgres/lib/bottledwater.so": libavro.so.23.0.0: cannot open shared object file: No such file or directory
查看下bottledwater.so的依赖:
[postgres@bogon lib]$ ldd bottledwater.so linux-vdso.so.1 => (0x00007fffc41fe000)libavro.so.23.0.0 => /home/freegis/avro/lib/libavro.so.23.0.0 (0x00007f1f26769000)libc.so.6 => /lib64/libc.so.6 (0x00007f1f263a8000)libjansson.so.4 => /lib64/libjansson.so.4 (0x00007f1f2619c000)libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f1f25f7f000)/lib64/ld-linux-x86-64.so.2 (0x00007f1f26bba000)
发现所有的依赖都正确。
后经大神提示,重启数据库,然后执行扩展。
pg_ctl restart
psql
\c mcsas
create extension bottledwater;
CREATE EXTENSION
BottledWater-PG安装部署相关推荐
- pg安装部署linux_简简单单基于docker部署微服务网关
❝ 本文整理于今年3月,收录在个人开源仓库JavaScriptCollection中,其中很多概念不乏借鉴.摘抄自官网,便于复习相关概念,有兴趣的可以直接去仓库Clone文档学习.参考! ❞ 基本概念 ...
- pg安装部署linux_Linux下postgresql数据库部署与配置
1.检查postgresql是否已经安装:rpm -qa | grep postgres 2.检查PostgreSQL 安装位置:rpm -qal | grep postgres 3.卸载Postgr ...
- CentOS 7.5安装部署Jewel版本Ceph集群
参考文档 https://www.linuxidc.com/Linux/2017-09/146760.htm https://www.cnblogs.com/luohaixian/p/8087591. ...
- K3s - 安装部署
文章目录 1. K3s简介 2. K3s架构说明 3. K3s安装部署 3.1 脚本快速在线安装 3.2 安装说明 3.3 HA模式部署(外部数据库) 3.4 HA模式部署(内置数据库) 3.5 离线 ...
- Postgresql 12.2 + PostGIS 3.0.1 安装部署手册
Postgresql 12.2 + PostGIS 3.0.1 安装部署手册 文章目录 Postgresql 12.2 + PostGIS 3.0.1 安装部署手册 环境说明 注意事项 Postgre ...
- 安装部署postgresql-15 高可用(pgpool)
安装部署postgresql-15 高可用(pgpool) 文章目录 前言 部署环境: 下载地址: 安装pg15 安装pgpool 配置pgpass文件 创建pgpool_node_id Pgpool ...
- Linux下使用docker安装部署Sonar Qube
文章目录 Linux下使用docker安装部署Sonar Qube 一.环境准备 二.部署步骤 三.使用 四.结束 Linux下使用docker安装部署Sonar Qube 一.环境准备 本文默认会使 ...
- CentOS8离线安装部署ceph集群
文章目录 1.概念简介 1.1 存储类型 1.1.1 DAS设备 1.1.2 NAS设备:文件服务 1.1.3 SAN设备:块服务 1.2 Ceph 架构简介 2.集群节点规划 3.准备工作 4.使用 ...
- Prometheus运维二 安装部署Prometheus及使用PromQL查询监控数据
1,安装部署. 1,环境准备. 软件包下载地址:https://prometheus.io/download/ 地址 规划/软件包 192.168.0.10 Prometheus Server 192 ...
- 安装 部署 postgresql数据库 搭建timescaledb数据库 (时序库)
安装 部署 postgresql数据库 搭建timescaledb数据库 (时序库) timescaledb 搭建 文章目录 安装 部署 postgresql数据库 搭建timescaledb数据库 ...
最新文章
- LeetCode实战:最接近的三数之和
- R语言ggplot2可视化使用ggridges包可视化山脊图(Ridgeline Plots):山脊图(Ridgeline Plots)应用场景、受试者口服茶碱的之后观察茶碱的浓度变化的山脊图
- 【C/C++学院】0831-类与对象的异常/面试100题1-100
- MATLAB知识点1
- Elasticsearch 2.0以上版本根据条件批量删除Java如何实现
- 二十四、深入Python多线程和多进程
- ElasticSearch创建、修改、获取、删除、索引Indice mapping和Index Template案例
- Python3系列__01Python安装
- java编写一个个人通信录程序
- 对编辑框进行赋值和取值
- Linux 下安装 Elasticsearch5.6.x 详细步骤以及踩坑解决方案
- 使用VAE(变分自动编码器),来预测用户流失.
- EasyCVR平台如何实现超低延时的安防视频监控直播?
- Java面试自我介绍篇
- Lotus Miner和分布式设置
- 关于Java字符串中拼接换行符
- Java程序设计基础【4】
- VBA破解Excel表格保护密码
- 远程桌面连接管理 工具使用说明
- 微信商城商家该如何运营
热门文章
- java 实现短信验证码
- window.open,打开窗口与打开新标签页,刷新父窗口数据
- L13过拟合欠拟合及其解决方案
- linux memery dump
- 网页打开速度慢的原因及N种解决方法
- 第三章 枚举(炸弹人、火柴棍等式、全排列)
- Win11怎么关闭休眠?Win11禁止休眠设置方法
- 阿里巴巴矢量图库开源http://www.iconfont.cn/collections/detail?cid=29
- 个人力扣刷题笔记 LCP 03. 机器人大冒险
- Win7 配置 Git 客户端 图文详解