その他

サービスの登録

PowerGres をサービスとして登録する手順は以下の通りです。 設定は root ユーザで行う必要があります。

※コンテナ上のマシンで特定のバージョンの systemd をお使いの際、 systemctl stop を実行するとハングアップするケースがあります。その場合は物理マシンか仮想マシンをお使いください。

systemd のバージョンが 246 以降の場合

  1. 予め用意されたUnitファイルをコピーします。

    cp /lib/systemd/system/powergres17.service /etc/systemd/system/(サービス名).service
    

    サービスの追加設定用ディレクトリを作成し、設定ファイルを配置します。

    mkdir /etc/systemd/system/(サービス名).service.d
    vi /etc/systemd/system/(サービス名).service.d/custom.conf
    

    例えば、データベースディレクトリが /var/lib/pgsql/17/data、ポートが 5432 であれば、以下のように設定ファイルを編集します。

    [Service]
    Environment=PGDATA=/var/lib/pgsql/17/data
    Environment=PGPORT=5432
    
  2. 以下のコマンドを実行し、システムの起動時に 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 より前の場合

  1. 以下の設定ファイルを作成し、データベースディレクトリとポートを指定します。

    /etc/systemd/system/(サービス名).service
    

    例えば、データベースディレクトリが /var/lib/pgsql/17/data、ポートが 5432 であれば、以下のように設定ファイルを編集します。

    .include /lib/systemd/system/powergres17.service
    
    [Service]
    Environment=PGDATA=/var/lib/pgsql/17/data
    Environment=PGPORT=5432
    
  2. 以下のコマンドを実行し、システムの起動時に 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'

旧バージョンからの移行(バージョンアップ)

旧バージョンからの移行は、同一バージョン系列内の移行 (例えば、V17 から V17 Update 1) と、PowerGres V17 より前のバージョンからの移行 (例えば、V15 から V17) によって方法が異なります。

同一バージョン系列内の移行手順

同一バージョン系列内の移行の場合は、データベースクラスタや設定をそのまま引き継ぐことができるので、データのダンプ・リストアを行う必要はありません。 PowerGres V17 を最新版にするだけで、データ、設定を引き継いで使用できます。

  1. アップデートスクリプトを実行し、PowerGres V17 を最新版にします。

    # sh (展開したPowerGresディレクトリ)/update.sh
    
  2. 使用許諾契約書の内容が表示されます。 よくお読みの上、同意される場合は「yes」と入力します。

    Do you agree to the license terms (yes/no): yes
    
  3. パッケージがアップデートされます。

    Updating packages...
    ...(省略)
    

    以下の警告が出力される場合がありますが、とくに問題はないので無視してください。

    警告: /etc/sysconfig/powergres17/pwg_license_key.conf は /etc/sysconfig/powergres17/pwg_license_key.conf.rpmnew として作成されました。
    
  4. 以下のメッセージが表示されれば、アップデートは完了です。

    PowerGres on Linux 17 update completed.
    
  5. サービスを再起動します。

PowerGres V17 より前のバージョンからの移行

PowerGres V17 より前のバージョンから移行する場合、データベースクラスタや設定は、そのままでは引き継ぐことができません。 いったんダンプ (バックアップ) を取り、こちらを V17 にてリストアする必要があります。

  1. PowerGres V17 をインストールします。

    インストール方法については「インストールの手順」を参照して下さい。

  2. ダンプを取得します。

    稼働中の旧バージョンのデータベースクラスタに対して、新バージョンの pg_dumpall を使用してダンプを取得します。 以下のように実行します。

    $ /opt/powergres17/bin/pg_dumpall -h localhost -U postgres > dumpall.sql
    

    この際、他のユーザがアクセスできないようにアクセス制限 (pg_hba.conf を編集する等) をして下さい。

  3. 現在稼働中のサービスを停止します。

  4. 新たにデータベースクラスタを作成します。

    PowerGres V17 のデータベースクラスタを新たに作成します。 管理ツールで行う場合、PowerGres Administration Tool マニュアル「サーバの作成」を参照して下さい。

    なお、新データベースクラスタを旧データベースクラスタと同じディレクトリパスに作成する場合は、旧データベースクラスタは移行が完了するまで削除せずに退避させることを推奨します。

  5. 新データベースクラスタでサービスを起動します。

    管理ツールで行う場合、PowerGres Administration Tool マニュアル「サーバの起動」を参照して下さい。

  6. 取得したダンプファイルからデータをリストアします。

    ダンプファイルをリストアし、データを移行します。 管理ツールで行う場合、PowerGres Administration Tool マニュアル「バックアップ・リストア」を参照して下さい。

  7. 設定の移行をします。

    設定の移行は、旧バージョンと新バージョン間でパラメータが異なる場合があるので、手動で行います。 パラメータ差異などを確認した上で、旧バージョンの設定ファイルを参考に新バージョンにて、適切な設定を行って下さい。 管理ツールで行う場合、PowerGres Administration Tool マニュアルの「設定」を参照して下さい。

  8. 旧バージョンをアンインストールします。

    移行後は、旧バージョンのアンインストールを行ってください。

付属ソフトウェアのインストール

付属ソフトウェアのパッケージは手動でインストールする必要があります。 パッケージは 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 の 開発ページ をご覧ください。

  1. pg_ivm の RPM パッケージをインストール

  2. PowerGres 本体インストールと同時にインストールされます。

  3. 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)
    
    
  4. 動作確認

    =# 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)
    
    

    以上のように、動作を確認することができます。

PostGIS

PostGIS は地理情報を取り扱うためのモジュールです。 機能の詳細につきましては PostGIS プロジェクトの ホームページ をご覧ください。
※ Amazon Linux 2023 は PostGIS に対応していません。

  1. PostGIS の RPM パッケージをインストール

    PostGIS は PGDG および EPEL 提供のパッケージに依存しています。 あらかじめ PGDG および EPEL の Yum リポジトリを追加しておく必要があります。 それぞれのレポジトリを有効にする手順はこちらをご覧ください。

    レポジトリを有効にしたら、コマンドラインより以下を実行します。

    Amazon Linux 2 以外の場合

    # cd (パッケージの格納先のディレクトリ)
    # yum install powergres17-postgis《バージョン》_17-*
    

    Amazon Linux 2 の場合

    # rpm -ivh --replacepkgs --replacefiles http://mirror.centos.org/centos/7/os/x86_64/Packages/boost-serialization-1.53.0-28.el7.x86_64.rpm
    # cd (パッケージの格納先のディレクトリ)
    # yum install --disableplugin=priorities powergres17-postgis《バージョン》_17-*
    
  2. PostGIS のデータ型や関数を作成

    psql コマンドラインより、以下を実行します。(\c はデータベース名指定)

    =# \c (データベース名)
    You are now connected to database "(データベース名)" as user "postgres".
    =# \encoding UTF8
    =# CREATE EXTENSION postgis;
    CREATE EXTENSION
    =# CREATE EXTENSION postgis_topology;
    CREATE EXTENSION
    
  3. 動作確認

    =# \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.4 USE_GEOS=1 USE_PROJ=1 USE_STATS=1
    (1 row)
    

    以上のように動作を確認することができます。

textsearch_ja

textsearch_ja は形態素解析 (MeCab) を使用した日本語全文検索です。

  1. textsearch_ja, mecab の RPM パッケージをインストール

    コマンドラインより、以下を実行します。

    # cd (パッケージの格納先のディレクトリ)
    # rpm -ivh powergres17-textsearch_ja-* powergres17-mecab-*
    
  2. 拡張 textsearch_ja のインストール

    psql コマンドラインより、以下を実行します。(\c はデータベース名指定)

    =# \c (データベース名)
    You are now connected to database "(データベース名)" as user "postgres".
    =# CREATE EXTENSION textsearch_ja;
    CREATE EXTENSION
    
  3. 動作確認

    =# SELECT to_tsvector('japanese', 'すもももももももものうち');
          to_tsvector
    -----------------------
     'すもも':1 'もも':2,3
    (1 row)
    

    以上のように動作を確認することができます。 デフォルトの状態では UTF8 のデータベースで使用できます。

pg_bigm

pg_bigm は 2-gram (バイグラム) による全文検索モジュールです。 機能の詳細につきましては pg_bigm プロジェクトの ホームページ をご覧ください。

  1. pg_bigm の RPM パッケージをインストール

    コマンドラインより、以下を実行します。

    # cd (パッケージの格納先のディレクトリ)
    # rpm -ivh powergres17-pg_bigm-*
    
  2. 拡張 pg_bigm のインストール

    psql コマンドラインより、以下を実行します (\c はデータベース名指定)。

    =# \c (データベース名)
    データベース "(データベース名)" にユーザ"postgres"として接続しました。
    =# CREATE EXTENSION pg_bigm;
    CREATE EXTENSION
    
  3. 動作確認

    =# SELECT show_bigm('PostgreSQLの全文検索');
                                show_bigm
    -----------------------------------------------------------------
     {の全,全文,文検,検索,"索 "," P",Lの,Po,QL,SQ,eS,gr,os,re,st,tg}
    (1 行)
    

    以上のように動作を確認することができます。

eudc

eudc は外字(ユーザー定義文字)を文字エンコーディング変換するための拡張モジュールです。 機能の詳細につきましては eudc の 開発ページ をご覧ください。

  1. eudc の RPM パッケージをインストール

    コマンドラインより、以下を実行します。

    # cd (パッケージの格納先のディレクトリ)
    # rpm -ivh powergres17-eudc-*
    
  2. 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
    
  3. 文字コード変換に eudc 関数が使われるように設定

    =# SELECT enable_eudc();
     enable_eudc
    -------------
    
    (1 row)
    
  4. 動作確認

    =# 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 の 開発ページ をご覧ください。

  1. pgvector の RPM パッケージをインストール

    コマンドラインより、以下を実行します。

    # cd (パッケージの格納先のディレクトリ)
    # rpm -ivh powergres17-pgvector-*
    
  2. pgvector 拡張を有効化

    psql コマンドラインより、以下を実行します。(\c はデータベース名指定)

    =# \c (データベース名)
    You are now connected to database "(データベース名)" as user "postgres".
    =# CREATE EXTENSION vector;
    CREATE EXTENSION
    
  3. 動作確認

    =# 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 をインストールしてください。

  1. pgvectorscale の RPM パッケージをインストール

    コマンドラインより、以下を実行します。

    # cd (パッケージの格納先のディレクトリ)
    # rpm -ivh powergres17-pgvectorscale-*
    
  2. pgvectorscale 拡張を有効化

    psql コマンドラインより、以下を実行します。(\c はデータベース名指定)

    =# \c (データベース名)
    You are now connected to database "(データベース名)" as user "postgres".
    =# CREATE EXTENSION vectorscale;
    CREATE EXTENSION
    
  3. 動作確認

    =# 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 の 開発ページ をご覧ください。

  1. pgAudit の RPM パッケージをインストール

    コマンドラインより、以下を実行します。

    # cd (パッケージの格納先のディレクトリ)
    # rpm -ivh powergres17-pgaudit-*
    
  2. pgAudit 拡張を有効化

    psql コマンドラインより、以下を実行します。(\c はデータベース名指定)

    =# \c (データベース名)
    You are now connected to database "(データベース名)" as user "postgres".
    =# CREATE EXTENSION pgaudit;
    CREATE EXTENSION
    
  3. postgresql.confの設定

    監査ログを有効にするため、以下の手順でPostgreSQLの設定ファイルを編集します。

    1. データディレクトリ内の postgresql.conf ファイルをテキストエディタで開きます。
    2. shared_preload_libraries パラメータに pgaudit を追加します:
      shared_preload_libraries = 'pgaudit'  # 既存の設定がある場合はカンマ区切りで追加
      
    3. セッション単位の監査ログを出力するため、以下の設定を追加します:
      pgaudit.log = 'ALL'  # すべての操作を監査ログに記録
      
    4. 設定ファイルを保存して閉じます。
    5. 設定を反映するため、PowerGresサービスを再起動します。
  4. 動作確認

    =# 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

CentOS 8, Rocky Linux 8, AlmaLinux 8 の場合

# dnf config-manager --set-enabled powertools
# dnf install epel-release

お問い合わせ

販売・サポートサービスに関するお問い合わせ

株式会社SRA OSS
powergres-sales@sraoss.co.jp

※技術的なお問い合わせはご契約された技術サポート窓口にお問い合わせください。