在《》中,老馮簡(jiǎn)單聊過(guò)一下 PostgreSQL 上新的節(jié)奏 —— 應(yīng)該用什么 PostgreSQL 大版本。老馮的策略是:當(dāng)每個(gè) PostgreSQL 大版本的第二個(gè)小版本出來(lái)的時(shí)候,差不多就能上生產(chǎn)了。最近 PostgreSQL 18.1 也就是第二個(gè)小版本已經(jīng)放出了,加上擴(kuò)展生態(tài)也基本上普遍跟進(jìn)完成,老馮認(rèn)為 PG 18 已經(jīng)可以用于生產(chǎn)環(huán)境了。
先把BUG修一修
PostgreSQL 的版本發(fā)布策略非常規(guī)律:每年一個(gè)大版本,基本上大版本都會(huì)在九月下旬發(fā)布。然后每季度一個(gè)小版本:通常是 2月/5月/8月/11月。如果出現(xiàn)了比較重要緊急的問(wèn)題,會(huì)有臨時(shí)加塞的非常規(guī)小版本。最近的 18.1 / 17.7 / 16.11 /15.15 / 14.20 / 13.23 就是 2025-11 月的例行小版本發(fā)布。修了兩個(gè) CVE,50 多個(gè) Bug —— 所以這就是為啥不要趕趟 18.0 這種第一個(gè)小版本的原因。
![]()
當(dāng)然,上面這個(gè)是針對(duì)主流大眾用戶(hù)與穩(wěn)定生產(chǎn)環(huán)境的策略,對(duì)于數(shù)據(jù)庫(kù)老司機(jī)與激進(jìn)嘗鮮的早期大眾來(lái)說(shuō)不適用。老馮的 Pigsty 早在 18beta1 剛發(fā)布的時(shí)候就提供了在 Pigsty 中部署與使用的支持,不過(guò)直到最近幾天,我才將 默認(rèn) 的 PostgreSQL 大版本從 17 提升到 18 。
實(shí)際上,AWS RDS PostgreSQL 也差不多是這個(gè)策略,當(dāng) Beta 版本推出的時(shí)候,可以在 “數(shù)據(jù)庫(kù)預(yù)覽環(huán)境” 中使用。然后當(dāng)?shù)诙€(gè)小版本發(fā)布的時(shí)候(也就是 17.1 和 18.1),才會(huì)正式上 RDS 的生產(chǎn) —— 你通常會(huì)在 11 月中旬看到:“Amazon RDS for PostgreSQL now supports major version xx”。
![]()
然后是擴(kuò)展生態(tài)
PostgreSQL 成功的秘訣在于它有著一個(gè)獨(dú)一無(wú)二的擴(kuò)展生態(tài),而這些 PG 擴(kuò)展插件支持 PG 18 也是需要適配時(shí)間的。通常有一半以上的擴(kuò)展可以在沒(méi)有什么變化的情況下直接支持新的 PG 大版本,當(dāng)然這樣說(shuō)的意思就是另外一半擴(kuò)展還是要干點(diǎn)活兒的。這三個(gè)月里,基本上 PG 擴(kuò)展生態(tài)升級(jí)改造。
老馮可以驕傲的說(shuō)一句自己還是做了不少貢獻(xiàn)的,給幾十個(gè)擴(kuò)展提了修復(fù)補(bǔ)丁,然后還有 265 個(gè)擴(kuò)展是由老馮編譯,打包維護(hù)的。除了支持 PG 18 之外,還支持了最近新發(fā)布的 Debian 13 和 EL10 系統(tǒng)。總的來(lái)說(shuō)目前的狀態(tài)是,在 437 個(gè)擴(kuò)展里面,PG 18 差不多只有 20 個(gè)掉隊(duì)的擴(kuò)展,主要擴(kuò)展里面目前也就是 citus 還沒(méi)有適配完。
![]()
老馮有一個(gè)新的網(wǎng)站,https://pgext.cloud[1] ,專(zhuān)門(mén)收錄整理了 PG 生態(tài)里面的擴(kuò)展,包括現(xiàn)在的狀態(tài),在 14 個(gè) Linux 發(fā)行版上的可用性,安裝使用的方法等等。如果你想要用到 PG 擴(kuò)展,這是一個(gè)很好的參考資料。
例子,Debian 13,aarch64 架構(gòu)下目前的擴(kuò)展支持狀態(tài):
![]()
如何在生產(chǎn)環(huán)境部署PG18?
那么,如何在生產(chǎn)環(huán)境中部署 PG18 呢?笑)當(dāng)然還是用 Pigsty 啦。一次性把 PG 生產(chǎn)最佳實(shí)踐,437 擴(kuò)展,監(jiān)控,高可用,備份恢復(fù),以 IaC 的方式在主流 Linux 上直接一鍵交付安裝并配置好,還開(kāi)源免費(fèi)。
老實(shí)說(shuō),老馮不推薦一般用戶(hù)直接手搓 PG ,因?yàn)檫@里有許多 Tricky 的工程細(xì)節(jié),比如最近 PGDG Yum 倉(cāng)庫(kù)就把默認(rèn)的 clang / llvm 編譯器版本給從 19 升級(jí)到 20,然后在 EL9 / EL10 上就和系統(tǒng)版本沖突了,有時(shí)候想完整安裝 PG18 ,還得先卸掉幾個(gè)系統(tǒng)小工具(bpftool / python3-perf),然后補(bǔ)幾個(gè)包才行。
然后像 EL 10 上的 Ansible 還不完整,老馮自己把幾個(gè) ansible 包給補(bǔ)上了,要是自己直接從上游手搓,大概就翻車(chē)了 —— 所以我也能理解一些用戶(hù)喜歡用 Docker 的心情 —— 如果你想要生產(chǎn)級(jí)的質(zhì)量,又不想操心這些專(zhuān)業(yè)細(xì)節(jié),最好還是用成熟封裝好的工具與方案。
老馮準(zhǔn)備在最近初正式發(fā)布一個(gè) Pigsty v3.7 版本,目前剛剛發(fā)布的 v3.7.0-beta1 已經(jīng)提供了默認(rèn)的 PG 18支持。而且可以在最新的 EL10 / Debian 13 上絲滑運(yùn)行。包括 Supabase 自建模板這些也都更新到了最新版本與 PG 18。使用的方式和之前沒(méi)有什么區(qū)別,找一臺(tái)新的 Linux 機(jī)器,執(zhí)行以下命令就好了。
curl https://repo.pigsty.cc/beta | bash
cd pigsty; ./configure; ./install.yml
和以前的區(qū)別是,現(xiàn)在 configure 的時(shí)候,不需要用 -v 18 指定 PG 18 大版本 ,因?yàn)楝F(xiàn)在默認(rèn)就是 PG 18 了。另外,如果你想要一次性下載安裝所有的擴(kuò)展,可以使用 configure -c rich 模板。
![]()
目前 3.7 beta1 主體已經(jīng)完工了,主要是文檔編寫(xiě)與冒煙測(cè)試,如果你對(duì)生產(chǎn)環(huán)境運(yùn)行 PG18 感興趣,現(xiàn)在已經(jīng)可以開(kāi)始耍起來(lái)了。更多細(xì)節(jié),老馮會(huì)在 Pigsty v3.7 正式發(fā)布的時(shí)候介紹。
![]()
當(dāng)然,如果你不想用 Pigsty 來(lái)安裝部署,其實(shí)我們還提供了另外一個(gè)工具,,這個(gè) 4 MB 的 Golang 小工具現(xiàn)在可以在裸 Linux 和容器里面絲滑工作,充分利用 Pigsty 與 PGDG 官方倉(cāng)庫(kù),想要什么 PG 擴(kuò)展與工具,一行命令就能添加進(jìn)去。比如要安裝 PG18 和對(duì)應(yīng)的 pg_duckdb 擴(kuò)展,也就是下面這兩行命令:
![]()
總之,歡迎各位朋友用起來(lái),如果遇到各種問(wèn)題,歡迎在 GitHub 和群組里面反饋。也祝大家使用最新的 PostgreSQL 18 愉快與順利。
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶(hù)上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
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.