その他
サービスの登録
PowerGres をサービスとして登録する手順は以下の通りです。 設定は root ユーザで行う必要があります。
systemd のバージョンが 246 以降の場合
-
予め用意されたUnitファイルをコピーします。
# cp /lib/systemd/system/powergresplus16.service /etc/systemd/system/(サービス名).service
サービスの追加設定用ディレクトリを作成し、設定ファイルを配置します。
# mkdir /etc/systemd/system/(サービス名).service.d # vi /etc/systemd/system/(サービス名).service.d/custom.conf
例えば、データベースディレクトリが /var/lib/pgsql/16/data、ポートが 5432 であれば、以下のように設定ファイルを編集します。
[Service] Environment=PGDATA=/var/lib/pgsql/16/data Environment=PGPORT=5432
- 以下のコマンドを実行し、システムの起動時に PowerGres サービスが自動的に起動するようにします。
# systemctl enable (サービス名) ln -s '/etc/systemd/system/(サービス名).service' '/etc/systemd/system/multi-user.target.wants/(サービス名).service'
複数のサービスを設定するには、異なるサービス名を指定し、上記と同じ手順で行います。
自動起動の設定が有効になっているかどうかを確認するには、以下のコマンドを実行します。
# systemctl is-enabled (サービス名) enabled
自動起動の設定を解除するには、以下のコマンドを実行します。
# systemctl disable (サービス名) rm '/etc/systemd/system/multi-user.target.wants/(サービス名).service'
systemd のバージョンが 246 より前の場合
-
以下のコマンドから、powergresplus16 サービスの設定を編集します。
# systemctl edit powergresplus16
例えば、データベースディレクトリが /var/lib/pgsql/16/data、ポートが 5432 とする場合、以下のように記載して保存します。
[Service] Environment=PGDATA=/var/lib/pgsql/16/data Environment=PGPORT=5432
- 以下のコマンドを実行し、システムの起動時に PowerGres サービスが自動的に起動するようにします。
# systemctl enable powergresplus16 ln -s '/etc/systemd/system/powergresplus16.service' '/etc/systemd/system/multi-user.target.wants/powergresplus16.service'
複数のサービスを設定するには、設定ファイルを異なるサービス名でコピーし、そのサービス名を指定し、上記と同じ手順で行います。
# cp /usr/lib/systemd/system/powergresplus16.service /usr/lib/systemd/system/《サービス名》.service
自動起動の設定が有効になっているかどうかを確認するには、以下のコマンドを実行します。
# systemctl is-enabled powergresplus16 enabled
自動起動の設定を解除するには、以下のコマンドを実行します。
# systemctl disable powergresplus16 rm '/etc/systemd/system/multi-user.target.wants/powergresplus16.service'
core ダンプ
PostgreSQL では、データベースサーバのプロセスがクラッシュすると、OS がデータディレクトリに巨大な core ファイルを出力します。 このファイルは障害の調査には必要なものですが、データベースを格納するディスクの容量を圧迫してしまいます。
PowerGres Plus は、core ファイルを任意のディレクトリに格納できます。 また、出力するデータを限定することにより、core ファイルを小さくすることもできます。 この機能は、Windows のミニダンプ (またはクラッシュダンプ) でも利用できます。
core ファイルを出力するディレクトリとサイズを制御するために次のパラメータが postgresql.conf に用意されています。
- core_directory (string)
-
core ファイルの出力先ディレクトリを絶対パスで指定します。 パラメータを指定しない場合、データディレクトリが指定されたものとみなします。 このパラメータはサーバ起動時のみ設定可能です。
- core_contents (enum)
-
core ファイルに含める内容を指定します。 none を指定した場合、core_directory の設定にかかわらず core ファイルをダンプしません。 minimum を指定した場合、共有メモリの内容を core ファイルにダンプしません。 full を指定した場合、すべての内容を core ファイルにダンプします。 デフォルトは minimum です。 このパラメータはサーバ起動時のみ設定可能です。
また、PowerGres Plus では確実に core を採取するために pg_ctl の -c オプションは無効となり、core_contents パラメータにのみ依存して core ファイルを採取します。
DB 情報取得ツール
DB 情報取得ツールは、PowerGres Plus に関するトラブル発生の際、調査 / 分析に必要なデータベース環境の情報を取得するためのツールです。
使用前の準備
DB 情報取得ツールの使用前に以下の設定を行ってください。
-
環境変数 PATH に、/opt/powergresplus16/bin を追加します。
-
環境変数 PGDATA に、データディレクトリを設定します。
-
環境変数 PGPORT に、通信ポート番号を設定します (省略した場合は 5432 になります)。
-
PowerGres Plus を起動します。
PowerGres Plus が停止している場合、取得できる情報が限定されます。
-
スーパーユーザ (root) のパスワードをひかえておきます。
一部の情報をスーパーユーザで取得するため、DB 情報取得ツール実行中にスーパーユーザのパスワードを求めてきます。
使用方法
スーパーユーザ以外の一般ユーザで、以下のコマンドを実行します。
% pgx_getenvdata [情報取得間隔(秒) 情報取得回数]
DB 情報取得ツールが取得する情報の一部は、複数回繰り返して取得することが可能です。
そうする場合は、第一パラメタに情報を取得する間隔を指定し、第二パラメタに情報を取得する回数を指定します。 これらを両方とも省略した場合、1 回だけ情報を取得します。 片方だけを省略することはできません。
複数回繰り返して取得することができる情報は、性能情報とコネクション情報、ロック情報です。
出力情報
DB 情報取得ツール実行時のカレントディレクトリに取得した情報を格納した圧縮ファイル (envdt{月日時分}.tar.gz) を出力します。
旧バージョンからの移行(バージョンアップ)
同一バージョン系列内の移行手順
同一バージョン系列内の移行の場合は、データベースクラスタや設定をそのまま引き継ぐことができるので、データのダンプ・リストアを行う必要はありません。 PowerGres Plus V16 を最新版にするだけで、データ、設定を引き継いで使用できます。
-
アップデートスクリプトを実行し、PowerGres Plus V16 を最新版にします。
# bash 《展開したPowerGresディレクトリ》/update.sh
-
使用許諾契約書の内容が表示されます。 よくお読みの上、同意される場合は「yes」と入力します。
Do you agree to the license terms (yes/no): yes
-
パッケージがアップデートされます。
Updating packages... ...(省略)
-
以下のメッセージが表示されれば、アップデートは完了です。
PowerGres Plus (Linux) 16 update completed.
-
サービスを再起動します。
PowerGres Plus V16 より前のバージョンからの移行
PowerGres Plus V16 より前のバージョンから移行する場合、データベースクラスタや設定は、そのままでは引き継ぐことができません。 いったんダンプ (バックアップ) を取り、こちらを V16 にてリストアする必要があります。
-
PowerGres Plus V16 をインストールします。
インストール方法については「インストールの手順」を参照して下さい。
-
ダンプを取得します。
稼働中の旧バージョンのデータベースクラスタに対して、新バージョンの pg_dumpall を使用してダンプを取得します。 以下のように実行します。
$ /opt/powergresplus16/bin/pg_dumpall -h localhost -U postgres > dumpall.sql
この際、他のユーザがアクセスできないようにアクセス制限 (pg_hba.conf を編集する等) をして下さい。
-
現在稼働中のサービスを停止します。
-
新たにデータベースクラスタを作成します。
PowerGres Plus V16 のデータベースクラスタを新たに作成します。 管理ツールで行う場合、PowerGres Administration Tool マニュアル「サーバの作成」を参照して下さい。
なお、新データベースクラスタを旧データベースクラスタと同じディレクトリパスに作成する場合は、旧データベースクラスタは移行が完了するまで削除せずに退避させることを推奨します。
-
新データベースクラスタでサービスを起動します。
管理ツールで行う場合、 PowerGres Administration Tool マニュアル「サーバの起動」を参照して下さい。
-
取得したダンプファイルからデータをリストアします。
ダンプファイルをリストアし、データを移行します。 管理ツールで行う場合、 PowerGres Administration Tool マニュアル「バックアップ・リストア」を参照して下さい。
旧バージョンで利用していたテーブル空間がダンプに含まれている場合、事前に旧バージョンで利用していたテーブル空間用のディレクトリの内容を削除もしくは退避させてください。
さらに透過的データ暗号化機能を利用しているテーブル空間がダンプに含まれている場合、予めキーストアのオープンが必要です。 管理ツールで行う場合、 PowerGres Administration Tool マニュアル「透過的データ暗号化」を参照して下さい。 コマンドライン上でキーストアの操作を行う場合はこちらを参照して下さい。
-
設定の移行をします。
設定の移行は、旧バージョンと新バージョン間でパラメータが異なる場合があるので、手動で行います。 パラメータ差異などを確認した上で、旧バージョンの設定ファイルを参考に新バージョンにて、適切な設定を行って下さい。 管理ツールで行う場合、PowerGres Administration Tool マニュアルの「設定」を参照して下さい。
-
旧バージョンをアンインストールします。
移行後は、旧バージョンのアンインストールを行ってください。
付属ソフトウェアのインストール
付属ソフトウェアのパッケージは手動でインストールする必要があります。 パッケージは OS ごとに用意されており、以下のディレクトリに格納されています。
| OS | ディレクトリ |
|---|---|
| Red Hat Enterprise Linux 9 Rocky Linux 9 AlmaLinux 9 |
《展開したPowerGresディレクトリ》/packages/el9-x86_64 |
| Red Hat Enterprise Linux 8 Rocky Linux 8 AlmaLinux 8 |
《展開したPowerGresディレクトリ》/packages/el8-x86_64 |
| Amazon Linux 2023 | (展開したPowerGresディレクトリ)/packages/amzn2023-x86_64 |
pg_ivm
pg_ivmは、マテリアライズドビューの機能に高速増分更新を実現したビュー(IMMV)機能を利用可能とする拡張モジュールです。 本モジュールの機能の詳細につきましては pg_ivm の 開発ページ をご覧ください。
-
pg_ivm の RPM パッケージをインストール
-
pg_ivm 拡張を有効化
psql コマンドラインより、以下を実行します。
=# CREATE EXTENSION pg_ivm; CREATE EXTENSION =# \dx List of installed extensions Name | Version | Schema | Description ---------+---------+------------+-------------------------------------------- pg_ivm | 1.11 | pg_catalog | incremental view maintenance on PostgreSQL plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language (2 rows) -
動作確認
=# CREATE TABLE t1 (i int primary key); CREATE TABLE =# SELECT pgivm.create_immv('v1', 'SELECT * FROM t1'); NOTICE: created index "v1_index" on immv "v1" create_immv ------------- 0 (1 row) =# INSERT INTO t1 VALUES (1); INSERT 0 1 =# SELECT * FROM v1; i --- 1 (1 row)以上のように、動作を確認することができます。
PowerGres 本体インストールと同時にインストールされます。
PostGIS
PostGIS は地理情報を取り扱うためのモジュールです。
機能の詳細につきましては PostGIS プロジェクトの ホームページ をご覧ください。
※ Amazon Linux 2023 は PostGIS パッケージに対応していません。
-
PostGIS の RPM パッケージをインストール
PostGIS は PGDG および EPEL 提供のパッケージに依存しています。 あらかじめ PGDG および EPEL の Yum リポジトリを追加しておく必要があります。 それぞれのレポジトリを有効にする手順はこちらをご覧ください。
レポジトリを有効にしたら、コマンドラインより以下を実行します。
# cd (パッケージの格納先のディレクトリ) # yum install powergresplus16-postgis《バージョン》_16-*
-
PostGIS のデータ型や関数を作成
psql コマンドラインより、以下を実行します。(\c はデータベース名指定)
=# \c 《データベース名》 データベース "《データベース名》" にユーザ"postgres"として接続しました。 =# \encoding UTF8 =# CREATE EXTENSION postgis; CREATE EXTENSION =# CREATE EXTENSION postgis_topology; CREATE EXTENSION
-
動作確認
=# \d List of relations Schema | Name | Type | Owner ----------+-------------------+----------+---------- public | geography_columns | view | postgres public | geometry_columns | view | postgres public | spatial_ref_sys | table | postgres topology | layer | table | postgres topology | topology | table | postgres topology | topology_id_seq | sequence | postgres (6 rows) =# SELECT postgis_version(); postgis_version --------------------------------------- 3.6 USE_GEOS=1 USE_PROJ=1 USE_STATS=1 (1 row)以上のように動作を確認することができます。
- 注意
-
予め ogdi がインストールされている環境では CREATE EXTENSION 時に以下のようなエラーが発生する可能性があります。
=# CREATE EXTENSION postgis; ERROR: could not load library "/opt/powergresplus16/lib/rtpostgis-2.5.so": /usr/gdal23/lib/libgdal.so.20: undefined symbol: ecs_SetReportErrorFunctionogdi のバージョンが古いことが原因ですので PGDG レポジトリよりインストールを行ってください。
# yum install ogdi
textsearch_ja
textsearch_ja は形態素解析 (MeCab) を使用した日本語全文検索です。
-
textsearch_ja, mecab の RPM パッケージをインストール
コマンドラインより、以下を実行します。
# cd 《パッケージの格納先ディレクトリ》 # yum install powergresplus16-textsearch_ja-* powergresplus16-mecab-* 準備しています... ################################# [100%] 更新中 / インストール中... 1:powergresplus16-mecab-0.996-2.el7################################# [ 33%] 2:powergresplus16-textsearch_ja-9.0################################# [ 67%] 3:powergresplus16-mecab-ipadic-2.7.################################# [100%]
-
拡張 textsearch_ja のインストール
psql コマンドラインより、以下を実行します。(\c はデータベース名指定)
=# \c 《データベース名》 データベース "《データベース名》" にユーザ"postgres"として接続しました。 =# CREATE EXTENSION textsearch_ja; CREATE EXTENSION
-
動作確認
=# SELECT to_tsvector('japanese', 'すもももももももものうち'); to_tsvector ----------------------- 'すもも':1 'もも':2,3 (1 行)以上のように動作を確認することができます。 デフォルトの状態では UTF8 のデータベースで使用できます。
pg_bigm
機能の詳細につきましては pg_bigm プロジェクトの ホームページ をご覧ください。-
pg_bigm の RPM パッケージをインストール
コマンドラインより、以下を実行します。
# cd 《パッケージの格納先ディレクトリ》 # yum install powergresplus16-pg_bigm-* 準備しています... ################################# [100%] 更新中 / インストール中... 1:powergresplus16-pg_bigm-1.2.20161################################# [100%]
-
拡張 pg_bigm のインストール
psql コマンドラインより、以下を実行します (\c はデータベース名指定)。
=# \c 《データベース名》 データベース "《データベース名》" にユーザ"postgres"として接続しました。 =# CREATE EXTENSION pg_bigm; CREATE EXTENSION
-
動作確認
=# SELECT show_bigm('PostgreSQLの全文検索'); show_bigm ----------------------------------------------------------------- {の全,全文,文検,検索,"索 "," P",Lの,Po,QL,SQ,eS,gr,os,re,st,tg} (1 行)以上のように動作を確認することができます。
eudc
eudc は外字(ユーザー定義文字)を文字エンコーディング変換するための拡張モジュールです。 機能の詳細につきましては eudc の 開発ページ をご覧ください。
-
eudc の RPM パッケージをインストール
コマンドラインより、以下を実行します。
# cd (パッケージの格納先のディレクトリ) # rpm -ivh powergresplus16-eudc-*
-
eudc 拡張を有効化
psql コマンドラインより、以下を実行します。(\c はデータベース名指定)
=# \c (データベース名) You are now connected to database "(データベース名)" as user "postgres". =# CREATE EXTENSION eudc; WARNING: Perform "SELECT disable_eudc(); DROP EXTENSION eudc;" to drop this extension. DETAIL: The 4 system conversions (sjis_to_utf8, utf8_to_sjis, euc_jp_to_utf8, utf8_to_euc_jp) should be reset as default. CREATE EXTENSION
-
文字コード変換に eudc 関数が使われるように設定
=# SELECT enable_eudc(); enable_eudc ------------- (1 row)
-
動作確認
=# SELECT * FROM show_eudc(); Conversion Function | Source | Destination | Is Default? ---------------------+--------+-------------+------------- sjis_eudc_to_utf8 | SJIS | UTF8 | yes utf8_to_sjis_eudc | UTF8 | SJIS | yes euc_jp_eudc_to_utf8 | EUC_JP | UTF8 | yes utf8_to_euc_jp_eudc | UTF8 | EUC_JP | yes (4 rows)
以上のように動作を確認することができます。
pgvector
pgvector はベクトル類似度検索のための拡張モジュールです。 機械学習やAI分野で使用されるベクトルデータ型とベクトル間の類似度検索機能を提供します。 機能の詳細につきましては pgvector の 開発ページ をご覧ください。
-
pgvector の RPM パッケージをインストール
コマンドラインより、以下を実行します。
# cd (パッケージの格納先のディレクトリ) # rpm -ivh powergresplus16-pgvector-*
-
pgvector 拡張を有効化
psql コマンドラインより、以下を実行します。(\c はデータベース名指定)
=# \c (データベース名) You are now connected to database "(データベース名)" as user "postgres". =# CREATE EXTENSION vector; CREATE EXTENSION
-
動作確認
=# SELECT '[10.1, 2.1, 0.4]'::vector <#> '[10.0, 2, 0.3]'::vector; ?column? --------------------- -105.31999969482422 (1 row)以上のように動作を確認することができます。
pgvectorscale
pgvectorscale はpgvectorを拡張した高性能なベクトル検索のための拡張モジュールです。 大規模なベクトルデータセットに対する高速検索とDiskANNアルゴリズムによる効率的なインデックス機能を提供します。 機能の詳細につきましては pgvectorscale の 開発ページ をご覧ください。
※ pgvectorscale は pgvector に依存しています。先に pgvector をインストールしてください。
-
pgvectorscale の RPM パッケージをインストール
コマンドラインより、以下を実行します。
# cd (パッケージの格納先のディレクトリ) # rpm -ivh powergresplus16-pgvectorscale-*
-
pgvectorscale 拡張を有効化
psql コマンドラインより、以下を実行します。(\c はデータベース名指定)
=# \c (データベース名) You are now connected to database "(データベース名)" as user "postgres". =# CREATE EXTENSION vectorscale; CREATE EXTENSION
-
動作確認
=# CREATE TABLE documents ( id SERIAL PRIMARY KEY, embedding VECTOR(1536), labels SMALLINT[], -- Array of category labels status TEXT, created_at TIMESTAMPTZ ); CREATE TABLE =# CREATE INDEX ON documents USING diskann (embedding vector_cosine_ops, labels); NOTICE: Starting index build with num_neighbors=-1, search_list_size=100, max_alpha=1.2, storage_layout=SbqCompression. WARNING: Indexed 0 tuples CREATE INDEX以上のように動作を確認することができます。
pgAudit
pgAudit はPostgreSQLの監査機能を提供する拡張モジュールです。 データベースの操作ログを詳細に記録し、セキュリティ監査やコンプライアンス要件への対応に利用できます。 機能の詳細につきましては pgAudit の 開発ページ をご覧ください。
-
pgAudit の RPM パッケージをインストール
コマンドラインより、以下を実行します。
# cd (パッケージの格納先のディレクトリ) # rpm -ivh powergresplus16-pgaudit-*
-
pgAudit 拡張を有効化
psql コマンドラインより、以下を実行します。(\c はデータベース名指定)
=# \c (データベース名) You are now connected to database "(データベース名)" as user "postgres". =# CREATE EXTENSION pgaudit; CREATE EXTENSION
-
postgresql.confの設定
監査ログを有効にするため、以下の手順でPostgreSQLの設定ファイルを編集します。
- データディレクトリ内の postgresql.conf ファイルをテキストエディタで開きます。
- shared_preload_libraries パラメータに pgaudit を追加します:
shared_preload_libraries = 'pgaudit' # 既存の設定がある場合はカンマ区切りで追加
- セッション単位の監査ログを出力するため、以下の設定を追加します:
pgaudit.log = 'ALL' # すべての操作を監査ログに記録
- 設定ファイルを保存して閉じます。
- 設定を反映するため、PowerGresサービスを再起動します。
-
動作確認
=# SELECT 'pgAudit Test'; ?column? -------------- pgAudit Test (1 row)
この操作により、PostgreSQLのログファイルに以下のような監査ログが出力されます。
2025-06-05 14:49:55.868 JST psql[8528] LOG: AUDIT: SESSION,1,1,READ,SELECT,,,SELECT 'pgAudit Test',<not logged>
以上のように動作を確認することができます。
レポジトリの有効化手順
各ソフトウェアインストールに必要となるレポジトリの有効化手順を以下に示します。 ※ Amazon Linux 2023 は PGDG リポジトリと EPEL レポジトリに対応していません。
PGDG レポジトリ
# dnf install https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %rhel)-$(rpm -E %_arch)/pgdg-redhat-repo-latest.noarch.rpm
EPEL レポジトリ
RHEL 9 の場合
# subscription-manager repos --enable codeready-builder-for-rhel-9-$(arch)-rpms # dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
Rocky Linux 9, AlmaLinux 9 の場合
# dnf config-manager --enable crb # dnf install epel-release
RHEL 8 の場合
# subscription-manager repos --enable codeready-builder-for-rhel-8-$(arch)-rpms # dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
Rocky Linux 8, AlmaLinux 8 の場合
# dnf config-manager --set-enabled powertools # dnf install epel-release
お問い合わせ
株式会社SRA OSS
powergres-sales@sraoss.co.jp