2026年1月23日金曜日

【Ubuntu編】PostgreSQL 16導入と複数クラスタ起動:OSによる「管理のしやすさ」を実感

 これまではMacやRHEL(Red Hat Enterprise Linux)系でデータベースを触ってきましたが、今回はUbuntu 22.04 LTS環境を使ってPostgreSQL 16を導入しました。

実際に触ってみて感じたのは、**「Ubuntuはコマンド体系やファイル管理が非常にシンプルで扱いやすい」**ということです。今回はその導入手順と、実務で役立つ「複数クラスタの同時起動」の実験記録をまとめます。




1. なぜUbuntuを選んだのか?

実務では堅牢なRHEL系が選ばれることも多いですが、学習用としてUbuntuを使ってみて、その「シンプルさ」に驚きました。

  • パッケージ管理が直感的: apt コマンドの依存関係解決がスムーズ。

  • 設定ファイルの配置が明快: /etc/postgresql/16/main/ のように、バージョンごとに整理された構造が分かりやすい。

  • 情報の豊富さ: 世界中のエンジニアが使っているため、困った時の解決策がすぐに見つかる。

こうした「管理のしやすさ」は、試行錯誤を繰り返す学習フェーズでは大きなメリットだと感じています。




2. PostgreSQL 16のインストール手順

Ubuntu標準のリポジトリではなく、最新のマイナーバージョンを確実に追えるよう公式リポジトリを利用します。

(1) リポジトリの作成と鍵の登録

Bash
# 公式リポジトリの追加
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

# 署名鍵の登録
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

# リストの更新
sudo apt-get update

(2) インストール

Bash
sudo apt -y install postgresql-16

インストール後、管理用のOSユーザー postgres にパスワードを設定しておきました。 sudo passwd postgres

(3) 導入確認

psql --version を実行し、無事に PostgreSQL 16.9 が導入されたことを確認。デフォルトではポート 5432 で起動しています。




3. 実験:もうひとつのデータベースクラスタを立ち上げる

「本番用と検証用を1台で動かしたい」というケースを想定し、別のポート(5433)で2つ目のクラスタを立ち上げる実験を行いました。

(1) クラスタの作成

postgres ユーザーになり、新しいデータディレクトリを初期化します。

Bash
# ロケールなし設定で作成
/usr/lib/postgresql/16/bin/initdb -D /var/lib/postgresql/16/db2 --encoding=UTF8 --no-locale

(2) 設定の変更(ポートの競合回避)

新しいクラスタの設定ファイルを編集し、既存の5432ポートとぶつからないようにします。

  • ファイル:/var/lib/postgresql/16/db2/postgresql.conf

  • 変更箇所:port = 5433

(3) クラスタの起動

Bash
/usr/lib/postgresql/16/bin/pg_ctl -D /var/lib/postgresql/16/db2 -l logfile start



4. 接続テスト:ポートの使い分け

これで1台のUbuntu上で2つの独立したDBが動いている状態です。

Bash
# 既存のクラスタへ接続
psql -U postgres -p 5432

# 新しいクラスタ(db2)へ接続
psql -U postgres -p 5433

どちらも正常にログインでき、完全に独立した環境として機能していることが確認できました。




5. 実験を終えて:OSによる「手触り」の違い

今回の構築を通じて、RHEL系とUbuntu(Debian系)の「思想の違い」を肌で感じることができました。

RHELが「安定・保守」を重視するのに対し、Ubuntuは「導入・運用のシンプルさ」を重視しているように感じます。特にパスの通り方やパッケージの構成が素直で、見習いエンジニアとしてはUbuntuの方が学習のハードルが低く、実験に集中しやすい印象を受けました。

こうしたOSごとの「手触り」の違いを知ることも、インフラを支えるデータベースエンジニアとして大切な経験だと感じています。

0 件のコメント:

コメントを投稿