当前位置: 首页 > news >正文

[如何编译openGauss对应版本的wal2json.so]

wal2json是逻辑解码插件,使用该插件可以访问由INSERT和UPDATE生成的元组,解析WAL中的内容。
本篇文章介绍了如何手动编译openGauss对应版本的wal2json.so。

首先,需要一套对应版本数据库的软件和openGauss-server的源码,以及wal2json代码进行编译安装。本篇文章以openGauss 3.0.0为例

对应的网址如下:
1.openGauss-server源码路径:openGauss-server: openGauss kernel ~ openGauss is an open source relational database management system.
2.openGauss软件下载路径:软件包 | openGauss
3.wal2json代码路径:wal2json: This project is a fork from wal2json, a compatibility version for openGuass.

我编译好的openGauss 3.0的 wal2json.so(x86)放到了gitee上,需要的朋友可以自取:wal2json-openGauss3.0-x86: wal2json-openGauss3.0-x86

一、下载openGauss-server源码

[mog@localhost ~]$ pwd
/home/mog
[mog@localhost ~]$ mkdir opengauss-server-package
[mog@localhost ~]$ cd opengauss-server-package/
[mog@localhost opengauss-server-package]$ git clone https://gitee.com/opengauss/openGauss-server.git
Cloning into 'openGauss-server'...
remote: Enumerating objects: 59079, done.
remote: Counting objects: 100% (13276/13276), done.
remote: Compressing objects: 100% (4659/4659), done.

二、复制openGauss部分源码到软件目录下,并替换pg_config_os.h

复制opengauss源码src/include/*的内容到数据库安装目录的include/postgresql/server 下,cd到这个目录下,执行 rm -f pg_config_os.h; cp port/linux.h pg_config_os.h

因此我本地源码对应的要拷贝的目录为:

/home/mog/opengauss-server-package/openGauss-server/src/include/*

这里 /mogdb/software是我本地数据库的软件目录。

因此我软件的对应目录为

/mogdb/software/include/postgresql/server

进行拷贝

cp -r /home/mog/opengauss-server-package/openGauss-server/src/include/* /mogdb/software/include/postgresql/server

替换pg_config_os.h

cd /mogdb/software/include/postgresql/server
rm -f pg_config_os.h
cp port/linux.h pg_config_os.h

三、源码安装g++

#编译前需要确保g+ +安装,g+ +需要c+ +14版本
本地发现g++版本不够,重新编译安装较高版本,这里gcc要至少6.1版本,否则会有相关报错

yum -y install gcc+ gcc-c++

当前版本较低

1.下载源码包

wget http://ftp.gnu.org/gnu/gcc/gcc-6.2.0/gcc-6.2.0.tar.bz2

2.解压

tar jxf gcc-6.2.0.tar.bz2

3.下载编译依赖

cd gcc-6.2.0
./contrib/download_prerequisites

4.生成makefile文件

mkdir gcc-build-6.2.0
cd gcc-build-6.2.0/
../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib

5.编译

make

漫长的等待

6.安装

make install

四、下载wal2json代码并编译

git clone https://gitee.com/enmotech/wal2json


export PATH=/mogdb/software/bin:$PATH
make
make install

发现编译过程存在报错,我们把对应的几个.h里进行修改,去掉std::

最后编译成功

wal2json放到对应路径下

已经可以正常使用了

postgres=# select * from pg_create_logical_replication_slot('mdb_20220823025242_slot','wal2json');
        slotname         | xlog_position
-------------------------+---------------
 mdb_20220823025242_slot | D70/EE73A0A8
(1 row)

相关文章:

  • 计算方法/数值分析 期末复习整理
  • makefile(详细讲解)
  • Java递归实现迷宫问题和八皇后
  • 软件测试面试题及答案,2022最强版
  • 2.采药-01背包
  • 语法基础(函数)
  • 这几个小插件助你快速提升工作效率
  • Java毕业设计-校园活动赞助与宣传管理系统
  • APS智能排产帮助企业做好生产管理
  • 基于数字孪生的管道数字化平台建设要点
  • Ubuntu系统下安装OpenCV,pytorch,TensorFlow教程
  • shell脚本之数组
  • 智能人体存在感知方案,毫米波雷达感应器成品,智能化感知联动应用
  • 主流跨域方式解析!
  • MMDetection3D简单教程:模型定义、注册与搭建
  • 【347天】每日项目总结系列085(2018.01.18)
  • HTML5新特性总结
  • JAVA多线程机制解析-volatilesynchronized
  • Laravel 中的一个后期静态绑定
  • Mybatis初体验
  • MySQL数据库运维之数据恢复
  • Odoo domain写法及运用
  • Python socket服务器端、客户端传送信息
  • uni-app项目数字滚动
  • Vue.js-Day01
  • 从PHP迁移至Golang - 基础篇
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 后端_ThinkPHP5
  • 技术发展面试
  • 开源SQL-on-Hadoop系统一览
  • 来,膜拜下android roadmap,强大的执行力
  • 如何在GitHub上创建个人博客
  •  一套莫尔斯电报听写、翻译系统
  • 怎样选择前端框架
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • (4) PIVOT 和 UPIVOT 的使用
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (二)fiber的基本认识
  • (分布式缓存)Redis哨兵
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • *1 计算机基础和操作系统基础及几大协议
  • .apk 成为历史!
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .net 程序 换成 java,NET程序员如何转行为J2EE之java基础上(9)
  • .NET 将混合了多个不同平台(Windows Mac Linux)的文件 目录的路径格式化成同一个平台下的路径
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • [ vulhub漏洞复现篇 ] Jetty WEB-INF 文件读取复现CVE-2021-34429
  • [\u4e00-\u9fa5] //匹配中文字符
  • [] 与 [[]], -gt 与 > 的比较
  • [20190113]四校联考
  • [4.9福建四校联考]
  • [AR Foundation] 人脸检测的流程
  • [BJDCTF2020]The mystery of ip
  • [BT]BUUCTF刷题第4天(3.22)