CentOS8.2に、PostgreSQLをインストールする方法についてまとめます。本記事はPostgreSQL 13.1に対応しています。バージョンによって若干の差異がありますので、本記事と異なるバージョンを使用する場合はpostgresql.orgを参照ください。
- PostgreSQL インストール (いまここ)
- PostgreSQL データベースの作成
- PostgreSQL contribモジュールの使い方
- PostgreSQL パラメタの設定方法
- PostgreSQL ベンチマークツールの紹介
- PostgreSQL WAL(Write Ahead Log)の基本説明
- PostgreSQL バックアップとリストア
- PostgreSQL PITR(Point In Time Recovery)基本概念の説明
- PostgreSQL PITR(Point In Time Recovery)操作方法の説明
- PostgreSQL PITR(Point In Time Recovery)タイムライン操作
- PostgreSQL ストリーミングレプリケーションの最小構成
- PostgreSQL ストリーミングレプリケーションのパラメタ説明
- PostgreSQL ストリーミングレプリケーションの障害復旧
- PostgreSQL ストリーミングレプリケーションの多段構成
- PostgreSQL ストリーミングレプリケーションのDR向け設定
- PostgreSQL ストリーミングレプリケーションのコンフリクト
- PostgreSQL 自動バキューム(AUTO VACUUM)
- PostgreSQL HOT(Heap Only Tuple)
- PostgreSQL インデックスのメンテナンス
- PostgreSQL 統計情報の更新
- PostgreSQL 実行計画
- PostgreSQL スロークエリの調査方法
PostgreSQL ダウンロードURLの確認
postgresql.orgをブラウザで開きます。
OSとディストリビューションを選びます。
「PostgreSQLバージョン」「OSバージョン」「CPUアーキテクチャ」を選択すると、インストール時に必要となるコマンドが羅列されます。
PostgreSQL インストール
PostgreSQL インストール
PostgreSQL用途のリポジトリを登録します。
dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
PostgreSQL Serverをインストールします。
dnf -qy module disable postgresql dnf install -y postgresql13-server
マニュアルの参照
manコマンドでPostgreSQLのマニュアルを調べられるようにしておくと便利でしょう。/etc/man_db.confを以下のように編集します。
# vi /etc/man_db.conf <omitted> # every automatically generated MANPATH includes these fields # #MANDATORY_MANPATH /usr/src/pvm3/man # MANDATORY_MANPATH /usr/man MANDATORY_MANPATH /usr/share/man MANDATORY_MANPATH /usr/local/share/man MANDATORY_MANPATH /usr/pgsql-13/share/man/
以下のようなマニュアルが参照できる事を確認します。
man psql man initdb
環境変数の設定
環境変数PGDATAを設定します。PGDATAはPostgreSQLのデータファイルなどを格納するディレクトリです。
CentOS8系とPostgreSQL13の組み合わせではrpm内で自動的に環境変数が組み込まれる仕組みが備わっているため、明示的な操作は不要です。念のため、自動的にPGDATAが設定されているかどうかを確認しましょう。
[root@centos82 ~]# sudo su - postgres [postgres@centos82 ~]$ env | grep PGDATA PGDATA=/var/lib/pgsql/13/data [postgres@centos82 ~]$
PostgreSQL 初期データベースの作成
PostgreSQLのデータベースを作成します。初回作成時にデータベースの文字コードなどを指定する事ができます。
postgresql-13-setupというスクリプトを実行することで、初期データベースが作成できます。このスクリプトを読むと、PGSETUP_INITDB_OPTIONSという環境変数で文字コードなどを指定できる事ができます。環境変数に設定する値は「man initdb」で調べる事ができます。設定例は以下の通りです。
export PGSETUP_INITDB_OPTIONS="--encoding=UTF8 --locale=ja_JP.UTF-8 --lc-collate=ja_JP.UTF-8 --lc-ctype=ja_JP.UTF-8"
初期データベースを作成します。
/usr/pgsql-13/bin/postgresql-13-setup initdb
データベースを起動します。
systemctl enable postgresql-13 --now
postgresユーザにスイッチし、${PGDATA}配下にデータベースを構成するファイル群が作成されている事を確認します。
[root@centos82 ~]# su - postgres 最終ログイン: 2020/11/28 (土) 13:32:56 JST日時 pts/1 [postgres@centos82 ~]$ echo ${PGDATA} /var/lib/pgsql/13/data [postgres@centos82 ~]$ [postgres@centos82 ~]$ [postgres@centos82 ~]$ ls -l total 0 drwxr-xr-x 3 root root 36 Nov 28 13:34 13 [postgres@centos82 ~]$ [postgres@centos82 ~]$ [postgres@centos82 ~]$ ls -l 13 total 8 drwx------ 20 postgres postgres 4096 Nov 28 13:34 data -rw------- 1 postgres postgres 934 Nov 28 13:34 initdb.log [postgres@centos82 ~]$ [postgres@centos82 ~]$ [postgres@centos82 ~]$ ls -l 13/data total 64 drwx------ 5 postgres postgres 41 Nov 28 13:34 base -rw------- 1 postgres postgres 30 Nov 28 13:34 current_logfiles drwx------ 2 postgres postgres 4096 Nov 28 13:34 global drwx------ 2 postgres postgres 32 Nov 28 13:34 log drwx------ 2 postgres postgres 6 Nov 28 13:34 pg_commit_ts drwx------ 2 postgres postgres 6 Nov 28 13:34 pg_dynshmem -rw------- 1 postgres postgres 4548 Nov 28 13:34 pg_hba.conf -rw------- 1 postgres postgres 1636 Nov 28 13:34 pg_ident.conf <omitted> [postgres@centos82 ~]$
想定通りの文字コードが設定されている事を確認します。
[postgres@centos82 ~]$ psql -l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+----------+----------+-------------+-------------+----------------------- postgres | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | template0 | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres (3 rows) [postgres@centos82 ~]$