喜報:Pigsty 項目剛剛喜提 4000 Star,對于一個數據庫項目來說,算是難得的里程碑了。與此同時,本號關注數量突破 4萬4千,感謝各位讀者朋友的抬愛。
Pigsty v3.5 正式發布,4000+ GitHub Star 達成,全新文檔網站,OrioleDB 和 OpenHalo 內核全平臺可用,Supabase 自建優化,監控系統與架構優化,PG18 支持,例行 PG 小版本更新,蘋果 ARM Vagrant 支持。
Pigsty 是什么?
Pigsty 是一個開箱即用的 PostgreSQL 數據庫發行版,是數據庫的自動駕駛軟件,可以讓你在本地一鍵用云 RDS 1/10 不到的成本,在沒有專業 DBA 的情況下,拉起企業級 PostgreSQL 數據庫服務,帶有高可用, PITR,監控系統,IaC,以及 421 個 PG 生態的擴展插件,直接運行在 10 個主流 Linux 發行版上而無需容器或 Kubernetes 支持。
PostgreSQL 18 支持
PostgreSQL 18 beta1 已經發布了,正式版本將會在今年 9 月份發布。 PG 18 帶來了 AIO,Oauth 等各種強力新特性,而現在你已經可以在 Pigsty 中嘗鮮了 (但切莫用于生產環境)。當然,還有 17.5, 16.9, 15.13, 14.18, 13.21 例行小版本更新支持。
Pigsty 提供了一個新的pg18
配置模板,你可以直接使用它來拉起使用 PostgreSQL 18beta1 內核的高可用 RDS。我們的 pg_exporter[1] 最近也剛剛發布了1.0 版本,完整收錄了 PG 18 的新監控指標。你也可以使用 pig 包管理器一鍵安裝 PG 18 與 PGDG 中的相應擴展。
Supabase 自建優化
Pigsty 提供 “企業級” Supabase 自建能力,廣受用戶歡迎。歡迎程度超出我的預期 —— Supabase 自建教程的頁面流量甚至比 Landing Page 還要大。所以在這個版本中,進一步優化了 Supabase 自建的流程。
首先,pgsodium
密鑰管理已經嵌入到 Pigsty 中,你可以指定一個根密鑰,或者提供一個密鑰獲取腳本,供 Supabase 依賴的 pgsodium 擴展使用,提供數據加密的能力。你還可以使用這個根密鑰,派生出一系列子密鑰進行使用。
第二我們解決了 Supabase Analytics logflare 組件的一個缺陷 —— 但它的系統表沒有更新寫入時,它不會去更新 WAL 消費進度,這就導致了復制槽會一直保留數據。我們無法修改 logflare 的實現,但可以通過一個預置的定時任務supa-kick
去每分鐘做一個 “假更新” 踢它一下,讓他動一動。免得把磁盤撐爆了。
然后我們還跟進了 Supabase 相關的擴展版本,Docker 鏡像版本。還幫幾位用戶把企業級高可用 Supabase 架構給扶上了馬。
OpenHalo與OrioleDB
,而 OrioleDB 內核則提供了云原生的無膨脹版本 PG。在之前的 v3.4 中,我只做了 RPM 包,不過現在經過試點,這兩個內核在全部十個受支持的 Linux 系統上都可用了。
,近日剛發布了第11個 Beta 版本。雖然這還沒有成為 Supabase 默認使用的 PG 內核分支,但俺得提前準備好,確保 Supabase 即使哪天正式決定從原生 PG 切換到 OrioleDB,Pigsty 可以無縫的跟進。哈哈。
421 個擴展插件
擴展搜集大師最近又找到了一些新的好東西,在 Pigsty 中可用的擴展數量達到了 421 個!并且還對很多擴展版本進行了更新。值得一提的擴展有這些:
pgsentinel 是一個可觀測性擴展,提供了類似 Oracle Active Session History 的功能,可以記錄下每個會話的統計信息,以及一些等待事件。https://pgsty.com/ext/pgsentinel[2]
spat 則是一個非常有趣的擴展,它在 PG 中提供了類似 Redis 的接口,并且使用共享內存來提供類似于 Redis 的表現。這是一個很有趣的思路,歡迎大家來嘗嘗鮮,但它還處于 Alpha 階段,切莫用于生產。
順便一提,我還建設了一個新的 Extension 百科網站,比原來的版本更美觀,全面。
全新的文檔站點
Pigsty 的文檔站基于 Next.js 進行了重制,從靜態頁面渲染跑步進入現代前端時代。你可以在 https://pgsty.com[3] 看到新的文檔站點。不僅僅是形式上更新,在內容上也針對最新的 3.5 版本進行了一次完整的重寫與梳理。清理修復了大量過時信息。
關于這段經歷,我還寫了篇《》。pgsty.com 站點目前還只有英文,不過很快將會提供簡體中文文檔支持。
架構優化
除此之外, Pigsty v3.5 還對 PGSQL 實現進行了優化。合并減少了任務的數量,微調了可用的任務標簽,統一了模板文件的名稱,優化了現代 NVMe 環境下的系統與數據庫參數默認值,并對 roles 分工進行了一些調整。
但這些內部實現細節對用戶來說關系不大,一個主要的改動是,我們去掉 pgsql.yml 劇本刪庫的功能 —— 是的,從 v3.5 以后,沒有那么多花里胡哨的安全閥,保險栓來避免你用 pgsql.yml 來刪庫了,要想刪庫,唯一的選擇就是 pgsql-rm.yml 專用劇本。
例,重構后的 PGSQL 劇本任務:
例,重構后的 pgsql-rm.yml 劇本任務:
命令行優化
pig 這個命令行工具現在新增了一個do
子命令,可以用來替代原來pigsty/bin
目錄下的包裝小腳本,用一種統一的,標準化的方式去執行這些任務。
當然,目前還處于試點階段,API 還沒有最終固定下來,粗略的計劃是會經過一段時間的打磨后,將 API 固定后正式發布文檔列裝。但如果你感興趣,現在其實也可以用用試試。
監控優化
Grafana 可視化平臺最近發布了 12.0 ,老實說 break 了不少東西,所以在監控上,我們也進行了許多改進。
首先,有許多來自 Oracle 老 DBA 向我提出,他們想看 AWR。我看過 Oracle 的 AWR,其實里面有的指標 PG 和 Pigsty 都提供了,只有一個例外就是等待事件。
PG 內核本身只提供了當前活動正在等待什么,但是沒有過去一段時間的等待事件紀錄。只能通過插件實現,pg_wait_sampling 還有上面提到的 pgsentinel 都提供了這個功能,我也在監控面板上提供了對等待事件分析的支持。
Apple Vagrant
Pigsty 提供了 vagrant / terraform 沙箱模板,允許你在本地/云端輕松拉起所需的虛擬機資源。不過 vagrant / virtualbox 一直以來 Apple 的 ARM 架構支持不足,有各種問題。不過在最近我重新測試了一下,vagrant + virtualbox 的組合在 AppleSilicon 上絲滑的運行起來了,真的是值得高興的一件事。
當然,并不是所有的 Vagrant box 都提供了 ARM64 on Virtualbox 的支持,不過最主要的 EL9 和 Ubuntu 24.04 目前是支持的。這意味著用戶可以在自己的蘋果 macbook (無論是老的 Intel 還是新的 M幾 ARM 架構)上絲滑的拉起虛擬機并運行 Pigsty 了。
發布注記
下個版本會有什么?
下一個版本可能是 v3.6,或者是 v4.0。 Pigsty v4.0 應該會隨著九月份的 PostgreSQL 18 正式版一起發布。在那之前如果積累了足夠的變更,則有可能會在7月/8月發布一個 v3.6 版本。
在下一個版本中,我計劃添加最新發布的 EL 10 支持,因為 RHEL,RockyLinux,還有 AlmaLinux 都已經發布了 10 的大版本,因此會有不少工作要做 —— 例如針對 el10 編譯打包所有的擴展。
另一個重要的變更是將日志收集的客戶端從promtail
更換為vector
。無論是從成熟度還是生態上來說,vector 都要好用太多了。但這需要長時間的測試與驗證,大版本變更就是一個推出的好契機。
當然,還有其他一些功能特性,比如 Pigsty 的 Docker 鏡像支持,各種使用 PG 的新應用自建模板,PostHog,Teable 等…
此外,我在考慮如何進一步簡化安裝流程,例如,默認單機安裝的情況下,我們可以跳過構建本地倉庫并使用 Nginx 打造本地源的方式,直接從互聯網上游安裝所有軟件,更省存儲,更省流量,兼容性更好,也不用擔心被亂七八糟的防火墻安全策略把本地 Nginx 給墻了的問題(真的在幾個客戶那里看到了這個問題)。另一個可以優化的地方是把 Bootstrap 的過程整個給嵌入到 install 腳本中,這樣就變成了 Install / Configure / Deploy 三步走了。
另一個我在認真考慮的問題是放寬許可證限制,推出一個使用 Apache 的 Pigsty 輕量化版本,這樣那些因為 AGPLv3 而無法使用的企業,或者軟件集成商也可以輕松用起來了。
發布注記
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.