はじめに
にゃーん。趣味でポスグレをやっている者だ。
この記事はPostgreSQL 16 全部ぬこ Advent Calendar 2022 14日目の記事です。
今回はLinuxのps
コマンドで表示される、PostgreSQLプロセスの表示の改善について書いてみます。
概要
項目 | 内容 |
---|---|
タイトル | show walsender's connected db for ps command entry |
Topic | Miscellaneous |
ステータス | commited |
Last Modified | 2022-11-15 |
概要 |
walsender process の ps 表示時に、データベース名が表示されるようになった |
変更内容
まあ、概要に書いたそのままなのですが、PostgreSQL 16からはps
コマンドでロジカルレプリケーション接続中のwalsender process
にデータベース名が表示されるようになりました。
また、比較のために、ストリーミングレプリケーションプロトコルを使っているpg_basebackup
での接続時の例も示します。
例:論理レプリケーション
2つのインスタンス(publisher:port=10001, subscriber:port=10002, どちらのインスタンスにもtestdb
というデータベースを作成し、そのデータベース内にテーブルを作成してロジカルレプリケーションする簡単なモデルを動かします。
ロジカルレプリケーション接続されている状態で、ps
コマンドの結果を、walsender
でgrepった結果を見てみます。
PostgreSQL 15
PostgreSQL 15では、ps
結果のwalsenderプロセスの行にはデータベースtestdb
の情報は表示されません。
$ ps -ef | grep walsender
ec2-user 32590 32467 0 18:02 ? 00:00:00 postgres: walsender postgres 127.0.0.1(39594) START_REPLICATION
ec2-user 32605 27924 0 18:03 pts/4 00:00:00 grep --color=auto walsender
$
PostgreSQL 16
PostgreSQL 16からは、ps
結果のwalsender
プロセスの行にロジカルレプリケーションの接続先データベースtestdb
が表示されるようになりました。
$ ps -ef | grep walsender
ec2-user 337 32758 0 18:06 ? 00:00:00 postgres: walsender postgres testdb 127.0.0.1(39602) START_REPLICATION
ec2-user 341 27924 0 18:06 pts/4 00:00:00 grep --color=auto walsender
$
【参考】例:pg_basebackupユーティリティ
pg_basebackup
ユーティリティでは、ストリーミングレプリケーションのプロトコルを使っています。
なので、pg_basebackup
ユーティリティの実行中に、別ターミナルからps
コマンドの結果を確認してみました。
PostgreSQL 15
$ ps -ef | grep "walsender"
ec2-user 27876 5653 0 13:14 ? 00:00:00 postgres: walsender postgres [local] sending backup "pg_basebackup base backup"
ec2-user 27877 5653 0 13:14 ? 00:00:00 postgres: walsender postgres [local] streaming 0/2000110
ec2-user 27901 27680 0 13:15 pts/1 00:00:00 grep --color=auto walsender
$
pg_basebackup実行時中のwalsederプロセスには[local]
が接続先データベースとして表示されています。
PostgreSQL 16
ps -ef | grep "walsender"
ec2-user 28000 32064 0 13:19 ? 00:00:00 postgres: walsender postgres [local] sending backup "pg_basebackup base backup"
ec2-user 28001 32064 0 13:19 ? 00:00:00 postgres: walsender postgres [local] streaming 0/A000110
ec2-user 28004 27680 0 13:19 pts/1 00:00:00 grep --color=auto walsender
$
PostgreSQL 16でもpg_basebackup実行時中のwalsederプロセスには[local]
が接続先データベースとして表示されています。
おわりに
今回は論理レプリケーション中にps
コマンドを実行したときの表示の改善について書きました。
でも、なんでこれのTopic
がMonitoring & Control
じゃなくてMiscellaneous
なんだろう・・・?