-
2020-07-15 PostgreSQL
PostgreSQLにおけるレプリケーション機能とPgpool-IIについて
はじめに
みなさん、初めましてこんにちは。インサイトの加藤です。
私からはPostgreSQLにおけるストリーミングレプリケーションとPgpool-IIの解説をしていきます。PostgreSQLがOracle Data Guard 並みの高可用性を持ち、待機系も余すことなくリソースを使用できる無駄のなさを知っていただきたいので、そもそも「ストリーミングレプリケーションとPgpool-IIってなあに」というところから、実際に検証をしなければ分からない部分までブログにするつもりです。この連載のまとめには、Pgpool-IIを実際に使用したZabbixの構築例を説明させていただきたいと思っておりますので、是非最後までお付き合いください。
ストリーミングレプリケーションとは?
PostgreSQLには、利用可能なレプリケーションは何種類かありますが、その中の一部として、「ストリーミングレプリケーション」があります。それは「WAL」を「ストリーミング」してレプリケーションを実現するというそのままの機能です。「WAL」というのはデータ書き込みに先立って変更内容を書き出すログであり、プライマリ側のPostgreSQLの「WAL」をリアルタイムでスタンバイ側のPostgreSQLに転送することで、データベースの状態を全く同じ状態に保つことができます。この時のスタンバイ側は何台でも作成することができ、更新を受け付けるのはプライマリ側のみです。ただし、自動的なフェイルオーバ機能や、PostgreSQLのサーバ負荷などの状況を考慮した参照クエリとプライマリ側への更新クエリの自動振り分け機能は存在しません。周辺OSSである「Pgpool-II」を利用することによって、これらの機能を実装することができます。
Pgpool-IIとは?
先ほど少し述べたように、PostgreSQLサーバとPostgreSQLデータベースクライアントの間に位置するプロキシソフトウェアです。主な機能としては、負荷分散機能や自動フェイルオーバ機能に加え、コネクションプーリング、接続の制限が挙げられます。Pgpool-IIによるレプリケーション機能も備わっていますが、データ一貫性は損なわれるかもしれません。詳しくはこちらのページを参照してください。
まとめ
ざっくりと書かせてはいただきましたが、何となくでもPostgreSQLのレプリケーション機能とPgpool-IIによって、可用性の高いシステムを構築でき、参照系のSQLの処理をシステム全体で実行出来るんだなとお分かりいただければ嬉しく思います。
次回はPostgreSQLのストリーミングレプリケーション機能を使用したPgpool-IIの実際の動きと併せ、様々な機能について皆さんに説明していきたいと考えておりますので、どうぞよろしくお願いいたします。
参考 : https://www.pgpool.net/docs/pgpool-II-4.0.6/ja/html/example-configs.html