データベースサーバー(PostgreSQL 16)のインストールと設定

データベースサーバー(PostgreSQL 16)のインストールと設定についての説明です。

ここではお使いのサーバーに、『PostgreSQL 16』をインストールする手順を説明します。

インストール前にご一読ください

PostgreSQLは、本格的なオープンソースRDBMS(Relational Database Management System)です。

PostgreSQLに関する詳細は、「日本PostgreSQLユーザー会」の公式サイトをご参照ください。

ご注意

ChatLuckでご利用いただけるPostgreSQLのバージョンは、「動作環境」をご確認の上、インストールを行ってください。

これからインストールを行うサーバー上に、既に別バージョンのPostgreSQLがインストールされていると、予期しない結果となり、ChatLuckが正しく稼動しない場合がありますので、インストール前に必ずシステム状態をご確認ください。

1. パッケージソースの展開

suコマンドにて、rootユーザーにスイッチしてください。

[guest@xxxxxx guest]$ su -
Password:

 

ダウンロードサイトからダウンロードしたPostgreSQLのパッケージソースを展開します。ここでは、guestユーザーのホームディレクトリにあるものとします。

[root@xxxxxx guest]# cd /usr/local/src
[root@xxxxxx src]# tar zxvf /home/guest/postgresql-16.3.tar.gz

展開が完了すると、/usr/local/srcディレクトリ下に「postgresql-16.3」というディレクトリが作成されます。

 

2. パッケージのインストール

インストールするサーバー環境による構成を行います。

[root@xxxxxx guest]# cd postgresql-16.3
[root@xxxxxx postgresql-16.3]# ./configure --prefix /usr/local/pgsql16.3 --without-icu

 ・

 ・(中略)

 ・

configure: using LDFLAGS= -Wl,--as-needed
configure: creating ./config.status
config.status: creating GNUmakefile
config.status: creating src/Makefile.global
config.status: creating src/include/pg_config.h
config.status: creating src/include/pg_config_ext.h
config.status: creating src/interfaces/ecpg/include/ecpg_config.h
config.status: linking src/backend/port/tas/dummy.s to src/backend/port/tas.s
config.status: linking src/backend/port/posix_sema.c to src/backend/port/pg_sema.c
config.status: linking src/backend/port/sysv_shmem.c to src/backend/port/pg_shmem.c
config.status: linking src/include/port/linux.h to src/include/pg_config_os.h
config.status: linking src/makefiles/Makefile.linux to src/Makefile.port

[root@xxxxxx postgresql-16.3]#

サーバー上に不足しているパッケージなどがある場合、ここで構成エラーが発生しますので、不足しているパッケージを追加インストールするなどのご対応をお願いいたします。

 

次に、パッケージのコンパイルを行います。ここではGNU makeコマンドを使用してコンパイルします。

コンパイルは、お使いのハードウェアスペックにより、数分から数十分を要しますので、完了までお待ちください。

[root@xxxxxx postgresql-16.3]# gmake


・(中略)

gmake[2]: Leaving directory '/usr/local/src/postgresql-16.3/src/test/isolation'
gmake -C test/perl all
gmake[2]: Entering directory '/usr/local/src/postgresql-16.3/src/test/perl'
gmake[2]: Nothing to be done for 'all'.
gmake[2]: Leaving directory '/usr/local/src/postgresql-16.3/src/test/perl'
gmake[1]: Leaving directory '/usr/local/src/postgresql-16.3/src'
gmake -C config all
gmake[1]: Entering directory '/usr/local/src/postgresql-16.3/config'
gmake[1]: Nothing to be done for 'all'.
gmake[1]: Leaving directory '/usr/local/src/postgresql-16.3/config'
[root@xxxxxx postgresql-16.3]#

 

コンパイルが完了したら、インストールを行う前に、PostgreSQLが正しく動作するかを検証するためにリグレッションテストを行います。

リグレッションテストは、rootユーザーでは実行することができませんので、rootユーザー以外のユーザーにスイッチします。(ここでは「guest」ユーザーで実行します。)

[root@xxxxxx postgresql-16.3]# su guest

[guest@xxxxxx postgresql-16.3]$ gmake check

・(中略)

ok 205        + partition_aggregate                  1083 ms
ok 206        + partition_info                             172 ms
ok 207        + tuplesort                                  1374 ms
ok 208        + explain                                      190 ms
ok 209        + compression                              330 ms
ok 210        + memoize                                   214 ms
ok 211        + stats                                       2805 ms
# parallel group (2 tests): oidjoins event_trigger
ok 212        + event_trigger                             260 ms
ok 213        + oidjoins                                     154 ms
ok 214        - fast_default                                309 ms
ok 215        - tablespace                                  622 ms
1..215
# All 215 tests passed.
gmake[1]: Leaving directory '/usr/local/src/postgresql-16.3/src/test/regress'
[guest@xxxxxx postgresql-16.3]$

"All 215 tests passed."のように表示されればテストが正しく完了していますので、インストールを行います。

 

インストールは、rootユーザーで行います。先ほどスイッチした「guest」ユーザーから戻します。

[guest@xxxxxx postgresql-16.3]$ exit

[root@xxxxxx postgresql-16.3]# gmake install

・(中略)

gmake[1]: Leaving directory '/usr/local/src/postgresql-16.3/src'
gmake -C config install
gmake[1]: Entering directory '/usr/local/src/postgresql-16.3/config'
/usr/bin/mkdir -p '/usr/local/pgsql16.3/lib/pgxs/config'
/usr/bin/install -c -m 755 ./install-sh '/usr/local/pgsql16.3/lib/pgxs/config/install-sh'
/usr/bin/install -c -m 755 ./missing '/usr/local/pgsql16.3/lib/pgxs/config/missing'
gmake[1]: Leaving directory '/usr/local/src/postgresql-16.3/config'
[root@xxxxxx postgresql-16.3]#

 

次に、ログ収集を利用するため、PostgreSQLの"postgres_fdw"機能をコンパイルします。

[root@xxxxxx postgresql-16.3]# cd contrib/postgres_fdw

[root@xxxxxx postgres_fdw]# gmake


・(中略)

gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wimplicit-fallthrough=3 -Wcast-function-type -Wshadow=compatible-local -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -Wno-format-truncation -Wno-stringop-truncation -O2 -fPIC -fvisibility=hidden -I../../src/interfaces/libpq -I. -I. -I../../src/include -D_GNU_SOURCE -c -o shippable.o shippable.c
gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wimplicit-fallthrough=3 -Wcast-function-type -Wshadow=compatible-local -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -Wno-format-truncation -Wno-stringop-truncation -O2 -fPIC -fvisibility=hidden -shared -o postgres_fdw.so connection.o deparse.o option.o postgres_fdw.o shippable.o -L../../src/port -L../../src/common -L../../src/interfaces/libpq -lpq -Wl,--as-needed -Wl,-rpath,'/usr/local/pgsql16.3/lib',--enable-new-dtags -fvisibility=hidden

[root@xxxxxx postgres_fdw]#

 

コンパイルが完了したら、インストールします。

[root@xxxxxx postgres_fdw]# gmake install


・(中略)

/usr/bin/install -c -m 755 postgres_fdw.so '/usr/local/pgsql16.3/lib/postgres_fdw.so'
/usr/bin/install -c -m 644 ./postgres_fdw.control '/usr/local/pgsql16.3/share/extension/'
/usr/bin/install -c -m 644 ./postgres_fdw--1.0.sql ./postgres_fdw--1.0--1.1.sql '/usr/local/pgsql16.3/share/extension/'

[root@xxxxxx postgres_fdw]#

 

最後に、パッケージのコンパイルで生成されたオブジェクトファイルを削除することで、使用しているディスク容量を空けることができますので、必要に応じて実行してください。

[root@xxxxxx postgres_fdw]# cd ../..

[root@xxxxxx postgresql-16.3]# gmake clean

 

3. データベース管理ユーザーの設定

postgresユーザーの環境変数に、PostgreSQL 16.3コマンドまでのパスを通します。

viコマンドで「.bash_profile」を開き、PATH変数を編集します。

[root@xxxxxx postgresql-16.3]# cd /home/postgres

[root@xxxxxx postgres]# vi .bash_profile

環境変数「PATH」を以下のように編集してください。

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin:/usr/local/pgsql16.3/bin ←「pgsql」を「pgsql16.3」に変更

export PATH

編集が完了したら、viコマンドの":wq"(保存して閉じる)を実行してください。

 

4. データベースクラスターの初期化

PostgreSQLのデータベースクラスターの初期化を行います。

データベース格納先のディレクトリを作成し、"postgres"ユーザーをディレクトリオーナーに設定します。

[root@xxxxxx postgres]# mkdir -p /var/pgsql16.3/data

[root@xxxxxx postgres]# chown -R postgres:postgres /var/pgsql16.3

 

次に、"postgres"ユーザーにスイッチして、データベースクラスターを初期化します。

ここでは、先に作成した"/var/pgsql16.3/data"をデータベースファイル格納先として指定します。

[root@xxxxxx postgres]# su - postgres

[postgres@xxxxxx ~]$ initdb --encoding=utf8 --locale=C -D /var/pgsql16.3/data

・(中略)

Success. You can now start the database server using:

     pg_ctl -D /var/pgsql16.3/data -l logfile start


[postgres@xxxxxx ~]$

 

PostgreSQL 16.3の起動ポート番号を変更します。

[postgres@xxxxxx ~]$ cd /var/pgsql16.3/data

[postgres@xxxxxx data]$ vi postgresql.conf

以下のように設定を変更してください。

# ----------------------------- # PostgreSQL configuration file # ----------------------------- # (中略) #listen_addresses = 'localhost' # what IP address(es) to listen on; # comma-separated list of addresses; # defaults to 'localhost'; use '*' for all # (change requires restart) #port = 5432 # (change requires restart) port = 5433 # (change requires restart) ←追加 max_connections = 100 # (change requires restart) #superuser_reserved_connections = 3 # (change requires restart) (後略)

編集が完了したら、viコマンドの":wq"(保存して閉じる)を実行してください。

 

ここまで完了すると、PostgreSQLデータベースを起動する準備が整いましたので、PostgreSQLを起動します。

[postgres@xxxxxx data]$ cd ~

[postgres@xxxxxx ~]$ pg_ctl -D /var/pgsql16.3/data -l logfile16.3 start

server starting

[postgres@xxxxxx ~]$

 

正常に起動できたら、確認用のデータベースを作成し、接続確認しましょう。

[postgres@xxxxxx ~]$ createdb test -p 5433

[postgres@xxxxxx ~]$ psql test -p 5433

psql (16.3)

Type "help" for help.

 

test=#

 

正常に接続できたら、データベース一覧(\lコマンド)を実行し、正しく作成できていることをご確認ください。

※作成した「test」データベースのCollate、Ctypeが"C"となっていない場合、ChatLuckが正しく動作しない可能性がありますので、ご注意ください。(クラスターの初期化に誤りがある可能性があります。)

test=# \l


                                                 List of databases
  Name    |  Owner   | Encoding | Locale Provider | Collate | Ctype | ICU Locale | ICU Rules |   Access privileges   
-----------+----------+----------+-----------------+---------+-------+------------+-----------+-----------------------
postgres  | postgres | UTF8     | libc            | C       | C     |            |           | 
template0 | postgres | UTF8     | libc            | C       | C     |            |           | =c/postgres          +
          |          |          |                 |         |       |            |           | postgres=CTc/postgres
template1 | postgres | UTF8     | libc            | C       | C     |            |           | =c/postgres          +
          |          |          |                 |         |       |            |           | postgres=CTc/postgres
test      | postgres | UTF8     | libc            | C       | C     |            |           | 
(4 rows)

test=#

 

5. PostgreSQLサーバーの設定変更

5-1.postgresユーザーのパスワードを設定します。

※この後、pg_hba.confファイルの設定を変更すると、PostgreSQLにpostgresユーザーで接続する際にパスワードが必要になります。

test=# alter role postgres with password 'postgres';

ALTER ROLE

test=# \q

[postgres@xxxxxx ~]$

 

5-2. PostgreSQLの接続方法の変更を行います。

[postgres@xxxxxx ~]$ vi /var/pgsql16.3/data/pg_hba.conf

以下の設定を変更してください。

# PostgreSQL Client Authentication Configuration File
# ===================================================
#

(中略)

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust ←"trust"を"md5"に変更
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust ←"trust"を"md5"に変更
# IPv6 local connections:
host    all             all             ::1/128                 trust ←"trust"を"md5"に変更
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     postgres                                trust
#host    replication     postgres        127.0.0.1/32            trust
#host    replication     postgres        ::1/128                 trust

編集が完了したら、viコマンドの":wq"(保存して閉じる)を実行してください。
また、次のコマンドで保存した内容を反映してPostgreSQLを再起動します。

[postgres@xxxxxx ~]$ pg_ctl -D /var/pgsql16.3/data reload

server signaled

ここまでで、PostgreSQLのインストールは完了です。

 

6. PostgreSQLサーバーの自動起動設定

サーバーのリブート時などに、PostgreSQLデータベースが自動的に起動するように設定しましょう。

 

続いて『データのPostgreSQL 13から16への移行』を行います。

 

記載の製品名および商品名は、各社の商標、または登録商標です。