如何編譯openGauss對應版本的wal2json.so
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.
二、複製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 ...
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
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)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69990629/viewspace-2913036/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Android編譯JAVA版本不對Android編譯Java
- 編譯版本編譯
- Caffe Windows版本的編譯Windows編譯
- 反編譯Apk後 找到對應的佈局編譯APK
- 對預編譯的理解編譯
- MogDB/openGauss 生態工具-MTK對glibc版本的解決
- [譯] 如何編寫全棧 JavaScript 應用全棧JavaScript
- .NET應用如何防止被反編譯編譯
- [譯] 理解編譯器 —— 從人類的角度(版本 2)編譯
- [編譯原理]如何判斷某文法的二義性以及找到文法對應的語言編譯原理
- maven更改編譯環境的java版本Maven編譯Java
- Go 編譯時加入版本資訊Go編譯
- 如何對 Neuron 原始碼進行交叉編譯原始碼編譯
- 注意事項:golang 編譯的 glibc 版本Golang編譯
- Ubuntu上編譯多個版本的fridaUbuntu編譯
- Android 反編譯初探 應用是如何被注入廣告的Android編譯
- [bazel]-如何編譯編譯
- 將git版本號編譯程式序Git編譯
- 【go】【應用編譯】Go編譯
- Laravel對應PHP版本LaravelPHP
- 【譯】如何更好的編寫CSSCSS
- 編譯器是如何工作的?編譯
- 編譯器如何生成彙編編譯
- 自編譯製作docker版本的onlyoffice映象編譯Docker
- openGauss 2.0.0 版本正式釋出
- rabbitMQ和對應的erlang版本匹配MQ
- Java 如何獲取字元所對應的UniCode編碼Java字元Unicode
- 如何用cmake編譯編譯
- python如何編譯Python編譯
- homestead 多版本 編譯安裝swoole編譯
- Maven 使用指定 Java 版本編譯專案MavenJava編譯
- [Flutter翻譯]通過重新編譯Flutter引擎對Flutter應用進行逆向工程。Flutter編譯
- 對話Svelte未來,Rust 編譯器?構建大型應用?Rust編譯
- 如何提高 Xcode 的編譯速度XCode編譯
- 如何 Docker 化編譯的軟體Docker編譯
- Swift語法對編譯速度的影響Swift編譯
- RabbitMQ與Erlang的版本對應關係MQ
- electron與node.js的版本對應關係(全版本)Node.js