PostgreSQL のデータベース クラスタ

Bilal Shahid 2023年6月20日
  1. データベース クラスタとは
  2. データベース クラスタの利点
  3. データベース クラスタは PostgreSQL でどのように機能するか
  4. まとめ
PostgreSQL のデータベース クラスタ

この記事では、データベース クラスターと、PostgreSQL でデータベース クラスターを作成する方法について説明します。 多くの場合、人々はこの用語を混同し、その概念を理解できません。

この記事は、データベース クラスターの概念を拡張するために作成されました。

この記事には、データベース クラスターを作成してセットアップするためのコマンドが含まれており、すぐに使い始めることができます。 記事に記載されているコマンドに正確に従ってください。

注: この記事に記載されているコマンドは Ubuntu でテストされており、他のオペレーティング システムでは正しく動作しない可能性があります。

データベース クラスタとは

データベースクラスターという用語を簡単に理解してみましょう。 単一のデータベースに接続する複数のサーバーまたはインスタンスは、データベース クラスタリングと呼ばれます。

注: インスタンスは、データを格納するための物理ファイルを含むグループです。 これは、データベースと対話する一連のメモリとプロセスとして定義できます。

つまり、データベース クラスタは、実行中のデータベース サーバーの 1つのインスタンスのみによって管理される複数のデータベースのグループとして定義できます。

各データベース クラスタには個別の構成があり、異なるポート番号で動作します。 たとえば、PostgreSQL v9.4 を使用し、3つの関連データベースを持つデータベース クラスターがあるとします。

クラスター内のすべてのデータベースは、クラスターによって提供される同じ構成 (接続プール サイズ、バッファー サイズ、許可される接続数など) を使用します。

同様に、他の多くのクラスターは、異なる PostgreSQL バージョンで動作し、構成も異なります。

データベース クラスタの利点

データベース クラスタリングにはいくつかの利点があります。 主な利点のいくつかを以下に示します。

  1. 負荷分散またはデータベースのスケーラビリティ
  2. データベースの可用性の向上
  3. データのバックアップを可能にするデータの冗長性
  4. データベースの監視と自動化

データベース クラスタは PostgreSQL でどのように機能するか

PostgreSQL でクラスターを作成するプロセスを開始するには、ディスク上のデータベース用のストレージ領域を初期化する必要があります。

初期化後、postgres という名前のデータベースがクラスターに設定されます。これは、サードパーティのアプリケーション、ユーザー、およびユーティリティによって使用されるデフォルトのデータベースとして機能します。

デフォルトのデータベースに加えて、各クラスター内に template1 という名前の別のデータベースが作成されます。 このデータベースは実際の作業には使用されません。 代わりに、クラスター内で後で作成されるデータベースのテンプレートとして使用されます。

データベース クラスタは、すべてのデータを格納する単一のディレクトリとして機能し、データ ディレクトリまたはデータ エリアと呼ばれます。

データベース クラスタの作成または初期化

次のコマンドを使用して、選択した任意の場所でデータベース クラスターを初期化できます。

$	initdb -D /usr/local/pgsql/data

注: このコマンドは、PostgreSQL ユーザー アカウントにログインした後に実行する必要があります。

2 番目のコマンドは、データベース クラスターの作成 (初期化) にも役立ちます。

$	pg_ctl -D /usr/local/pgsql/data initdb

これらのコマンドはどちらも、目的の場所にディレクトリを作成します。

アクティブなデータベース クラスタの数

クラスターを作成したら、OS 上のアクティブなクラスターの数を数えることができます。 この件については、次のコマンドを使用できます。

$ pg_lsclusters

このコマンドは、アクティブなクラスター、そのステータス、ポート番号、名前、ディレクトリの場所などのリストを返します。このコマンドは、各クラスターがアクティブかオフラインかも通知します。

これは、クラスターに接続するときに必要な重要な情報です。 オフラインのクラスターではなく、アクティブなクラスターにのみ接続できます。

別のデータベース クラスタに接続する

1つのデータベース サーバーの負荷を分散するため、または既存のデータベース サーバーのパフォーマンスを向上させるために、別のデータベース クラスターに接続する必要性を感じる場合があります。

クラスターを接続する理由が何であれ、次のコマンドを使用できます。

$ psql -U postgres -p 5436-h localhost

クラスタごとに使用可能なポート番号が異なるため、接続先のクラスタには正しいポート番号を使用することが不可欠です。

注: アクティブなクラスターのリストとその情報を返すコマンド pg_lsclusters を使用して、各クラスターのポート番号を確認できます。

データベース クラスタのステータスの編集

データベース クラスタのステータスを開始から停止まで、またはその逆に編集する場合は、次のコマンドを実行できます。

$  pg_ctlcluster 12 main stop

このコマンドを使用すると、データベース クラスタを開始または停止できます。 コマンドの 12 は PostgreSQL ソフトウェアのバージョン番号、main は編集するクラスターの名前です。

クラスタでのデータベース作成

1つのコマンドのみを使用して、既存のクラスターに新しいデータベースを作成できます。 ただし、クラスター内に新しいデータベースを作成する前にクラスターに接続する必要があるため、クラスターがアクティブであることを確認することが不可欠です。

注: 上記のコマンド pg_lsclusters を使用して、データベースを作成するクラスターがアクティブかどうかを確認します。

クラスターがアクティブであることを確認したら、次のコマンドを使用します。

$ CREATE DATABASE mynewdb

このコマンドは、接続先のクラスター内に新しいデータベースを作成します。

まとめ

PostgreSQL でデータベース クラスタを作成して実行するために必要なすべてのコマンドは、詳細な説明とともに記事に記載されています。 この記事の説明に従うと、プロセスをより迅速に実行するのに役立ちます。

著者: Bilal Shahid
Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub