使用wal2json可以将pg 变动输出为json 格式,是一个pg 扩展,支持pg9.4+ 目前看到netflix 的dblog 对于pg 的支持就是基于此插件
以下是关于centos 7的构建说明

因为使用了centos-release-scl

pg 开发包安装

  • 添加yum仓库包
yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
  • 安装开发包
yum install -y postgresql11-devel
  • 配置pg_config
    为了复用,使用的profile
 
export PATH=$PATH:/usr/pgsql-11/bin

生效

source /etc/profile

安装centos-release-scl

  • 包含了llvm(clang,以及gcc)
yum install -y devtoolset-7-llvm centos-release-scl devtoolset-7-gcc* llvm5.0

说明: 安装llvm5.0 是在安装阶段需要的

构建

  • clone 代码
git clone https://github.com/eulerto/wal2json.git
  • 构建
    需要先进入scl 的devtoolset 环境
 
scl enable devtoolset-7 bash
cd wal2json
make
  • 效果
gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC -I. -I./ -I/usr/pgsql-11/include/server -I/usr/pgsql-11/include/internal -D_GNU_SOURCE -I/usr/include/libxml2 -I/usr/include -c -o wal2json.o wal2json.c
gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC -L/usr/pgsql-11/lib -Wl,--as-needed -L/usr/lib64/llvm5.0/lib -L/usr/lib64 -Wl,--as-needed -Wl,-rpath,'/usr/pgsql-11/lib',--enable-new-dtags -shared -o wal2json.so wal2json.o
/opt/rh/llvm-toolset-7/root/usr/bin/clang -Wno-ignored-attributes -fno-strict-aliasing -fwrapv -O2 -I. -I./ -I/usr/pgsql-11/include/server -I/usr/pgsql-11/include/internal -D_GNU_SOURCE -I/usr/include/libxml2 -I/usr/include -flto=thin -emit-llvm -c -o wal2json.bc wal2json.c
  • 安装
make install

效果

/bin/mkdir -p '/usr/pgsql-11/lib'
/bin/install -c -m 755 wal2json.so '/usr/pgsql-11/lib/'
/bin/mkdir -p '/usr/pgsql-11/lib/bitcode/wal2json'
/bin/mkdir -p '/usr/pgsql-11/lib/bitcode'/wal2json/
/bin/install -c -m 644 wal2json.bc '/usr/pgsql-11/lib/bitcode'/wal2json/./
cd '/usr/pgsql-11/lib/bitcode' && /usr/lib64/llvm5.0/bin/llvm-lto -thinlto -thinlto-action=thinlink -o wal2json.index.bc wal2json/wal2json.bc

说明

以上就是看到dblog 使用了wal2json 扩展插件,进行的一个学习环境准备,后边可以构建一个docker镜像

参考资料

https://github.com/eulerto/wal2json
https://www.postgresql.org/download/linux/redhat/
https://medium.com/netflix-techblog/dblog-a-generic-change-data-capture-framework-69351fb9099b

最新文章

  1. 关于用sql语句实现一串数字位数不足在左侧补0的技巧
  2. (二)探究本质,WebGIS前端地图显示之地图比例尺换算原理
  3. 数据库SQL语句中根据当前日期计算其他日期小结
  4. 【weka应用技术与实践】过滤器
  5. [转]change the linux startup logo
  6. 在linux中安装和卸载mysql
  7. Java实现Socket之TimeClient
  8. JavaService wrapper
  9. SpringMVC 详解
  10. Sql Server——约束
  11. oo第二单元的自白
  12. 使用Three.js挖空安装门来解决重叠闪烁的问题
  13. dnsjava usage
  14. 初识XMind基本操作
  15. 【PAT】B1055 集体照(25 分)
  16. Linux Cluster
  17. Trie树的数组实现原理
  18. ASP .Net Core系统部署到SUSE Linux Enterprise Server 12 SP3 64 具体方案
  19. vim重复操作的宏录制
  20. Windows Update 自动更新 设定 被锁(变灰)

热门文章

  1. 数组去重--ES6方法
  2. Qt+FFmpeg 简单实现视频播放
  3. RoadMap:如何创建产品路线图
  4. html-加水印--watermark--代码测试
  5. SpringDataRedis简单入门介绍
  6. Linux安装部署jdk+tomcat+mysql
  7. [DP]Luogu 2014NOIP提高组 飞扬的小鸟题解
  8. 汇总Anaconda与ROS冲突解决方法
  9. [转]应用工具 .NET Portability Analyzer 分析迁移 Dotnet core
  10. UWP 推荐 - 限时免费的RSS阅读器《RSS 追踪》登录 Windows 10