<cite id="ffb66"></cite><cite id="ffb66"><track id="ffb66"></track></cite>
      <legend id="ffb66"><li id="ffb66"></li></legend>
      色婷婷久,激情色播,久久久无码专区,亚洲中文字幕av,国产成人A片,av无码免费,精品久久国产,99视频精品3
      網易首頁 > 網易號 > 正文 申請入駐

      Git for Data: 瞬間克隆PG數據庫/實例

      0
      分享至

      每個程序員都用過git clone。敲下回車,幾秒鐘后,一個完整的代碼倉庫就躺在硬盤上了。

      但數據庫呢?

      想給測試環境搞一份生產數據的副本?傳統方案是pg_dump+pg_restore。一個 100GB 的庫,喝杯咖啡回來可能還沒完。想做并行測試?再等一輪。想給 AI Agent 一個可以隨便折騰的沙盒?那得準備好足夠的磁盤和耐心。

      最近一堆數據庫公司都在卷 "Git for Data",理由是:有了數據版本控制,Agent 就可以放心在數據庫里亂搞,壞了隨時回滾。

      但這玩意,PostgreSQL 其實早就有了。

      只不過PostgreSQL 18 把它提升到了一個新階段一個 100GB 的數據庫,克隆時間從"分鐘級"變成了200 毫秒。不是快了一點,是快了幾百倍。更神奇的是,克隆完的數據庫不占用額外存儲空間。1TB、10TB 的庫?一樣是 200 毫秒,一樣零額外開銷。

      這不是魔法,是寫時復制(Copy-on-Write)技術終于被 PostgreSQL 原生支持了。 今天我們就來聊聊這個特性,以及它對整個"數據版本控制"生態意味著什么。

      寫時復制:為什么能這么快?

      PostgreSQL 18 新增了一個參數file_copy_method,可選值為copy(傳統字節拷貝)和clone(基于 reflink 的瞬間克隆)。

      設置file_copy_method = clone后執行:

      CREATE DATABASE db_clone TEMPLATE db STRATEGY FILE_COPY;

      PostgreSQL 會調用操作系統的reflink接口。Linux 上是FICLONEioctl,macOS 上是copyfile()

      關鍵來了:文件系統不會真的復制數據

      它只是創建一組新的元數據指針,指向相同的物理磁盤塊。就像你在文件管理器里創建了一個"快捷方式",但這個快捷方式可以獨立修改。

      沒有數據移動,只有元數據操作。所以無論數據庫是 1GB 還是 1TB,克隆時間都是常數級的 —— 在現代 NVMe SSD 上,老馮測試 120GB 的庫復制大約 200 毫秒。797G 的數據復制大概 569 毫秒左右。

      寫時復制:為什么不占空間?

      克隆后,源庫和新庫共享所有物理存儲。當任意一方修改某個數據頁時,文件系統才會把這個頁復制出來單獨存儲:

      這意味著:存儲開銷 = 實際變更量,而不是完整副本。

      你可以同時跑 10 個克隆庫做并行測試,只要它們不大量寫入,存儲幾乎不增長。對測試環境來說,這是巨大的福音。

      不過,不是所有文件系統都支持 reflink。好消息是,大多數現代 Linux 發行版已經默認啟用:


      如果你用的是 EL 8/9/10、Debian 11/12/13、Ubuntu 20.04/22.04/24.04 等主流發行版,默認的 XFS 都已經支持并啟用 reflink。

      還在用 CentOS 7.9 和 ext4?那確實就沒辦法了,早點升級吧。

      關鍵限制:模板庫不能有連接

      這個功能雖然好,有一個繞不開的限制:克隆時,模板數據庫不能有任何活動連接。 原因很直接:PostgreSQL 需要確保克隆時數據處于一致狀態。如果有連接在跑,可能產生寫入,數據就不一致了。

      這個限制其實一直都有。以前它很致命 —— 你不可能讓生產庫停機幾分鐘等復制完成。但現在克隆只要亞秒級常數時間,這個限制的殺傷力大大降低了。 百毫秒級別的閃斷,對于很多場景是可以接受的,特別是那些 AI Agent 使用的庫——它們沒那么嬌氣。這就帶來了許多新鮮的可能性。

      實操的話,要想實際把這個數據庫克隆出來,你需要先終止所有連接,在兩條緊挨著 SQL 語句里執行:

      psql <-EOF
      SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = 'prod';
      CREATE DATABASE dev TEMPLATE prod STRATEGY FILE_COPY;
      EOF

      請注意,這倆語句不能分開執行,但不能放在同一個事務里執行(CREATE DATABASE不能在事務塊內運行)。 所以你需要用 psql stdin 的方式來執行,用psql -c會自動包事務,反而會失敗。

      Pigsty 中的優化

      在 Pigsty 4.0 中,添加了對 PG18 這種克隆機制的支持:

      比如,你已經有了一個meta數據庫,現在想創建一個meta_dev的克隆庫用于測試, 只需要在pg_databases里添加一條記錄,指定templatestrategy: FILE_COPY即可。 然后執行:bin/pgsql-db pg-meta meta_dev,Pigsty 會幫你自動處理好所有細節。


      當然其實這里的細節還是不少的,比如,你要確保file_copy_method被正確設置為clone才有這個特性,這個 Pigsty 創建的集群全都已經針對 PG18+ 都配置好了。 如果你要克隆的數據庫就是管理數據庫postgres本身怎么辦 (克隆的時候不允許連接)。再比如,克隆數據庫之前要先終止所有連接,這些都幫你自動搞定了。

      還有沒有其他手段?

      當然,即使是 200ms 的不可用時間,有時候對于比較嚴格的生產環境依然是不可接受的。 而且如果你的 PG 版本不是最新的 18,也沒法用這個特性。

      Pigsty 提供了兩種更強大的克隆方式,場景稍微不太一樣:

      實例級克隆:pg-fork

      實例級別的克隆思路和 PG18 的 CoW 類似,都需要你的文件系統支持 reflink(XFS/Btrfs/ZFS)。 之前生產環境的文件系統老馮一直都強烈推薦用 xfs,現在也是很多地方都默認,這個要求并不難滿足。

      用了 xfs 之后,你可以使用cp --reflink=auto來克隆整個 PGDATA 目錄,從而克隆一個完全獨立的 PostgreSQL 實例。 這個過程也是瞬間完成的,和數據庫大小無關,而且克隆出來的不占用實際存儲,除非你開始往里面寫數據,才會觸發 CoW。

      postgres@vonng-aimax:/pg$ du -sh data
      797G data
      postgres@vonng-aimax:/pg$ time cp -r data data2

      real 0m0.586s
      user 0m0.014s
      sys 0m0.569s

      當然,實際上細節要比這個復雜,你如果直接這么復制,大概率得到的是一個數據狀態不一致的臟實例,啟動不了。 所以還要配合 PostgreSQL 的原子備份 API 來確保數據一致性 —— 核心就是這一行:

      psql <CHECKPOINT;
      SELECT pg_backup_start('pgfork', true);
      \! rm -rf /pg/data2 && cp -r --reflink=auto /pg/data /pg/data2
      SELECT * FROM pg_backup_stop(false);
      EOF

      當然實際上各種邊界情況要復雜一些,比如克隆出來的實例如果你要拉起來,不能擠占原來實例的端口, 不能寫臟原來生產實例的日志/WAL歸檔,諸如此類細節。所以 Pigsty v4 就提供了一個傻瓜式的克隆腳本pg-fork來解決這個問題。

      pg-fork 1 # 克隆一個 1 號實例,/pg/data1 ,監聽 15432 端口

      實例級別克隆的好處是,克隆出來的是一個完全獨立的 PostgreSQL 實例,同樣不占用額外存儲空間,同樣是瞬間完成的。 但是它不需要你關閉原始模板數據庫的連接,所以不會影響生產環境的可用性。 最多就是拉起來的時候吃掉點內存,但這種時候你就發現 PG 的雙緩沖其實也有好處了。 默認配置 25% 的 Sharedbuffer,你可以很輕松的再拉起一兩個實例。


      更妙的是,這種克隆出來的實例,還可以通過pg-pitr腳本,利用基于 pgBackRest 的備份,做時間點恢復(PITR)。 而且這個時間點恢復也是增量進行的,所以速度也很快。

      這種機制最直接的應用場景就是,誤刪數據了,但是刪的又不多,不至于全庫回檔。 那么這種情況下,就可以使用pg-fork腳本,瞬間克隆出一個和生產庫一模一樣的副本, 然后原地 pg-pitr 增量回滾到幾分鐘前,拉起來,把誤刪的數據查出來再寫回去。

      集群級別的克隆

      當然,還有一種集群層面的克隆,利用的技術也是類似的,通過使用一個集中式的備份倉庫,你可以從任意一個集群的備份中恢復到備份保留期限內的任意時間點。


      這種方式的集群克隆不用消耗原本生產集群的任何資源,云上的各種 “PITR” 其實就是這種方式,給你拉起一套新的集群,恢復到指定時間點。但是這種方式的速度就慢多了,畢竟要把數據從備份倉庫里拉出來,恢復到新的集群上,時間和數據量成正比。


      這種方式是最傳統的 PITR ,因為沒有那種 “瞬間克隆” 的效果,就不展開介紹了。

      應用場景

      三種克隆方式,各有適用場景,也很好理解,連接串五要素里面,去掉用戶名和密碼, 有三個要素可以修改:

      修改數據庫名,就是 Database 克隆

      修改端口號,就是實例級克隆

      修改主機IP,就是集群級克隆


      雖然已經有了pg-fork這種實例級的 “瞬間克隆” 技術,而且沒有數據庫模版克隆要求幾百毫秒停機時間的限制。 但這種操作要求你必須擁有數據庫服務器的文件系統訪問權限。而且你克隆出來的實例也僅限于在同一臺機器上運行 —— 從庫上是沒有的。

      數據庫克隆有一個獨特的優點,就是這個操作是 “完全在數據庫客戶端連接” 內完成的,也就是可以通過純 SQL 來完成,不需要服務器訪問權限。 這就意味著,你可以在任何能連接到數據庫的地方,執行這個克隆操作,唯一的代價就是 200ms 左右的斷連時間。

      這就打開了一扇新的大門:

      AI Agent 場景:給 Agent 只開一個數據庫連接的權限,每次需要"亂搞"的時候,讓它自己克隆一個沙盒出來。搞爛了就 DROP,沒有任何代價。10 個 Agent 并行跑,存儲開銷幾乎為零。

      CI/CD 場景:以前數據庫發布膽戰心驚。現在用極低成本克隆出一堆測試庫跑集成測試,DDL 遷移在真實數據上驗證完再上生產,心里有底多了。

      開發環境:每個開發者一個完整的數據庫副本,數據和生產一模一樣,存儲成本趨近于零。改壞了?重新克隆一個,200 毫秒的事。

      "Git for Data" 這個概念被吹了好幾年,各種創業公司融了不少錢。但 PostgreSQL 用一個簡單直接的方式給出了自己的答案:不需要額外的中間層,不需要復雜的架構,利用現代文件系統已有的能力,在數據庫內核層面原生支持

      幾百毫秒,沒有額外存儲,一條 SQL 搞定。

      有時候,最好的方案就是最簡單的方案。

      點一個關注 ??,精彩不迷路

      特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。

      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.

      相關推薦
      熱點推薦
      朝鮮戰爭中,美軍原本已接近擊敗中國,卻碰上了中國決死的師長

      朝鮮戰爭中,美軍原本已接近擊敗中國,卻碰上了中國決死的師長

      興趣知識
      2025-12-18 01:04:23
      董路:輸U16國足2-5、輸U23國足0-1,澳大利亞足球到頭了!

      董路:輸U16國足2-5、輸U23國足0-1,澳大利亞足球到頭了!

      綠茵舞著
      2026-01-11 22:32:58
      醫學的盡頭真是玄學嗎?網友:國家不讓你迷信,沒說讓你不信

      醫學的盡頭真是玄學嗎?網友:國家不讓你迷信,沒說讓你不信

      帶你感受人間冷暖
      2025-12-31 00:20:05
      北約7國對美下通牒,不到48小時,末日飛機升空,中國開始爆兵

      北約7國對美下通牒,不到48小時,末日飛機升空,中國開始爆兵

      聚焦熱點內幕
      2026-01-12 10:38:36
      包養情人無數,玩老婆閨蜜,娶初中同學女兒為妻,孫道存有多荒唐

      包養情人無數,玩老婆閨蜜,娶初中同學女兒為妻,孫道存有多荒唐

      瓜汁橘長Dr
      2026-01-06 10:11:41
      香煙熱度榜!煙民貢獻萬億稅收,年度銷冠竟是這個品牌…

      香煙熱度榜!煙民貢獻萬億稅收,年度銷冠竟是這個品牌…

      慧翔百科
      2025-12-24 09:14:14
      一錘在錘!檀健次戀情升級,女方再放猛料,這次恐涼涼了

      一錘在錘!檀健次戀情升級,女方再放猛料,這次恐涼涼了

      洲洲影視娛評
      2026-01-11 14:59:31
      日本富士通社長:日本企業工資太低,應該積極漲薪

      日本富士通社長:日本企業工資太低,應該積極漲薪

      隨波蕩漾的漂流瓶
      2026-01-12 11:20:12
      臺灣最新民調出爐,蔣萬安碾壓,江啟臣大勝,侯友宜已成2026變數

      臺灣最新民調出爐,蔣萬安碾壓,江啟臣大勝,侯友宜已成2026變數

      滄海旅行家
      2026-01-11 15:07:05
      恭喜,38歲馬龍正式上任,亮相新疆新崗位,王楚欽祝福

      恭喜,38歲馬龍正式上任,亮相新疆新崗位,王楚欽祝福

      懂球社
      2026-01-12 09:00:56
      突然!美國,發動大規模襲擊!

      突然!美國,發動大規模襲擊!

      數據寶
      2026-01-11 18:24:31
      沈陽最新任免名單!包括兩名副市長!

      沈陽最新任免名單!包括兩名副市長!

      沈陽百姓一家親
      2026-01-12 00:09:18
      剛說川普可能護送巴列維進入,就傳伊朗斷網和川普可能再次打擊

      剛說川普可能護送巴列維進入,就傳伊朗斷網和川普可能再次打擊

      邵旭峰域
      2026-01-09 12:56:47
      26年春晚首次彩排,16位大咖亮相,看到他們出現,今年是真穩了

      26年春晚首次彩排,16位大咖亮相,看到他們出現,今年是真穩了

      洲洲影視娛評
      2026-01-10 20:05:52
      章瑩穎只是冰山一角:在暗網購物車里,人不是人,可能是“零件”

      章瑩穎只是冰山一角:在暗網購物車里,人不是人,可能是“零件”

      普覽
      2026-01-10 20:44:27
      張學良到了晚年才吐露心聲:我這輩子從來不信迷信,然而在老虎廳除掉楊宇霆之后,我卻不得不改變想法

      張學良到了晚年才吐露心聲:我這輩子從來不信迷信,然而在老虎廳除掉楊宇霆之后,我卻不得不改變想法

      清風鑒史
      2025-12-26 17:05:13
      小波特即將成為勇士球員,勇士計劃添加首輪簽通過三方送出庫明加

      小波特即將成為勇士球員,勇士計劃添加首輪簽通過三方送出庫明加

      佳佳說奇事故事
      2026-01-12 10:02:34
      輕斷食再次封神!研究證實:能讓肝臟脂肪在3個月內少25.5%!

      輕斷食再次封神!研究證實:能讓肝臟脂肪在3個月內少25.5%!

      健康之光
      2026-01-09 06:20:03
      陪睡陪玩不過是皮毛!萬達百億資產蒸發后,王思聰又曝驚天丑聞

      陪睡陪玩不過是皮毛!萬達百億資產蒸發后,王思聰又曝驚天丑聞

      牛鍋巴小釩
      2025-12-24 10:39:19
      大清朝第一罪人,不是鰲拜,也不是吳三桂,而是當了35年忠臣的他

      大清朝第一罪人,不是鰲拜,也不是吳三桂,而是當了35年忠臣的他

      豐譚筆錄
      2026-01-12 07:50:12
      2026-01-12 12:08:49
      老馮云數 incentive-icons
      老馮云數
      數據庫老司機,云計算泥石流,PostgreSQL大法師
      75文章數 28關注度
      往期回顧 全部

      科技要聞

      小米二手車價大跳水:SU7半年跌5萬元

      頭條要聞

      媒體:美國"不演了" 特朗普直白表態震驚世界

      頭條要聞

      媒體:美國"不演了" 特朗普直白表態震驚世界

      體育要聞

      聰明的球員,不是教練教出來的

      娛樂要聞

      閆學晶:脫離群眾太久 忘了自己的根

      財經要聞

      揭秘“穩賺不賠”的代工項目騙局

      汽車要聞

      "家轎之王"變帥了 東風日產全新軒逸量產下線

      態度原創

      藝術
      本地
      健康
      數碼
      公開課

      藝術要聞

      畫完這組畫,他抑郁了,后來自殺了

      本地新聞

      云游內蒙|“包”你再來?一座在硬核里釀出詩意的城

      血常規3項異常,是身體警報!

      數碼要聞

      Khadas公布Mind Go概念:筆記本、平板、帶屏迷你主機三合一

      公開課

      李玫瑾:為什么性格比能力更重要?

      無障礙瀏覽 進入關懷版 主站蜘蛛池模板: 成人深爱网| 国内精品伊人久久久久av| AV最新高清无码专区| 色综合久久一区二区三区| 亚洲国产第六| 国产v| 亚洲国产精品高清久久久 | 亚洲国产精品成人综合色| 亚洲中文字幕在线第六区| 平武县| 国产av一区二区三区| 99久久婷婷国产综合精品青草五月 | 国产精品99久久久久久成人| 一本色道久久亚洲综合精品蜜桃| 人人人澡人人肉久久精品| 国产一区亚洲一区| 波多野结衣绝顶大高潮| 漂亮的保姆hd完整版免费韩国| 婷婷国产成人精品视频| 熟女内射| 精品视频99| 亚洲精品色欲| 国产精品午夜福利免费看| 大陆极品少妇内射aaaaa| 偷窥盗摄国产在线视频| 99久久综合九九亚洲| 欧美又大又色又爽aaaa片| 最新国产成人在线网站| 中文字幕久久熟女蜜桃| 午夜痒痒网| 日日躁夜夜躁狠狠久久av| 中文字幕精品人妻| 成人中文字幕无码| 国内精品久久久久影院日本| 国产午夜亚洲精品久久| 色综合久久中文综合久久激情 | 亚洲123区| 欧美色人妻| 亚洲中文天堂| 成人精品一区日本无码网| 99精品国产成人一区二区|