国产av一二三区|日本不卡动作网站|黄色天天久久影片|99草成人免费在线视频|AV三级片成人电影在线|成年人aV不卡免费播放|日韩无码成人一级片视频|人人看人人玩开心色AV|人妻系列在线观看|亚洲av无码一区二区三区在线播放

網(wǎng)易首頁(yè) > 網(wǎng)易號(hào) > 正文 申請(qǐng)入駐

嘗鮮須謹(jǐn)慎:PG新存儲(chǔ)引擎故障案例

0
分享至

昨天接到一個(gè)咨詢的活兒,有位 Pigsty 的用戶反饋數(shù)據(jù)庫(kù)故障,出現(xiàn) XID Wraparound 了。這個(gè) PG 中最臭名昭著的故障在近些年已經(jīng)比較少見(jiàn)了,不過(guò)這次的故障原因確實(shí)比較有趣,是因?yàn)槭褂昧?TimescaleDB Hypercore 導(dǎo)致的 —— 這是一個(gè)實(shí)驗(yàn)性的新存儲(chǔ)引擎,并且已經(jīng)在最近的版本中棄用與移除。

如果你正在使用這個(gè)新的存儲(chǔ)引擎,最好立刻檢查并退回經(jīng)典的 TimescaleDB 引擎與 PostgreSQL 原生表,以免數(shù)據(jù)庫(kù)爆炸。

Hypercore 是什么

TimescaleDB 是一個(gè)老牌 PostgreSQL 擴(kuò)展插件,是 PG 生態(tài)復(fù)雜度最大的幾個(gè)擴(kuò)展之一(約20萬(wàn)行代碼)。提供了時(shí)序數(shù)據(jù)處理分析,列式存儲(chǔ),流式聚集,歸檔壓縮,定時(shí)任務(wù)等實(shí)用特性。


在今年年初,TimescaleDB 推出了一個(gè)新的混合行列式存儲(chǔ)引擎 Hypercore。它的設(shè)計(jì)目標(biāo)是服務(wù)實(shí)時(shí)分析場(chǎng)景,能夠在行存列存兩種存儲(chǔ)格式之間自動(dòng)切換,以同時(shí)滿足高吞吐寫(xiě)入和快速分析查詢的需求。具體來(lái)說(shuō),Hypercore 以行存形式接收最新數(shù)據(jù),保證寫(xiě)入和更新的低延遲;隨著數(shù)據(jù)“冷卻”不再頻繁更新,系統(tǒng)會(huì)自動(dòng)將其轉(zhuǎn)換為列存進(jìn)行壓縮存儲(chǔ),以加速聚合查詢并節(jié)省存儲(chǔ)空間。


TimescaleDB 的經(jīng)典引擎提出了 Hypertable 和 Chunk 的概念,這些表看上去都是 PostgreSQL 原生堆表,需要通過(guò)一系列函數(shù) API 進(jìn)行管理。而 Hypercore 則利用了 PostgreSQL 12 新引入的 TAM (表訪問(wèn)方法)接口,將其實(shí)現(xiàn)為一種新的存儲(chǔ)引擎,而且支持為壓縮數(shù)據(jù)使用 Btree 二級(jí)索引加速訪問(wèn)。整體在使用上更加絲滑便利,省掉了行/列存轉(zhuǎn)化,壓縮/解壓縮的管理負(fù)擔(dān)。

然而……

當(dāng)然,并不是所有的事情都像文檔上描述的那么美好。Hypercore 在 2025-01-23 的 2.18.0 被第一次提出,然而僅僅在 2.21.0 就被標(biāo)記為棄用,隨即在 2.22.0 版本中被直接移除,整個(gè)生命周期也就半年多。

超核訪問(wèn)方法的棄用[1] 我們決定在 2.21.0 版本中棄用超核訪問(wèn)方法 (TAM)。這是一個(gè)實(shí)驗(yàn)特性,它沒(méi)有顯示出我們希望的信號(hào),并將在計(jì)劃于 2025 年 9 月發(fā)布的 TimescaleDB 2.22.0 中棄用。如果您仍在使用 TAM,則無(wú)法升級(jí)到 2.22.0 及更高版本。自從2.18.0[2]推出 TAM 以來(lái),我們了解到 btree 并不是合適的架構(gòu)。列存儲(chǔ)的最新進(jìn)展 - 例如性能更高的回填、SkipScan、添加檢查約束和更快的點(diǎn)查詢 - 使列存儲(chǔ)[3]接近或與 TAM 相當(dāng),而無(wú)需來(lái)自附加索引的存儲(chǔ)。對(duì)于此操作可能造成的不便,我們深表歉意,并在此為您提供遷移過(guò)程中的幫助。

當(dāng)然,棄用公告里并沒(méi)有詳細(xì)解釋廢棄移除這個(gè)存儲(chǔ)引擎的具體原因,不過(guò)真實(shí)用戶踩雷倒是讓我知道了 WHY。這個(gè)存儲(chǔ)引擎沒(méi)有處理好垃圾回收,會(huì)導(dǎo)致 PostgreSQL 數(shù)據(jù)庫(kù)因?yàn)?XID Wraparound 直接宕掉。


具體案例

大體過(guò)程是這樣的,用戶遇到了 XID 回卷故障,PostgreSQL 提示還有 300萬(wàn)個(gè) XID 就回卷了,進(jìn)入保護(hù)模式拒絕寫(xiě)入。只讀負(fù)載還可以工作,業(yè)務(wù)降級(jí)為只讀模式。

這個(gè)案例運(yùn)氣比較好,數(shù)據(jù)庫(kù)還活著,可以執(zhí)行只讀 SQL,所以先趕緊抽取了一個(gè)邏輯備份。然后一看,年齡花了幾個(gè)月增長(zhǎng)到20億(一看就是不看告警…),再看是幾個(gè) TimescaleDB Chunk 表年齡把整個(gè)集群的年齡撐高的。再一看,這幾張表竟然用的是 hypercore 存儲(chǔ)引擎,Vacuum 直接報(bào)錯(cuò)。

當(dāng)然要解決這個(gè)問(wèn)題,其實(shí)把這個(gè)表 DROP 了,或者硬改系統(tǒng)元數(shù)據(jù)其實(shí)就好了。但尷尬的是 PostgreSQL 進(jìn)入保護(hù)模式,不允許寫(xiě)入操作,最多允許你跑 VACUUM FREEZE,這就死循環(huán)了。所以最快恢復(fù)的辦法就直接用 Pigsty 拉起了一個(gè)新集群,把 hypercore 表 DDL 修改成 timescale 的經(jīng)典表,然后 pg_dump | psql 數(shù)據(jù)拉過(guò)去。業(yè)務(wù)切換到新集群,解決了這個(gè)問(wèn)題。

順帶一提,如果你的 PG 要炸了,老馮可以提供遠(yuǎn)程咨詢問(wèn)診哦。


經(jīng)驗(yàn)與教訓(xùn)

總的來(lái)說(shuō),老馮覺(jué)得這個(gè)案例再次告訴我們新特性上生產(chǎn)要謹(jǐn)慎。hypercore 這種實(shí)驗(yàn)性的存儲(chǔ)引擎雖然在性能和易用性上帶來(lái)一些亮眼的改進(jìn),但是在質(zhì)量/安全性上的關(guān)鍵缺陷讓前者失去意義。

對(duì)于存儲(chǔ)引擎這種關(guān)鍵,核心,高復(fù)雜度的組件模塊,老馮認(rèn)為再小心也不為過(guò),因?yàn)樗鼈冞€沒(méi)有長(zhǎng)時(shí)間,大規(guī)模運(yùn)行的社區(qū)可靠性認(rèn)證記錄,很多問(wèn)題kennel只有在復(fù)雜的真實(shí)場(chǎng)景中才會(huì)出現(xiàn)。更重要的是,存儲(chǔ)引擎缺陷通常更有可能傷害到數(shù)據(jù)完整性,殺傷力與風(fēng)險(xiǎn)通常比普通特性的缺陷要大的多。(類似需要注意的擴(kuò)展包括:,PG TDE 擴(kuò)展)。

上新的節(jié)奏

因此,很多人問(wèn)我,應(yīng)該用什么 PostgreSQL 大版本合適,因?yàn)?PG 每年都會(huì)發(fā)布一個(gè)新的大版本嘛。老馮的建議是,如果你是在生產(chǎn)環(huán)境使用,普通的用戶可以使用上一個(gè)大版本 : 比如 PG18 剛發(fā)布,那么當(dāng)下最合適的 PG 大版本會(huì)是 PG 17。有實(shí)力/愿意嘗鮮的客戶,老馮的建議是在 第二,第三個(gè)小版本(18.1,18.2)開(kāi)始使用會(huì)比較合適,因?yàn)檫@個(gè)時(shí)候主要的擴(kuò)展支持都已經(jīng)到位,三到六個(gè)月的使用也基本能讓 BUG 充分暴露 —— 但是也有例外(比如 PG 14.3 才發(fā)現(xiàn)的索引損壞顯著 BUG )。


當(dāng)然,如果你很有實(shí)力,有信心應(yīng)對(duì)各種問(wèn)題,也可以始終使用最新版本與各種新特性。比如去哪兒網(wǎng)的李海龍帥龍同志,就會(huì)在 PG 每個(gè)大小版本剛出,就立刻把生產(chǎn)PG全部升級(jí)到最新。老馮會(huì)稍微保守(懶)一些,基本上會(huì)等一兩個(gè)小版本出來(lái),再升級(jí)大版本。目前 Pigsty 的策略也基本上是等到出來(lái)半年,等 TimescaleDB,Citus 這些重磅三方擴(kuò)展都適配了,再提升默認(rèn)的大版本

所以,不少朋友都問(wèn)我現(xiàn)在 PG 18 出來(lái)了你的 Pigsty 啥時(shí)候支持,其實(shí)半年前beta出來(lái)的時(shí)候就支持了,如果你沒(méi)有用到那些還沒(méi)適配 18 的擴(kuò)展插件,現(xiàn)在就可以用了。但真的要上生產(chǎn),老馮覺(jué)得還是最好再等半年,畢竟,有時(shí)候吃螃蟹真的會(huì)拉肚子。

References

[1] 超核訪問(wèn)方法的棄用: https://github.com/timescale/timescaledb/releases?page=1
[2] 2.18.0: https://github.com/timescale/timescaledb/releases/tag/2.18.0
[3] 列存儲(chǔ): https://www.timescale.com/blog/hypercore-a-hybrid-row-storage-engine-for-real-time-analytics

特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(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.

相關(guān)推薦
熱點(diǎn)推薦
她是黃光裕之母,兩個(gè)兒子是富豪,兩個(gè)女兒是高管,她為何不幸福

她是黃光裕之母,兩個(gè)兒子是富豪,兩個(gè)女兒是高管,她為何不幸福

細(xì)品名人
2026-01-11 07:33:32
1950年新疆平叛,解放軍血戰(zhàn)孤城40天,戰(zhàn)后軍區(qū)下令此馬永不退役

1950年新疆平叛,解放軍血戰(zhàn)孤城40天,戰(zhàn)后軍區(qū)下令此馬永不退役

干史人
2026-01-10 08:30:08
李在明下令調(diào)查無(wú)人機(jī)事件

李在明下令調(diào)查無(wú)人機(jī)事件

環(huán)球時(shí)報(bào)國(guó)際
2026-01-12 10:37:30
很多人都是智力低下,只不過(guò)生活可以自理,所以一直沒(méi)有被發(fā)現(xiàn)

很多人都是智力低下,只不過(guò)生活可以自理,所以一直沒(méi)有被發(fā)現(xiàn)

夜深愛(ài)雜談
2026-01-11 19:20:55
張雨綺穿吊帶看著骨架有點(diǎn)大哦!這大體格誰(shuí)看了不喜歡?

張雨綺穿吊帶看著骨架有點(diǎn)大哦!這大體格誰(shuí)看了不喜歡?

草莓解說(shuō)體育
2025-12-21 00:52:27
伊朗總統(tǒng)稱正全力通過(guò)根除腐敗來(lái)改善民生

伊朗總統(tǒng)稱正全力通過(guò)根除腐敗來(lái)改善民生

界面新聞
2026-01-11 07:01:41
冰凍后本周快速回暖,上海直沖19℃

冰凍后本周快速回暖,上海直沖19℃

魯中晨報(bào)
2026-01-12 07:17:02
個(gè)人所得稅減半征收政策!延續(xù)至2027年12月31日!

個(gè)人所得稅減半征收政策!延續(xù)至2027年12月31日!

審計(jì)之家
2026-01-11 09:03:14
漢奸石平返回東京,還在自己的社交媒體上為自己的行程邀功!

漢奸石平返回東京,還在自己的社交媒體上為自己的行程邀功!

荊楚寰宇文樞
2026-01-11 20:49:09
“年度反腐大片”披露:生日宴成唐仁健“收割盛會(huì)”,有老板清空一棟酒店大樓供親友團(tuán)連玩3天

“年度反腐大片”披露:生日宴成唐仁健“收割盛會(huì)”,有老板清空一棟酒店大樓供親友團(tuán)連玩3天

紅星新聞
2026-01-11 22:04:26
大廠的斬殺線,已經(jīng)來(lái)了

大廠的斬殺線,已經(jīng)來(lái)了

唐韌
2026-01-08 13:07:54
劉燁的基因太強(qiáng)大了,兒子太像他了,諾一是中法混血兒,很帥

劉燁的基因太強(qiáng)大了,兒子太像他了,諾一是中法混血兒,很帥

手工制作阿殲
2026-01-11 03:00:48
美橄欖球明星的隱私部位尺寸,被模特前妻公開(kāi)討論,怒而對(duì)簿公堂

美橄欖球明星的隱私部位尺寸,被模特前妻公開(kāi)討論,怒而對(duì)簿公堂

失寵的小野豬
2026-01-09 14:29:24
1957年,毛主席得知救命恩人被降級(jí)處理,下令道:享受副省級(jí)待遇

1957年,毛主席得知救命恩人被降級(jí)處理,下令道:享受副省級(jí)待遇

歷史龍?jiān)w
2026-01-12 06:00:17
性感《女巨人》游戲遭吐槽:這目標(biāo)受眾到底是誰(shuí)

性感《女巨人》游戲遭吐槽:這目標(biāo)受眾到底是誰(shuí)

游民星空
2026-01-11 12:16:29
伊朗德黑蘭省省長(zhǎng)稱抗議群體已大幅減少

伊朗德黑蘭省省長(zhǎng)稱抗議群體已大幅減少

界面新聞
2026-01-12 07:05:47
重慶一女子不會(huì)殺豬網(wǎng)上求助,上千網(wǎng)友驅(qū)車來(lái)幫忙,10萬(wàn)人在線圍觀!

重慶一女子不會(huì)殺豬網(wǎng)上求助,上千網(wǎng)友驅(qū)車來(lái)幫忙,10萬(wàn)人在線圍觀!

深圳晚報(bào)
2026-01-12 08:12:04
鄰居把排污管接我院子里,我不爭(zhēng)天天種菖蒲,2月后他主動(dòng)賠6000

鄰居把排污管接我院子里,我不爭(zhēng)天天種菖蒲,2月后他主動(dòng)賠6000

卡西莫多的故事
2025-12-16 10:29:36
善惡有報(bào),2025年塌房的六大網(wǎng)紅,為了流量各種作妖,不值得同情

善惡有報(bào),2025年塌房的六大網(wǎng)紅,為了流量各種作妖,不值得同情

單手搓核彈
2026-01-06 14:04:34
美國(guó)剛松口,以色列就表態(tài)挺一中!島內(nèi)徹底慌了

美國(guó)剛松口,以色列就表態(tài)挺一中!島內(nèi)徹底慌了

荷蘭豆愛(ài)健康
2026-01-12 09:24:04
2026-01-12 11:11:00
老馮云數(shù) incentive-icons
老馮云數(shù)
數(shù)據(jù)庫(kù)老司機(jī),云計(jì)算泥石流,PostgreSQL大法師
75文章數(shù) 28關(guān)注度
往期回顧 全部

科技要聞

小米二手車價(jià)大跳水:SU7半年跌5萬(wàn)元

頭條要聞

日媒披露高市早苗或有大動(dòng)作 傳出兩個(gè)方案

頭條要聞

日媒披露高市早苗或有大動(dòng)作 傳出兩個(gè)方案

體育要聞

U23國(guó)足形勢(shì):末輪不負(fù)泰國(guó)即確保晉級(jí)

娛樂(lè)要聞

留幾手為閆學(xué)晶叫屈?稱網(wǎng)友自卑敏感

財(cái)經(jīng)要聞

揭秘“穩(wěn)賺不賠”的代工項(xiàng)目騙局

汽車要聞

2026款宋Pro DM-i長(zhǎng)續(xù)航補(bǔ)貼后9.98萬(wàn)起

態(tài)度原創(chuàng)

游戲
家居
健康
本地
軍事航空

傳聞稱任天堂直面會(huì)2月10日舉行 或有新3D《馬里奧》

家居要聞

包絡(luò)石木為生 野性舒適

這些新療法,讓化療不再那么痛苦

本地新聞

云游內(nèi)蒙|“包”你再來(lái)?一座在硬核里釀出詩(shī)意的城

軍事要聞

俄大使:馬杜羅夫婦被控制時(shí)身邊沒(méi)人

無(wú)障礙瀏覽 進(jìn)入關(guān)懷版