LoginSignup
2
0

More than 1 year has passed since last update.

PG16:show walsender's connected db for ps command entry

Last updated at Posted at 2022-12-13

はじめに

にゃーん。趣味でポスグレをやっている者だ。

この記事は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 processps 表示時に、データベース名が表示されるようになった

変更内容

まあ、概要に書いたそのままなのですが、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コマンドを実行したときの表示の改善について書きました。

でも、なんでこれのTopicMonitoring & ControlじゃなくてMiscellaneousなんだろう・・・?

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0