Postgresの統計情報取得ツールpg_statsinfoをためしてみました。
参考)
https://www.sraoss.co.jp/tech-blog/pgsql/pg_statsinfo/
https://github.com/ossc-db/pg_statsinfo/blob/main/doc/pg_statsinfo-ja.md
環境) PostgreSQL 13 & pg_statsinfo 13 / CentOS 7 / Docker / WSL2
CentOSを使った理由は、参考サイトにrpmのインストール方法しかないのもありますが、Redhat互換のCentOSのサポートが終了することから、この環境を押さえておきたいからです。(Redhatは初めて使ったLinuxでしたが、その後様々なディストリビューションがでできてからは、結果的にUbuntuを使うことが多くなりました。業務ではRedhatが多いことからもその流儀を復習したいということもあります。)
docker pull centos:8
docker run -it -d –name centos8 centos:8
docker exec -it centos8 /bin/bash
早速問題が発生しました。CentOS8はすでにサポート終了しているため、パッケージマネージャーのリポジトリが使えません。(dnfコマンドでエラー)
ミラーにアクセスする部分をbaseに書き換えればいいという情報もありましたが、うまくいかずver7にしました。
しかしながら上記の方法では、サービスの起動に権限がないというエラーがでましたので、Dockerfileからビルドする方法にします。
参考) https://www.opensourcetech.tokyo/entry/20190222/1550822082
Dockerfile
docker build –rm -t centos7 .
docker run –privileged -it -d –name centos7p centos7
ここからコンテナに入ります。(楽してDokerDesktopから)
ver7はdnfがインストールされていないためyumでインストール
参考) https://qiita.com/piyojiro/items/58f9a89120808e1c1e84
yum -y install wget
yum -y install epel-release
yum -y install dnf
ネットワークツールのインストール
dnf install net-tools
ロケールも設定
export LC_ALL=C
Postgresのインストール
参考) https://qiita.com/yasushi-jp/items/7e4187bc3ca3bff75b93
dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
dnf install -y postgresql13-server
初期化
/usr/pgsql-13/bin/postgresql-13-setup initdb
サービス登録
systemctl enable postgresql-13
systemctl start postgresql-13
reporterの閲覧で使うWebサーバも登録(デフォルトでインストール済)
systemctl start httpd
systemctl enable httpd
サービス一覧
systemctl list-units –type=service –all
postgresユーザパスワード設定
# su – postgres
$ psql
psql (13.11)
postgres=# alter role postgres with password ‘postgres’;
ALTER ROLE
いよいよpg_statsinfo、pg_stats_reporterのインストールをします。
wget -O pg_statsinfo-13.0-1.pg13.rhel7.x86_64.rpm –no-check-certificate https://sourceforge.net/projects/pgstatsinfo/files/pg_statsinfo/13.0/pg_statsinfo-13.0-1.pg13.rhel7.x86_64.rpm/download
dnf install pg_statsinfo-13.0-1.pg13.rhel7.x86_64.rpm
wget -O pg_stats_reporter-13.0-1.el7.noarch.rpm –no-check-certificate https://sourceforge.net/projects/pgstatsinfo/files/pg_stats_reporter/13.0/pg_stats_reporter-13.0-1.el7.noarch.rpm/download
dnf install pg_stats_reporter-13.0-1.el7.noarch.rpm
Postgres設定追加
vi /var/lib/pgsql/13/data/postgresql.conf
vi /var/lib/pgsql/13/data/pg_hba.conf
(172.17.0.1/24は、コンテナ内のネットワーク。外部からアクセスするため)
Reporter設定編集
vi /etc/pg_stats_reporter.ini
Postgres再起動
systemctl restart postgresql-13
レポートの取得
/usr/pgsql-13/bin/pg_statsinfo -l
/usr/pgsql-13/bin/pg_statsinfo -r ALL
(大量の表示を確認)
実際は前後が違ったり、ここにかかれていないことをやったりしましたが、ここまで急いでまとめました。(一気にまとめないと忘れてしまうので)
Webレポートやdockerの外からpsqlするためにポート設定が必要ですが、途中で思い出したため、一旦コンテナをイメージ化してから再度起動しました。
docker ps
docker commit 3c7716619a72 centos7p:0.0.1
docker run –privileged -it -d -p 5432:5432 -p 80:80 –name centos7p3 centos7p:0.0.1
取得したレポートについてはまた次の機会に調べたいと思います。