如何編譯openGauss對應版本的wal2json.so

T1YSL發表於2022-09-01

wal2json是邏輯解碼外掛,使用該外掛可以訪問由INSERT和UPDATE生成的元組,解析WAL中的內容。
本篇文章介紹瞭如何手動編譯openGauss對應版本的wal2json.so。

首先,需要一套對應版本資料庫的軟體和openGauss-server的原始碼,以及wal2json程式碼進行編譯安裝。本篇文章以openGauss 3.0.0為例

一、下載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 
Cloning into 'openGauss-server'...
remote: Enumerating objects: 59079, done.
remote: Counting objects: 100% (13276/13276), done.
remote: Compressing objects: 100% (4659/4659), done.

image.png

二、複製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是我本地資料庫的軟體目錄。
image.png

因此我軟體的對應目錄為

/mogdb/software/include/postgresql/server

image.png

進行複製

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版本,否則會有相關報錯

image.png
image.png

yum -y install gcc+ gcc-c++

image.png

當前版本較低

1.下載原始碼包(這裡的連結被遮蔽掉了)

wget ...

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

image.png

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

image.png
image.png

發現編譯過程存在報錯,我們把對應的幾個.h裡進行修改,去掉std::

image.png

最後編譯成功
image.png

wal2json放到對應路徑下

image.png

已經可以正常使用了

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


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69990629/viewspace-2913036/,如需轉載,請註明出處,否則將追究法律責任。

相關文章