🎯 課程目標__HTMLTAG_68___
完成本課程後,您將:
- ✅ 了解 PostgreSQL 流複製
- ✅ 比較 Patroni、CloudNativePG 和 PGO (CrunchyData)
- ✅ 了解同步與非同步複製__HTMLTAG_77___
- ✅ HA 架構:主備、故障轉移、隔離
- ✅ 使用 PgBouncer 進行連線池
第 1 部分:POSTGRESQL 複製
1.1。流式複製
___程式碼區塊_0___✅ 主要:接收寫入,將 WAL 串流傳輸到備用資料庫 ✅ 備用:重播 WAL,服務讀取查詢 ✅ 故障轉移:將備用提升為主
1.2。同步與異步
| 模式 | 同步 | 異步 |
|---|---|---|
| 資料安全 | 零資料遺失 (RPO=0) | 潛在的資料遺失 |
| 寫入延遲 | 更高(等待待機ACK) | 降低(不要等待) |
| 吞吐量 | 下 | 更高 |
| 網路依賴性 | 強(延遲影響寫入) | 弱 |
| 最適合 | 財務、關鍵資料 | 大多數應用 |
第 2 部分:比較 POSTGRESQL 運算子
| 標準 | CloudNativePG | 帕特羅尼 (Zalando) | PGO (CrunchyData) |
|---|---|---|---|
| 架構 | K8s 原生運算子__HTMLTAG_168___ | 邊車 + DCS | K8s 運營商 |
| 故障轉移 | K8s 控制器 | 透過 DCS 類似 Raft | K8s 控制器 |
| DCS 依賴性 | ❌不需要(使用K8s) | ✅ 需要 etcd/Consul/K8s | ❌不需要 |
| 備份 | 酒保(S3/本地) | WAL-G,pgBackRest | pgBackRest |
| 連線池__HTMLTAG_206___ | PgBouncer 內建 | 需要單獨設定 | PgBouncer 內建 |
| CNCF | 沙盒 | 社區 | 社區 |
| 許可證 | Apache 2.0 | 麻省理工學院 | Apache 2.0 |
| 複雜性 | 低 | 平均 | 平均 |
👉 選擇CloudNativePG:K8s原生,無需外部DCS、CNCF項目,集成備份,比K8s上的Patroni更簡單.
第 3 部分:CLOUDNATIVEPG 架構
程式碼區塊_1
3.1。故障轉移流程
___程式碼區塊_2___第 4 部分:連接池 — PGBOUNCER
程式碼區塊_3
第 5 部分:儲存注意事項
程式碼區塊_4
💡 重點
-
___HTMLTAG_266__HTMLTAG_267___CloudNativePG:K8s 原生,無須 etcd/Consul,自動故障轉移
___HTMLTAG_270__HTMLTAG_271___串流複製:透過 WAL 串流主 → 備用
___HTMLTAG_274__HTMLTAG_275___同步實現零資料遺失,異步實作吞吐量
___HTMLTAG_280__HTMLTAG_281___PgBouncer:連接池減少了 20 個資料庫進程
___HTMLTAG_284__HTMLTAG_285___Ceph RBD (ReadWriteOnce) 適用於資料庫 PV
___HTMLTAG_288__HTMLTAG_289___3 項服務:rw(主)、ro(備用)、r(任何實例)
🎯 練習
練習 1:研究
- 閱讀 CloudNativePG 文件
- 比較 3 個運營商:CNPG、Patroni 和 PGO
- 根據您的用例決定同步或非同步__HTMLTAG_304___
📚 下一篇文章
在第 17 課:部署 CloudNativePG Operator 和 PostgreSQL 叢集中,我們將安裝 CloudNativePG 並建立 PostgreSQL 叢集 3 個實例。