如何編譯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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 編譯版本編譯
- MogDB/openGauss 生態工具-MTK對glibc版本的解決
- 對預編譯的理解編譯
- [譯] 理解編譯器 —— 從人類的角度(版本 2)編譯
- Ubuntu上編譯多個版本的fridaUbuntu編譯
- .NET應用如何防止被反編譯編譯
- [譯] 如何編寫全棧 JavaScript 應用全棧JavaScript
- 如何對 Neuron 原始碼進行交叉編譯原始碼編譯
- [編譯原理]如何判斷某文法的二義性以及找到文法對應的語言編譯原理
- 自編譯製作docker版本的onlyoffice映象編譯Docker
- 老版本的Spring應用該如何應對CVE-2022-22965漏洞?Spring
- Go 編譯時加入版本資訊Go編譯
- homestead 多版本 編譯安裝swoole編譯
- Android 反編譯初探 應用是如何被注入廣告的Android編譯
- 【go】【應用編譯】Go編譯
- [bazel]-如何編譯編譯
- python如何編譯Python編譯
- Java 如何獲取字元所對應的UniCode編碼Java字元Unicode
- openGauss 2.0.0 版本正式釋出
- Laravel對應PHP版本LaravelPHP
- 【譯】如何更好的編寫CSSCSS
- 如何提高 Xcode 的編譯速度XCode編譯
- rabbitMQ和對應的erlang版本匹配MQ
- springcloud alibaba與springboot對應的版本GCCloudSpring Boot
- [Flutter翻譯]通過重新編譯Flutter引擎對Flutter應用進行逆向工程。Flutter編譯
- Mac OS 10.9 [Mavericks] 編譯支援 ZeroMQ 4.0.1 版本的 gozmqMac編譯MQGo
- 對話Svelte未來,Rust 編譯器?構建大型應用?Rust編譯
- springboot最新穩定版本、springcloud對應版本的選擇Spring BootGCCloud
- 如何編譯 Linux 核心編譯Linux
- 如何用cmake編譯編譯
- Python是如何編譯執行的Python編譯
- Elasticsearch和SpringBoot版本對應ElasticsearchSpring Boot
- tomact和javaee、jsp、servlet對應的版本MacJavaJSServlet
- RabbitMQ與Erlang的版本對應關係MQ
- 如何編譯C#版本的Protocol Buffers與gRPC服務端,客戶端程式碼編譯C#ProtocolRPC服務端客戶端
- electron與node.js的版本對應關係(全版本)Node.js
- android版本與linux核心版本對應關係AndroidLinux
- Golang 編譯windows應用程式Golang編譯Windows