この記事は Pgpool-II 4.1 の紹介【第 1 回】の中の PostgreSQL 12 への対応について詳しく紹介します。
PostgreSQL 12 への対応として、おもに最新の SQL パーサの移植とフェイルオーバやリカバリで使うサンプルスクリプトの修正が行われました。
PostgreSQL 12 SQL パーサの移植
Pgpool-II の負荷分散機能では、SQL を解析して参照か更新かを判別し、どのノードに振り分けるかを決めています。そのため、PostgreSQL の新バージョンでの SQL の変更に対応するには、SQL パーサを移植する必要があります。
PostgreSQL 12 での SQL のおもな変更点は以下のとおりです。
- VACUUM コマンドの SKIP_LOCKED、INDEX_CLEANUP、TRUNCATE オプション
- COMMIT AND CHAIN と ROLLBACK AND CHAIN コマンド
- COPY FROM コマンドの WHERE 句
- CREATE OR REPLACE AGGREGATE コマンド
- CREATE STATISTICS コマンドの mcv 種別
- REINDEX コマンドの CONCURRENTLY オプション
- EXPLAIN コマンドの SETTINGS オプション
Pgpool-II 4.1 では上記の変更点に対応しています。
サンプルスクリプトの修正
PostgreSQL 12 では、ストリーミングレプリケーションでスタンバイとして起動する場合の設定ファイル recovery.conf が廃止されました。パラメータは設定ファイル postgresql.conf で設定するように統合されました。また、スタンバイとして起動するかは recovery.signal ファイルを配置して指定するようになりました。
それに伴って、フェイルオーバやリカバリで使うサンプルスクリプトが修正され、PostgreSQL 12 でも動作するようになりました。サンプルスクリプトは Pgpool-II 4.1 文書 の「8.3. Pgpool-II + Watchdog の構築の例」に掲載されています。
また、今回のリリースからサンプルスクリプトが配布物に同梱されるようになりました。RPM パッケージを使ってインストールした場合には、/etc/pgpool-II ディレクトリに配置されます。
$ ll /etc/pgpool-II/*.sample -rwxr-xr-x 1 postgres postgres 2756 11月 19 09:06 /etc/pgpool-II/failover.sh.sample -rwxr-xr-x 1 postgres postgres 6575 11月 19 09:06 /etc/pgpool-II/follow_master.sh.sample -rwxr-xr-x 1 postgres postgres 1080 11月 19 09:06 /etc/pgpool-II/pgpool_remote_start.sample -rwxr-xr-x 1 postgres postgres 2830 11月 19 09:06 /etc/pgpool-II/recovery_1st_stage.sample -rwxr-xr-x 1 postgres postgres 712 11月 19 09:06 /etc/pgpool-II/recovery_2nd_stage.sample
サンプルスクリプトを使う場合には、ファイル名から .sample を外して適当な場所にコピーし、変数 PGHOME を PostgreSQL のインストール先に合わせて変更してください。
また、pgpool_setup が生成するスクリプトも PostgreSQL 12 に対応しています。
まとめ
今回、PostgreSQL 12 への対応として SQL パーサの移植とサンプルスクリプトの修正について説明しました。今回からサンプルスクリプトが同梱されるようになったことで、これまでスクリプトの作成に悩んでいた方も導入しやすくなったと思います。これを機に Pgpool-II の導入をぜひお試しください。