PostgreSQLの基本的な構築方法

概要

PostgreSQLの基本的な構築方法を記載します。

今回は本当に基礎的なことしか書いていませんが、まずPostgreSQLを立ててみたい方、大まかに構築方法を知りたい方など、参考にしていただければと思います。

環境

OSRHEL7.5
RDBMSpostgresql-12.1-2

構築の流れ

  1. インストール
  2. 設定ファイルの修正・反映
  3. サービス再起動

構築方法

[1] インストール

  • インストール

RHELではPostgreSQLパッケージが提供されているため、yumコマンドでインストール可能です。
また、PostgreSQLはバージョンを指定してインストールすることも可能です。
今回は12を指定してみます。

# yum module enable postgresql:12
# yum -y install postgresql-server postgresql-contrib

コマンドを実行するとパッケージ内容・依存関係の一覧が表示され、問題ないか確認されるので問題なければ「y」を入力します。
「完了しました」と表示されればインストール完了です。

  • 状況確認

確認コマンドを実行し、PostregSQLのrpm名が出力されれば正常にインストール出来ていることが確認できます。

# rpm -qa | grep postgresql
postgresql-contrib-12.1-2.module+el8.1.1+4794+c82b6e09.x86_64
postgresql-server-12.1-2.module+el8.1.1+4794+c82b6e09.x86_64
postgresql-12.1-2.module+el8.1.1+4794+c82b6e09.x86_64

[2] 設定ファイルの修正・反映

どんな構成にするかで設定内容は変わってきますが、今回は必要最低限の値を設定します。

  • 設定ファイルのバックアップ

PostregSQLではほとんどの設定ファイルがdataディレクトリに保管されています。
そのため、ディレクトリごとバックアップを取っておいた方が安全です。
なるべくバックアップを取るようにしてください。

# cd /var/lib/pgsql
# cp -pr data data.org
  • postgresql.confの設定

PostgreSQLの主な設定ファイルを変更します。

# vi /var/lib/pgsql/data/postgresql.conf
  • listen_addresses設定

listen_addressesは「接続を監視するアドレス」を指定します。
単純に言ってしまえばアクセス制限ですが、他にも後述するpg_hba.confで管理します。
ようするに、listen_addressesで「どのアドレスから接続を受け付けるか制限」し、pg_hba.confで「定義されたアドレスの接続方式を制限」します。

今回は大雑把に「*」(すべて許可)を設定してみます。

・設定ファイルに記載されている例(コメントアウトされています)
#listen_addresses = 'localhost'
 
・設定例
listen_addresses = '*'
  • その他設定値

他にもWAL設定やレプリケーション設定等、様々な設定値があります。

  • pg_hba.conf設定

アクセス制限の主な設定ファイルを変更します。

# vi /var/lib/pgsql/data/pg_hba.conf

筆者の主観ですが、PostgreSQLにうまく接続出来ない場合、こちらの設定が出来てないことが多い気がします。
忘れずに設定するようにしてください。
ちなみに、レプリケーションする場合も設定編集が必要です。 

今回は、127.0.0.1/32のMETHODを変更し、更に192.168.10.0/24もアクセス出来るよう追加してみました。

・設定ファイルに記載されている例
# TYPE  DATABASE        USER            ADDRESS                 METHOD
# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            ident
~略~
 
・設定例
# TYPE  DATABASE        USER            ADDRESS                 METHOD
# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
host    all             all             192.168.10.0/24         md5
~略~

設定値はどんな要件か(どんなことをしたいか)によって何を設定すべきかが変わってきます。
単純に起動だけするのであれば、何も設定しない状態でも問題ありません。
試しに起動する程度であれば設定値を変えないまま次の手順に進んでください。

[3] サービス再起動

  • サービス起動

PostregSQLサービスを起動します。

# systemctl start postgresql
  • サービス状態確認

PostregSQLサービスの状態を確認します。
エラーがなければ正常に起動されています。

# systemctl status postgresql
● postgresql.service - PostgreSQL database server
~省略~
   Active: active (running)
~省略~

自動起動について

基本的に、PostgreSQLの自動起動は推奨しません。
OSが停止していた、つまり何らかの障害でデータベースが落ちることになった場合、データの復旧作業が必要なケースが多々あります。
壊れたデータが存在する状態で自動でサービスが起動してしまうと、また別の障害が発生する可能性があります。自動起動でも問題なく起動できる技術があれば別ですが、不安な場合は手動で対応するのがオススメです。

技術情報

商標について

関連サービス

OSS構築支援
OSS保守サポート

お気軽にお問い合わせください。応対時間 9:30-17:30 [ 土・日・祝日除く ]

お問い合わせ
  • X