🎯 レッスンの目的__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 | パトローニ (ザランド) | PGO (CrunchyData) |
|---|---|---|---|
| アーキテクチャ | K8s ネイティブ オペレーター__HTMLTAG_168___ | サイドカー + DCS | K8s オペレーター |
| フェイルオーバー | K8s コントローラー | DCS 経由の Raft のような | K8s コントローラー |
| DCS 依存性_ | ❌ 不要 (K8 を使用) | ✅ etcd/Consul/K8s が必要 | ❌ 不要 |
| バックアップ | バーマン (S3/ローカル) | WAL-G、pgBackRest | pgBackRest |
| 接続プーリング__HTMLTAG_206___ | PgBouncer 内蔵 | 別途設定が必要 | PgBouncer 内蔵 |
| CNCF | サンドボックス | コミュニティ | コミュニティ |
| ライセンス | Apache 2.0 | MIT | Apache 2.0 |
| 複雑さ | 低 | 平均 | 平均 |
👉 CloudNativePG を選択: K8s ネイティブ、外部 DCS 不要、CNCF プロジェクト、統合バックアップ、K8s の Patroni より簡単。
パート 3: CLOUDNATIVEPG アーキテクチャ
コードブロック_1
3.1.フェイルオーバー フロー
___コードブロック_2___パート 4: 接続プーリング — PGBOUNCER
コードブロック_3
パート 5: ストレージに関する考慮事項
コードブロック_4
💡 重要なポイント
- CloudNativePG: K8s ネイティブ、etcd/Consul 不要、自動フェイルオーバー
- _ストリーミング レプリケーション: WAL ストリーミング経由のプライマリ → スタンバイ
- データ損失ゼロの場合は同期、スループットの場合は__HTMLTAG_277___非同期
- PgBouncer: 接続プーリングがデータベース プロセスの 20 倍に削減
- Ceph RBD (ReadWriteOnce) はデータベース PV に適しています
- 3 サービス: rw (プライマリ)、ro (スタンバイ)、r (任意のインスタンス)
🎯 演習
演習 1: 調査
- CloudNativePG ドキュメントを読む
- 3 つの演算子を比較: CNPG vs Patroni vs PGO
- _ユースケースに応じて同期か非同期かを決定__HTMLTAG_304___
📚 次の投稿
__HTMLTAG_310___レッスン 17: CloudNativePG Operator と PostgreSQL クラスターのデプロイ では、CloudNativePG をインストールし、PostgreSQL クラスター 3 インスタンスを作成します。