★悩み★
・PostgreSQL 16をLinux(CentOS/RHEL)にインストールする方法を知りたい。
・PostgreSQL 16をAmazon Linux 2(EC2)にインストールできる?
・PostgreSQL 16で追加された新機能に関する概要を知りたい。
こういった「悩み」に答えます。
【本記事の内容】
① PostgreSQL 16をインストールする方法をご紹介
② PostgreSQL 16でデータ追加と参照をする方法をご紹介
③ PostgreSQL 16の新機能をご紹介
これからご紹介する手順を実践したことで、筆者は30分以内でPostgreSQL 16をインストールできました。
記事の前半では「PostgreSQL 16をRed Hat系のLinux(CentOSやRed Hat Enterprise Linux)にインストールする方法」をコマンドベースで紹介します。
記事の後半では「PostgreSQL 16の使い方と新機能」を紹介します。
この記事を読み終えることで、「PostgreSQL 16をインストールする方法」を把握できるだけでなく、「PostgreSQLの新機能」も把握した状態になります。
また、「PostgreSQL 15のインストール手順」に関して知りたい方は、以下の記事をご覧ください。
>> 【コピペOK】PostgreSQL 15を5手順でインストールする方法
PostgreSQLインストール後、「バックアップなどの運用に関する情報」を知りたい方には、本ブログに掲載した記事がオススメです。
>> PostgreSQLに関する記事一覧(本ブログ内で執筆した記事一覧
PostgreSQL16をインストールする方法
PostgreSQL16をインストールする方法をご紹介します。
【インストールの流れ】
手順1:PostgreSQL 16のリポジトリを追加
手順2:PostgreSQL 16のリポジトリ情報を修正
手順3:yum(dnf)でPostgreSQL 16をインストール
手順4:PostgreSQL 16のセットアップ
手順5:PostgreSQL 16の起動
上記の流れで、「PostgreSQL 16をインストール」できます。
上記の各手順は、以下の日時と環境で動作確認済みです。
動作確認済み日時:2023年9月15日
動作確認済み環境:
・Amazon Linux 2(Linux ip-172-31-4-137.us-west-2.compute.internal 4.14.243-185.433.amzn2.x86_64)
・Red Hat Enterprise Linux 8
以降で、各手順に関してご説明します。
手順1:PostgreSQL 16のリポジトリを追加
「手順1:PostgreSQL 16のリポジトリを追加」に関してご紹介します。
PostgreSQL 16をインストールするために、PostgreSQL公式サイトに公開されているリポジトリを追加しましょう。
PostgreSQL 16のリポジトリを追加するために、「端末またはコマンドプロンプト」を起動し、以下のコマンドを順に実行してください。
【RHEL8系の場合】
$ sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
【RHEL9系の場合】
$ sudo sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rp
【共通】
$ ls /etc/yum.repos.d/pgdg-redhat-all.repo
/etc/yum.repos.d/pgdg-redhat-all.repo
$
コマンド実行後、「/etc/yum.repos.d/pgdg-redhat-all.repo」が表示された場合、「正常にPostgreSQL 16のリポジトリを追加できた」と判断できます。
以上で、「手順1:PostgreSQL 16のリポジトリを追加」は完了です。
手順2:PostgreSQL 16のリポジトリ情報を修正
「手順2:PostgreSQL 16のリポジトリ情報を修正」に関してご説明します。
PostgreSQL 16をインストールするために、リポジトリ情報の修正が必要な場合があります。
PostgreSQLのリポジトリ情報の修正が必要かを確認するために、以下のコマンドを実行してください。
$ cat /etc/yum.repos.d/pgdg-redhat-all.repo | grep "pgdg16]"
[pgdg16]
$ echo $?
$ 0
上記のコマンド実行後、「pgdg16」が表示されなかった場合、PostgreSQLのリポジトリ情報を修正する必要があります。
PostgreSQLのリポジトリ情報(pgdg-redhat-all.repo)に、以下を追記しましょう。
[pgdg16]
name=PostgreSQL 16 for RHEL / Rocky $releasever - $basearch
baseurl=https://download.postgresql.org/pub/repos/yum/16/redhat/rhel-$releasever-$basearch
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG
repo_gpgcheck = 1
また、Amazon Linux 2にPostgreSQL 16をインストールしたい場合、以下のコマンドを順に実行し、PostgreSQLのリポジトリ情報を修正してください。
$ sudo sed --in-place -e "s/\$releasever/8/g" /etc/yum.repos.d/pgdg-redhat-all.repo
$ echo $?
0
$
上記のコマンド実行後、「0」が表示された場合、「PostgreSQLのリポジトリ情報をAmazon Linux 2向けに修正できた」と判断できます。
以上で、「手順2:PostgreSQL 16のリポジトリ情報を修正」は完了です。
手順3:yum(dnf)でPostgreSQL 16をインストール
「手順3:yum(dnf)でPostgreSQL 16をインストール」に関してご説明します。
yum(dnf)コマンド経由でPostgreSQL 16をインストールしましょう。
PostgreSQL 16をインストールするために、以下のコマンドを実行してください。
$ sudo dnf install postgresql16-server
以上で、「手順3:yum(dnf)でPostgreSQL 16をインストール」は完了です。
手順4:PostgreSQL 16のセットアップ
「手順4:PostgreSQL 16のセットアップ」に関してご説明します。
PostgreSQL 16を利用するには、セットアップが必要です。
PostgreSQL 16をセットアップするために、以下のコマンドを順番に実行してください。
# ↓↓ postgresユーザのパスワードを設定(今回は、postgresと設定) ↓↓
$ sudo passwd postgres
# ↓↓ PostgreSQL 16でデータベースクラスタを作成 ↓↓
$ su - postgres -c '/usr/pgsql-16/bin/initdb -E UTF8 --locale=C -A scram-sha-256 -W'
Password: ★postgresと入力★
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.
The database cluster will be initialized with locale "C".
The default text search configuration will be set to "english".
Data page checksums are disabled.
Enter new superuser password:
Enter it again:
fixing permissions on existing directory /var/lib/pgsql/16/data ... ok
creating subdirectories ... ok
selecting dynamic shared memory implementation ... posix
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting default time zone ... UTC
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok
Success. You can now start the database server using:
/usr/pgsql-16/bin/pg_ctl -D /var/lib/pgsql/16/data -l logfile start
$ echo $?
0
$
コマンド実行後、「0」が最後に表示された場合、「正常にPostgreSQL 16のセットアップが完了した」と判断できます。
以上で、「手順4:PostgreSQL 16のセットアップ」は完了です。
手順5:PostgreSQL 16の起動
「手順5:PostgreSQL 16の起動」に関してご説明します。
systemctlコマンド経由でPostgreSQL 16を起動できます。
以下のコマンドを実行することで、PostgreSQL 16を起動できます。
$ sudo systemctl start postgresql-16.service
また、以下のコマンドを実行することで、PostgreSQL 16の起動状態を確認できます。
$ sudo systemctl status postgresql-16.service
● postgresql-16.service - PostgreSQL 16 database server
Loaded: loaded (/usr/lib/systemd/system/postgresql-16.service; disabled; vendor preset: disabled)
Active: active (running) since Tue 2023-09-15 08:17:14 JST; 2s ago
Docs: https://www.postgresql.org/docs/16/static/
Process: 2443 ExecStartPre=/usr/pgsql-16/bin/postgresql-16-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
Main PID: 2449 (postmaster)
Tasks: 7
Memory: 15.0M
CGroup: /system.slice/postgresql-16.service
├─2449 /usr/pgsql-16/bin/postmaster -D /var/lib/pgsql/16/data/
├─2451 postgres: logger
├─2452 postgres: checkpointer
├─2453 postgres: background writer
├─2455 postgres: walwriter
├─2456 postgres: autovacuum launcher
└─2457 postgres: logical replication launcher
以上で、「手順5:PostgreSQL 16の起動」は完了です。
上記の流れで、PostgreSQL 16のインストールとセットアップができました。
PostgreSQL 16でデータ追加と参照をする方法
「PostgreSQL 16でデータ追加と参照をする方法」をご紹介します。
【PostgreSQL 16でデータ追加と参照をするまでの流れ】
手順1:PostgreSQL 16でテーブルを作成
手順2:PostgreSQL 16のテーブルにデータを追加
手順3:PostgreSQL 16のテーブルからデータを参照
上記の流れで、PostgreSQL 16で「データ追加」と「データ参照」ができます。
上記の各操作は、以下の日時と環境で動作確認済みです。
動作確認済み日時:2023年9月15日
動作確認済み環境:
・Amazon Linux 2(Linux ip-172-31-4-137.us-west-2.compute.internal 4.14.243-185.433.amzn2.x86_64)
・Red Hat Enterprise Linux 8
以降で、上記「PostgreSQL 16でデータ追加と参照をするまでの流れ」の各手順に関してご説明します。
手順1:PostgreSQL 16でテーブルを作成
「手順1:PostgreSQL 16でテーブルを作成」に関してご説明します。
データを追加するために、PostgreSQL 16にテーブルを作成しましょう。
以下のコマンドを順に実行することで、PostgreSQL 16にテーブルを作成できます。
$ psql -U postgres
Password for user postgres:
psql (16.0)
Type "help" for help.
postgres=# create database testdb;
CREATE DATABASE
postgres=# \c testdb;
You are now connected to database "testdb" as user "postgres".
testdb=# create table mymovie (
testdb(# id integer,
testdb(# name varchar(10)
testdb(# );
CREATE TABLE
testdb=#
上記コマンド実行後、「CREATE TABLE」が表示された場合、「正常にPostgreSQL 16にテーブルを作成できた」と判断できます。
以上で、「手順1:PostgreSQL 16でテーブルを作成」は完了です。
手順2:PostgreSQL 16のテーブルにデータを追加
「手順2:PostgreSQL 16のテーブルにデータを追加」に関してご説明します。
PostgreSQL 16上に作成したテーブルに「データを追加」してみましょう。
以下のコマンドを順番に実行し、PostgreSQL 16のテーブルにデータを追加できます。
$ psql -U postgres -d testdb
testdb=# insert into mymovie values( 1, 'a');
INSERT 0 1
上記コマンド実行後、「INSERT 0 1」が表示された場合、「正常にPostgreSQL 16のテーブルにデータ追加できた」と判断できます。
以上で、「手順2:PostgreSQL 16のテーブルにデータを追加」は完了です。
手順3:PostgreSQL 16のテーブルからデータを参照
「手順3:PostgreSQL 16のテーブルからデータを参照」に関してご説明します。
PostgreSQL 16に追加したデータを参照してみましょう。
以下のコマンドを順番に実行し、PostgreSQLのテーブルからデータを参照できます。
$ psql -U postgres -d testdb
testdb=# select * from mymovie;
id | name
----+------
1 | a
(1 row)
上記コマンド実行後、「(1 row)」が表示された場合、「正常にPostgreSQL 16のテーブルからデータ参照できた」と判断できます。
以上で、「手順3:PostgreSQL 16のテーブルからデータを参照」は完了です。
上記の流れで、PostgreSQLへのデータ追加とデータ参照ができました。
PostgreSQL 16の新機能
PostgreSQL 16は、2023年9月にリリースされました。それに伴い、PostgreSQL 16の新機能に関して、以下のサイトで詳しく公開されました。
・PostgreSQL 16新機能について(公式サイト)
・PostgreSQL 16の機能検証(OSSの専門企業運営サイト)
上記公式サイトに記載されたPostgreSQL 16の新機能と改善について以下にまとめます。
新機能または改善項目 | 詳細 |
パフォーマンスの向上 | 新しいクエリプランナーの最適化により、FULLおよびRIGHT結合を並列化し、DISTINCTまたはORDER BY句を使用するクエリに対して最適化された計画を生成し、SELECT DISTINCTクエリ用に増分ソートを利用し、ウィンドウ関数を効率的に実行できるようにしました。 RIGHTおよびOUTER “anti-join”の改善により、結合テーブルに存在しない行を特定できるようになりました。 COPYを使用したバルクローディングのパフォーマンス向上(最大300%)や、libpqを使用するクライアントでの負荷分散のサポート、フルテーブルフリーズの必要性を減少させるvacuum戦略の改善、x86およびARMアーキテクチャでのSIMDを使用したCPUアクセラレーションが実装されました。 |
論理レプリケーション | 論理レプリケーションは、PostgreSQL論理レプリケーションプロトコルを解釈できる他のPostgreSQLインスタンスまたはサブスクライバにデータをストリーム配信する機能です。PostgreSQL 16では、スタンバイインスタンスからも論理レプリケーションを実行できるようになり、スタンバイが論理変更を他のサーバに公開できます。 論理レプリケーションのパフォーマンス向上も行われ、大規模なトランザクションを並列ワーカーを使用して適用できるようになり、プライマリキーのないテーブルではシーケンシャルスキャンの代わりにBツリーインデックスを使用して行を検索できるようになりました。 アクセスコントロールの改善も含まれ、新しい事前定義ロール(pg_create_subscription)が追加され、双方向の論理レプリケーションもサポートされるようになりました。 |
開発者向けの機能拡充 | SQL/JSON標準からの新しい構文(JSON_ARRAY()、JSON_ARRAYAGG()、IS JSON)のサポートが追加されました。 psqlでの新しいコマンド(\bind)が導入され、パラメータ付きクエリを準備し、変数を代替するために使用できます。 テキストコレーションのサポートが向上し、ICUサポートがデフォルトで組み込まれ、ユーザー定義のICUコレーションルールも定義できるようになりました。 |
モニタリング | I/O操作のシステムへの影響を理解するための新しいI/Oメトリクス情報(pg_stat_io)が追加されました。 pg_stat_all_tablesビューに最終スキャンタイムスタンプを記録する新しいフィールドが導入され、auto_explainがより読みやすくなりました。 |
アクセス制御とセキュリティ | アクセス制御の細かい設定オプションが提供され、pg_hba.confおよびpg_ident.confファイルの管理が向上し、正規表現マッチングや外部設定ファイルのincludeディレクティブがサポートされました。 クライアント接続パラメータには、サーバから受け入れる認証パラメータを指定するrequire_authなどの新しいセキュリティ指向のパラメータが追加され、Kerberos資格情報委任のサポートも導入されました。 |
ちなみに、「PostgreSQLのアーキテクチャを体系的に学びたい」や「その他のPostgreSQLのコマンドを知りたい」方は、以下の参考書がオススメです。
【まとめ】PostgreSQL16を5手順でインストールする方法
今回の記事を通して、「PostgreSQL16を5手順でインストールする方法」をご紹介することで、以下の悩みを解消しました。
★悩み★
・PostgreSQL 16をLinux(CentOS/RHEL)にインストールする方法を知りたい。
・PostgreSQL 16をAmazon Linux 2(EC2)にインストールできる?
・PostgreSQL 16で追加された新機能に関する概要を知りたい。
「PostgreSQL 16をインストールする方法は?」で悩んでいるあなたにこの記事が少しでも役に立てれば幸いです。
コメント