[PostgreSQL] 編譯與安裝 AWS 多主同步資料庫模組 – pgactive

本篇文章更新時間:2025/10/19
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知。
一介資男的 LINE 社群開站囉!歡迎入群聊聊~
如果本站內容對你有幫助,歡迎使用 BFX Pay 加密貨幣新台幣 贊助支持。


寫文範例預設使用 Ubuntu 25.04 Server 版本,預設使用套件管理功能 APT 來安裝的 PostgreSQL 17 版本。

這外掛模組需要 PostgreSQL 12 版本以上。且使用的場景並不能保證不會在資料上出問題,需要注意這專案文件中提到的「衝突場景」。

安裝 PostgreSQL 17 版本方法

先初始化更新主機套件

sudo apt update && apt upgrade -y && apt remove -y && apt autoremove -y && apt clean -y && apt autoclean -y && apt install curl ca-certificates screen htop zip unzip -y

準備安裝 PostgreSQL 17 資料庫

# 建立存放金鑰的目錄(postgresql-common 的設定用這目錄比較常見)
sudo install -d /usr/share/postgresql-common/pgdg

# 下載金鑰到指定路徑
curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo tee /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc > /dev/null

# 加入 apt 套件庫清單
. /etc/os-release && sudo sh -c "echo 'deb [signed-by=/usr/share/postgresql-common/pgdg/apt.postgresql.org.asc] https://apt.postgresql.org/pub/repos/apt ${VERSION_CODENAME}-pgdg main' > /etc/apt/sources.list.d/pgdg.list"

# 最後更新 apt 清單
sudo apt modernize-sources && sudo apt update

# 指定版本安裝,環境獨立 /etc/postgresql/XX, /usr/share/postgresql/XX (XX為版本號)
sudo apt install postgresql-17 -y

到這邊就算是把環境準備好了!

準備編譯 pgactive 環境

安裝必要套件

sudo apt install -y git build-essential autoconf automake libtool pkg-config  postgresql-server-dev-17 postgresql-client-17 libssl-dev libkrb5-dev libldap2-dev uuid-dev libxml2-dev libselinux1-dev libzstd-dev liblz4-dev libxslt1-dev libpam0g-dev zlib1g-dev libreadline-dev

下載原始碼編譯

git clone https://github.com/aws/pgactive.git && cd pgactive
./autogen.sh
./configure
make LDFLAGS="-L/usr/lib/postgresql/17/lib"
make install

上面都沒問題的話, pgactive 會安裝到外掛模組目錄下:

root@localhost:~/pgactive# ls /usr/share/postgresql/17/extension/pgactive*
/usr/share/postgresql/17/extension/pgactive--2.1.0--2.1.1.sql
/usr/share/postgresql/17/extension/pgactive--2.1.0.sql
/usr/share/postgresql/17/extension/pgactive--2.1.1--2.1.2.sql
/usr/share/postgresql/17/extension/pgactive--2.1.2--2.1.3.sql
/usr/share/postgresql/17/extension/pgactive--2.1.3--2.1.4.sql
/usr/share/postgresql/17/extension/pgactive--2.1.4--2.1.5.sql
/usr/share/postgresql/17/extension/pgactive--2.1.5--2.1.6.sql
/usr/share/postgresql/17/extension/pgactive.control

到這步驟就可以先把主機給快照起來複製出其他測試主機,節省重新部署前述的作業。

安裝模組外掛完成後的設定

編輯 /etc/postgresql/17/main/postgresql.conf 檔案,調整下方參數:

# 補上 pgactive 參數
shared_preload_libraries = 'pgactive' 
# 必要(至少)
wal_level = logical
track_commit_timestamp = on

# 根據規模可能要調高(都是範例數值)
max_replication_slots = 10
max_wal_senders = 10
max_worker_processes = 50
max_logical_replication_workers = 20

存檔後重啟 PostgreSQL 資料庫服務

service postgresql restart

接著就可以按照 GitHub repo 中的 Quick Start Guide 來測試環境組態與行為。

關於測試這模組的部分,也可以參考這篇文章 How to set up pgactive (active-active) on Amazon RDS for PostgreSQL ,文中案例雖然是 Amazon RDS 資料庫,但其實自己測試的話就是替換主機相關連線資訊的部分就好。


Share:

作者: Chun

資訊愛好人士。主張「人人都該為了偷懶而進步」。期許自己成為斜槓到變進度條 100% 的年輕人。[///////////____36%_________]

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


文章
Filter
Apply Filters
Mastodon