検索

第4章 PostgreSQL の使用

download PDF

PostgreSQL サーバーは、SQL 言語をベースにした、オープンソースの堅牢かつ拡張性に優れたデータベースサーバーです。PostgreSQL サーバーは、オブジェクトリレーショナルデータベースシステムを提供します。これにより、広範なデータセットと多数の同時ユーザーを管理できます。このような理由から、PostgreSQL サーバーは、大量のデータを管理するためにクラスターで使用できます。

PostgreSQL サーバーには、データの整合性の確保、耐障害性のある環境やアプリケーションの構築を行うための機能が含まれます。PostgreSQL サーバーを使用すると、データベースを再コンパイルすることなく、独自のデータ型、カスタム関数、またはさまざまなプログラミング言語のコードでデータベースを拡張できます。

RHEL システムに PostgreSQL をインストールして設定する方法、PostgreSQL データをバックアップする方法、および PostgreSQL の以前のバージョンから移行する方法について説明します。

4.1. PostgreSQL のインストール

RHEL 9.0 は、この Application Stream の初期バージョンとして PostgreSQL 13 を提供します。これは、RPM パッケージとして簡単にインストールできます。

RHEL 9 のマイナーリリースで、ライフサイクルがより短い追加の PostgreSQL バージョンが、モジュールとして提供されます。

  • RHEL 9.2 で、PostgreSQL 15postgresql:15 モジュールストリームとして導入されました。
  • RHEL 9.4 で、PostgreSQL 16postgresql:16 モジュールストリームとして導入されました。

PostgreSQL をインストールするには、以下の手順に従います。

注記

設計上、同じモジュールの複数のバージョン (ストリーム) を並行してインストールすることはできません。したがって、postgresql モジュールから利用可能なストリームのいずれかを選択する必要があります。コンテナー内では、別々のバージョンの PostgreSQL データベースサーバーを使用できます。コンテナー内で複数の PostgreSQL バージョンを実行する を参照してください。

手順

  1. PostgreSQL サーバーパッケージをインストールします。

    • PostgreSQL 13 の場合は、RPM パッケージからインストールします。

      # dnf install postgresql-server
    • PostgreSQL 15 または PostgreSQL 16 の場合は、postgresql モジュールからストリーム (バージョン) 15 または 16 を選択し、server プロファイルを指定します。以下に例を示します。

      # dnf module install postgresql:16/server

      postgres のスーパーユーザーが自動的に作成されます。

  2. データベースクラスターを初期化します。

    # postgresql-setup --initdb

    Red Hat は、デフォルトの /var/lib/pgsql/data ディレクトリーにデータを保存することを推奨します。

  3. postgresql サービスを開始します。

    # systemctl start postgresql.service
  4. postgresql サービスが、システムの起動時に起動するようにします。

    # systemctl enable postgresql.service
重要

RHEL 9 内の以前の postgresql ストリームからアップグレードする場合は、後続のストリームへの切り替えRHEL 9 バージョンの PostgreSQL への移行 の両方の手順に従ってください。

4.1.1. コンテナー内で複数の PostgreSQL バージョンを実行する

同じホスト上で別々のバージョンの PostgreSQL を実行するには、コンテナー内で実行してください。同じモジュールの複数のバージョン (ストリーム) を並行してインストールすることはできないためです。

この手順では、例として PostgreSQL 13PostgreSQL 15 を記載していますが、Red Hat Ecosystem Catalog で利用可能な任意の PostgreSQL コンテナーバージョンを使用できます。

前提条件

  • container-tools メタパッケージがインストールされている。

手順

  1. Red Hat カスタマーポータルアカウントを使用して、registry.redhat.io レジストリーに認証します。

    # podman login registry.redhat.io

    すでにコンテナーレジストリーにログインしている場合は、このステップをスキップしてください。

  2. コンテナー内で PostgreSQL 13 を実行します。

    $ podman run -d --name <container_name> -e POSTGRESQL_USER=<user_name> -e POSTGRESQL_PASSWORD=<password> -e POSTGRESQL_DATABASE=<database_name> -p <host_port_1>:5432 rhel9/postgresql-13

    このコンテナーイメージを使用する方法の詳細は、Red Hat Ecosystem Catalog を参照してください。

  3. コンテナー内で PostgreSQL 15 を実行します。

    $ podman run -d --name <container_name> -e POSTGRESQL_USER=<user_name> -e POSTGRESQL_PASSWORD=<password> -e POSTGRESQL_DATABASE=<database_name> -p <host_port_2>:5432 rhel9/postgresql-15

    このコンテナーイメージを使用する方法の詳細は、Red Hat Ecosystem Catalog を参照してください。

  4. コンテナー内で PostgreSQL 16 を実行します。

    $ podman run -d --name <container_name> -e POSTGRESQL_USER=<user_name> -e POSTGRESQL_PASSWORD=<password> -e POSTGRESQL_DATABASE=<database_name> -p <host_port_3>:5432 rhel9/postgresql-16

    このコンテナーイメージを使用する方法の詳細は、Red Hat Ecosystem Catalog を参照してください。

    注記

    2 つのデータベースサーバーのコンテナー名とホストポートが異なっている必要があります。

  5. クライアントがネットワーク上のデータベースサーバーにアクセスできるように、ファイアウォールでホストポートを開きます。

    # firewall-cmd --permanent --add-port={<host_port_1>/tcp,<host_port_2>/tcp,<host_port_3>/tcp,...}
    # firewall-cmd --reload

検証手順

  1. 実行中のコンテナーに関する情報を表示します。

    $ podman ps
  2. データベースサーバーに接続し、root としてログインします。

    # psql -u postgres -p -h localhost -P <host_port> --protocol tcp
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.