データベースクラスタ作成手順【複数作成する場合で解説】【PostgreSQL】

データベースクラスタ作成手順【複数作成する場合で解説】【PostgreSQL】

データベースクラスタの作成手順を知りたい人「同じVM環境で複数のデータベースクラスタを作成する手順を知りたいです。教えて下さい。」


そんな方向けになります。

本記事ではPostgreSQLのデータベースクラスタを作成できるようになることを目的としています。


構成は以下です。

それでは、順に見ていきましょう。

著者情報

ちなみにですが、私は5年以上IT系エンジニアとして働いており、主にJavaを主戦場にしています。Webアプリケーションと業務系のアプリケーションの経験を持つごく普通のエンジニアです。
もちろん、全てのプロジェクトでデータベースを扱ってきました。今回対象のPostgreSQLの他に、Oracle、MySQLも経験済みです。

データベースクラスタ作成手順【複数作成する場合で解説】

データベースクラスタ作成手順は以下になります。

  1. データベースユーザ作成
  2. Postgresqlデータディレクトリ作成
  3. ユーザ環境変数
  4. データベースインスタンス作成
  5. ポート変更
  6. プロセスファイル書き込みディレクトリの権限変更
  7. 起動
  8. postgresロール作成
  9. データベースアクセス


順に説明します。

【手順1】データベースユーザ作成

1つのデータベースクラスタインスタンスに対して、OSユーザを1つ用意する必要があります。

よって、今回はpostgres2ユーザを作成することにします。

コマンドは以下です。

[root@~] adduser postgres2

【手順2】Postgresqlデータディレクトリ作成

データベースインスタンス1つあたりにデータを保存するディレクトリを用意する必要があります。

今回は/var/lib/pgsql2/10/dataをデータディレクトリとします。
ディレクトリの権限も同時に変更します。

作成コマンドは以下です。

[root@~] mkdir -p /var/lib/pgsql2/10/data
[root@~]# chown -R postgres2:postgres /var/lib/pgsql2/
[root@~]# chmod -R 700 /var/lib/pgsql2/

【手順3】ユーザ環境変数

作成したpostgres2ユーザの環境変数設定をします。

  1. 作成したpostgres2ユーザでログイン
  2. ホームディレクトリにある.bashrcを編集
  3. .bashrcの変更を反映


コマンドは以下です。

[root@~] su postgres2
[postgres2@~] vi .bashrc
末尾に以下を追加
--
PGDATA=/var/lib/pgsql/10/data
export PGDATA

PATH=$PATH:/usr/pgsql-10/bin
export PATH
--
[postgres2@~] source .bashrc

【手順4】データベースインスタンス作成

それでは実際にデータベースインスタンスを作成します。

作成したpostgres2ユーザで以下のコマンドを実行してください。

[postgres2@~] initdb --pgdata=/var/lib/pgsql2/10/data


initdbはデータベースインスタンスを実行するコマンドです。

–pgdataパラメータには作成したデータベースデータディレクトリを指定してください。

initdbは.bashrc内でパスを通しているので実行できます。
もし実行できない場合はパスが通っていないので各々の環境に合わせて設定し直してください。

【手順5】ポート変更

同じVM上に複数データベースインスタンスを作成する場合はポート番号を変更する必要があります。

/var/lib/pgsql2nd/10/data配下にpostgresql.confが作成されるので、このファイルを変更します。

変更内容は以下です。

[postgres2@~] vi /var/lib/pgsql2/10/data/postgresql.comf
以下のパラメータを追加
port = 5433

【手順6】プロセスファイル書き込みディレクトリの権限変更

PostgreSQLでは起動しているデータベースインスタンスのプロセスIDが/var/run/postgresqlに作成されます。

作成したpostgres2ユーザの書き込み権限を付与する必要があるので、ディレクトリの権限を変更します。

[postgres2@~] chmod a+w /var/run/postgresql

【手順7】起動

以下のコマンドでデータベースインスタンスを起動します。

[postgres2@~] pg_ctl start -D $PGDATA

【手順8】postgresロール作成

作成したデータベースインスタンスには最初から作成したOSユーザ名のロールが作成されています。

今回でいうとpostgres2ロールです。

一般的にはpostgresロールが主流かと思うので、postgresロールも作成しておきます。

コマンドは以下です。

[postgres2@~] createuser --port=5433 postgres --createdb --superuser


postgresロールにはcreatedbとsuperuserの権限を付与しています。

また、–portでポート番号を指定しているので注意してください。

【手順9】データベースアクセス

最後に実際に作成したデータベースにアクセスしてみます。

コマンドは以下です。

[postgres2@~] psql --port=5433 -U postgres -d postgres


作成したpostgresロール(ユーザ)でデフォルトで作成されているpostgresデータベースにログインしています。



以上、PostgreSQLのデータベースクラスタ作成手順でした。

参考になれば幸いです。

人気記事①:【最新】PostgreSQL学習におすすめの本5選

人気記事②:現役エンジニアがおすすめするプログラミングスクール5社:無料あり