【製品解説】EDB Postgres Distributed(PGD)6.4.0
超高可用性マルチマスター 〜クォーラムコミット導入でグローバルな一貫性をさらに強靭化:Postgresのアクティブ・アクティブ構成を支えるPGDが進化。新版では過半数合意でロールバックを制御するクォーラムコミットを追加し、データの乖離を防止。トランザクションモードのプール対応やラージオブジェクト複製も実装し、大規模分散環境の信頼性を引き上げます。
1. PGDとは?
EDB Postgres Distributed (PGD) は、標準の PostgreSQL、EDB Postgres Extended Server (PGE)、または EDB Postgres Advanced Server (EPAS) を、分散型、マルチマスター構成、かつ高可用性なデータベースプラットフォームへと変換する統合ソフトウェアスタックです。最新世代の双方向レプリケーション(BDR)を中核とし、複数ノードでの同時書き込みを可能にします。
2. 主なメリット
- アクティブ・アクティブ業務継続性: 全ノードで書き込みが可能で、障害時もゼロ待ち時間で他ノードへ自動迂回します。
- 柔軟な一貫性管理: コミットスコープを用いて、パフォーマンスとデータ整合性のバランスを柔軟に設定できます。
- データ局所性とデータ主権: 選択的フィルタリングにより、GDPR/CCPA等の規制に合わせて機密データを特定地域に保持可能です。
- 参照スケーリング: サブスクライバ専用ノードを活用し、書き込みに影響を与えず参照性能を数十ノード規模まで拡張可能です。
- 自動競合管理: 同一データへの同時書き込みが発生した場合、設定ルールに基づいて競合を自動解消します。
- 階層化ストレージ(PGAA連携): 古いデータを安価なオブジェクトストレージへ自動移行し、コスト削減と同一インターフェースクエリを実現します。
- ゼロダウンタイム運用: OSパッチ適用やDBアップデートをノードごとに順次実行(ローリングアップデート)可能です。
3. PGDの仕組み
PGD は以下の統合コンポーネントおよびプロトコルにより分散高可用性を実現します。
- 論理レプリケーション: 論理レベルでの変更同期により、異種メジャーバージョン間同期や同一テーブルへの同時書き込みに対応。
- コミットスコープ: クライアントへのコミット完了前に必要な他ノードの承認条件を制御するルールです。
- コネクションマネージャー: 組み込みプロキシが書き込みをライトリーダーへ自動ルーティングし、参照トラフィックをレプリカへ分散します。
- Raftコンセンサス: リーダー選出、クラスタ構成管理、グローバルロックを自動調和します。
- レプリケーションセット: テーブル単位でのグループ化により、きめ細かな部分レプリケーションを管理します。
4. バージョン6.4.0 新機能
【新機能および機能強化】
- クォーラムコミット(Quorum Commit)スコープ: 過半数ノードの合意を必須化。合意が得られない場合はロールバックを実行し、データの乖離を防ぎ一貫性を担保します。
- トランザクションモードのプール対応: コネクションマネージャーがトランザクション単位のプーリングに対応し、高同時実行環境での負荷削減とスケーラビリティ向上を実現。
- 複製ラージオブジェクト(Replicated Large Objects): PostgreSQLラージオブジェクトの論理複製に対応し、
gallocシーケンスで重複のないグローバル一意OIDを自動生成。 - アプライエラーポリシーの強化: レプリケーション失敗時に無限リトライせず、エラーログを専用テーブルへ保存・管理可能な設定を追加。
- Raft状態同期コマンド:
pgd raft sync-snapshotコマンドで、乖離したRaft状態をリーダーのスナップショットから強制同期可能に。 - 一括リーダーシップ移譲関数:
bdr.transfer_all_leadershipsにより、ノードの書き込み/Raftリーダー権限を他ノードへ一括退避し、メンテナンスを自動化。
5. 日本語マニュアル
EDB Postgres Distributed(PGD)6.4.0 日本語マニュアル
機能の詳細な設定方法やパラメータ仕様、導入手順については日本語マニュアルをご覧ください。