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

網(wǎng)易首頁 > 網(wǎng)易號 > 正文 申請入駐

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

0
分享至

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

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

Hypercore 是什么

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


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


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

然而……

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

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

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


具體案例

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

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

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

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


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

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

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

上新的節(jié)奏

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


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

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

References

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

特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(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)推薦
加速心梗惡化的原因:飲酒排第5,排第1的,很多朋友天天做

加速心梗惡化的原因:飲酒排第5,排第1的,很多朋友天天做

岐黃傳人孫大夫
2026-03-26 18:31:00
俗話說得好:“門前撒鹽破窮運(yùn),灶后擺鹽聚財(cái)源”

俗話說得好:“門前撒鹽破窮運(yùn),灶后擺鹽聚財(cái)源”

磊子講史
2026-03-20 15:52:06
大家吃過父母職業(yè)的紅利嗎? 網(wǎng)友:三萬塊的被子沒賣出去給我了

大家吃過父母職業(yè)的紅利嗎? 網(wǎng)友:三萬塊的被子沒賣出去給我了

夜深愛雜談
2026-03-26 20:54:08
美伊沖突,已經(jīng)出現(xiàn)了3個贏家,10個輸家,都是誰?

美伊沖突,已經(jīng)出現(xiàn)了3個贏家,10個輸家,都是誰?

七號說三國
2026-03-25 21:11:29
土耳其單周拋售22噸黃金 創(chuàng)2018年以來新高

土耳其單周拋售22噸黃金 創(chuàng)2018年以來新高

財(cái)聯(lián)社
2026-03-26 20:58:17
封神戰(zhàn)在即!德約出戰(zhàn)蒙特卡洛,沖擊史無前例三圈“金大師”!

封神戰(zhàn)在即!德約出戰(zhàn)蒙特卡洛,沖擊史無前例三圈“金大師”!

田先生籃球
2026-03-26 13:33:00
毛岸英葬在朝鮮,碑文引毛主席“不滿”:少寫了一個人的名字

毛岸英葬在朝鮮,碑文引毛主席“不滿”:少寫了一個人的名字

歷史點(diǎn)行
2026-03-25 18:16:35
真不能怪祖院長,就曾醫(yī)生這顏值、這才華和魅力,誰遭的???

真不能怪祖院長,就曾醫(yī)生這顏值、這才華和魅力,誰遭的???

吃瓜局
2025-11-11 16:23:49
羅永浩稱楊笠段子沒有惡意:被人過度解讀,微博CEO表態(tài)

羅永浩稱楊笠段子沒有惡意:被人過度解讀,微博CEO表態(tài)

鞭牛士
2026-03-26 10:20:13
俄羅斯突然“關(guān)閘”!40%的貿(mào)易流說斷就斷,全球買家慌了

俄羅斯突然“關(guān)閘”!40%的貿(mào)易流說斷就斷,全球買家慌了

老黯談娛
2026-03-27 03:34:23
“花48元請她吃飯,她不讓睡只能奸殺”,2016年19歲女孩被奸殺

“花48元請她吃飯,她不讓睡只能奸殺”,2016年19歲女孩被奸殺

漢史趣聞
2026-03-26 14:13:20
四川一車主送孩子上學(xué)違規(guī)停車,孩子“開門殺”將騎電動車母女絆倒,車主直接開車駛離,當(dāng)?shù)亟痪号懦岂{、毒駕嫌疑,司機(jī)賠償了醫(yī)藥費(fèi)

四川一車主送孩子上學(xué)違規(guī)停車,孩子“開門殺”將騎電動車母女絆倒,車主直接開車駛離,當(dāng)?shù)亟痪号懦岂{、毒駕嫌疑,司機(jī)賠償了醫(yī)藥費(fèi)

瀟湘晨報(bào)
2026-03-26 14:17:08
黃一鳴回應(yīng)公開孩子父親身份:你不給撫養(yǎng)費(fèi),我就用你的流量賺錢

黃一鳴回應(yīng)公開孩子父親身份:你不給撫養(yǎng)費(fèi),我就用你的流量賺錢

每一次點(diǎn)擊
2026-02-22 12:02:41
還記得20年前的《故事會》嗎?廣告不堪入目,簡直是個紙上"暗網(wǎng)"!

還記得20年前的《故事會》嗎?廣告不堪入目,簡直是個紙上"暗網(wǎng)"!

神奇故事
2026-03-17 23:54:32
美軍被打的很無奈!伊拉克PMF光纖無人機(jī)攻擊美軍基地,預(yù)示美國駐軍體系徹底崩塌?

美軍被打的很無奈!伊拉克PMF光纖無人機(jī)攻擊美軍基地,預(yù)示美國駐軍體系徹底崩塌?

軍武速遞
2026-03-26 18:57:08
這根骨頭上沒有贅肉,說明你很健康

這根骨頭上沒有贅肉,說明你很健康

財(cái)經(jīng)早餐
2026-02-23 06:20:12
揪心!澳門世界杯倒計(jì)時,外協(xié)步步緊逼,國乒主力能否絕境破局?

揪心!澳門世界杯倒計(jì)時,外協(xié)步步緊逼,國乒主力能否絕境破局?

三月八卦
2026-03-26 23:10:46
白鹿,張凌赫被傳復(fù)合?男方被曝只跟她談過,熱搜炸了:這倆兜兜轉(zhuǎn)轉(zhuǎn),好體面....

白鹿,張凌赫被傳復(fù)合?男方被曝只跟她談過,熱搜炸了:這倆兜兜轉(zhuǎn)轉(zhuǎn),好體面....

阿廢冷眼觀察所
2026-03-27 00:13:22
斯卡洛尼:希望梅西出戰(zhàn)世界杯,但最終決定權(quán)不在我手里

斯卡洛尼:希望梅西出戰(zhàn)世界杯,但最終決定權(quán)不在我手里

懂球帝
2026-03-27 05:47:36
iPhone4回收價(jià)暴漲80倍?借著二手手機(jī)漲價(jià)熱點(diǎn)的又一波瘋狂收割

iPhone4回收價(jià)暴漲80倍?借著二手手機(jī)漲價(jià)熱點(diǎn)的又一波瘋狂收割

柴狗夫斯基
2026-03-26 21:15:05
2026-03-27 10:28:49
老馮云數(shù) incentive-icons
老馮云數(shù)
數(shù)據(jù)庫老司機(jī),云計(jì)算泥石流,PostgreSQL大法師
140文章數(shù) 55關(guān)注度
往期回顧 全部

科技要聞

OpenAI果斷砍掉"成人模式",死磕生產(chǎn)力

頭條要聞

65歲上海老伯相信"33歲女老師"給自己生兒子 被騙16萬

頭條要聞

65歲上海老伯相信"33歲女老師"給自己生兒子 被騙16萬

體育要聞

申京努力了,然而杜蘭特啊

娛樂要聞

劉曉慶妹妹發(fā)聲!稱姐姐受身邊人挑撥

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

很反常!油價(jià)向上,黃金向下

汽車要聞

一汽奧迪A6L e-tron開啟預(yù)售 CLTC最大續(xù)航815km

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

親子
藝術(shù)
家居
手機(jī)
數(shù)碼

親子要聞

過敏性鼻炎需要注意什么,飲食注意事項(xiàng)

藝術(shù)要聞

江青的書法秘訣!只練草書真的能提升書法水平嗎?

家居要聞

傍海而居 靜觀蝴蝶海

手機(jī)要聞

消息稱蘋果iOS 27拓展“液態(tài)玻璃”,要求所有App跟進(jìn)

數(shù)碼要聞

中國耳機(jī)市場6年來首次下滑:銷量跌回2億 2026還要降

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