PostgreSQLは、1台のマシン上に複数のインスタンスを同時に稼働させることが可能です。複数インスタンスを持つことで、テスト環境や異なるアプリケーション向けに独立したデータベースを利用でき、システム全体の管理をより柔軟に行えます。本記事では、Windows環境での複数PostgreSQLインスタンスを作成し、設定する手順について解説します。
インスタンスとは?
PostgreSQLのインスタンスとは、PostgreSQLが稼働するプロセスの単位であり、それぞれが独立したデータベースクラスタを管理しています。異なるインスタンスは、異なるポート番号やデータディレクトリを使用して実行されます。
準備
- PostgreSQLがインストールされていることを確認:既にPostgreSQLが1つインストールされている前提で進めます。
- 管理者権限:複数インスタンスを設定するためには、管理者権限で作業を行う必要があります。コマンドプロンプトを「管理者として実行」しておきましょう。
1. 新しいデータディレクトリの作成
複数インスタンスを作成するには、各インスタンスごとに独立したデータディレクトリを持つ必要があります。以下の手順で新しいデータディレクトリを作成します。
- コマンドプロンプトを管理者として開きます。
- PostgreSQLのバイナリが存在するディレクトリに移動します。通常、以下のパスにあります:
cd "C:\Program Files\PostgreSQL\<バージョン>\bin"
- 新しいデータディレクトリを作成します。
initdb
コマンドを使い、新しいデータディレクトリにデータベースクラスタを初期化します。例えば、C:\pgdata\instance2
というディレクトリに新しいクラスタを作成する場合、以下のコマンドを実行します:
initdb -D "C:\pgdata\instance2"
2. 新しいPostgreSQLサービスの登録
新しいインスタンスをWindowsサービスとして登録し、起動できるようにします。これは、複数のPostgreSQLインスタンスを独立して管理できるようにするために必要です。
- まず、
pg_ctl
コマンドを使って新しいサービスを作成します。以下のコマンドを実行し、新しいPostgreSQLインスタンスをWindowsサービスとして登録します。
pg_ctl register -N "postgresql-instance2" -D "C:\pgdata\instance2"
- これで、新しいPostgreSQLインスタンスがサービスとして登録されます。サービス管理ツール(
services.msc
)を使って確認することもできます。
3. 新しいポート番号の設定
複数のインスタンスが同時に実行されるため、各インスタンスに異なるポート番号を割り当てる必要があります。
- 作成した新しいインスタンス用のデータディレクトリにある
postgresql.conf
ファイルを編集します。postgresql.conf
は、インスタンスの動作設定を管理するファイルです。 postgresql.conf
ファイルを開き、以下の行を見つけて編集します。
port = 5433
- デフォルトのポート番号は 5432 ですが、新しいインスタンスには別のポート番号を設定する必要があります。ここでは 5433 を使用しますが、他の未使用ポート番号を指定することも可能です。
4. インスタンスの起動と確認
設定が完了したら、新しいインスタンスを起動し、正しく動作しているか確認します。
- 新しいインスタンスをサービスとして起動します。コマンドプロンプトで以下のコマンドを実行します:
net start postgresql-instance2
- コマンドライン、
psql
コマンドを使って新しいインスタンスに接続できます:
psql -h localhost -p 5433 -U [Windows login user] -d postgres
※PostgreSQLでは、データベースクラスタを初期化(initdb
コマンド実行)した際に、OSのユーザー名に対応したデータベースロール(ユーザー)が自動的に作成されます。
5. 複数インスタンスの管理
複数のインスタンスを同時に稼働させている場合、各インスタンスを個別に管理する必要があります。
- サービスの停止・開始: 各インスタンスを停止・再開するには、
net start
およびnet stop
コマンドを使用します。例えば、以下のコマンドで新しいインスタンスを停止できます:
net stop postgresql-instance2
- 設定の変更: 各インスタンスごとに
postgresql.conf
ファイルが独立しているため、ポート番号やメモリの使用量など、インスタンスごとに異なる設定を適用できます。
まとめ
この記事では、Windows環境で複数のPostgreSQLインスタンスを作成し、管理する手順を紹介しました。複数のインスタンスを同時に使用することで、異なるアプリケーションや目的に合わせた独立したデータベース環境を構築できます。
コメント