PostgreSQL のデータベース クラスタ
この記事では、データベース クラスターと、PostgreSQL でデータベース クラスターを作成する方法について説明します。 多くの場合、人々はこの用語を混同し、その概念を理解できません。
この記事は、データベース クラスターの概念を拡張するために作成されました。
この記事には、データベース クラスターを作成してセットアップするためのコマンドが含まれており、すぐに使い始めることができます。 記事に記載されているコマンドに正確に従ってください。
注: この記事に記載されているコマンドは Ubuntu でテストされており、他のオペレーティング システムでは正しく動作しない可能性があります。
データベース クラスタとは
データベースクラスター
という用語を簡単に理解してみましょう。 単一のデータベースに接続する複数のサーバーまたはインスタンスは、データベース クラスタリングと呼ばれます。
注: インスタンスは、データを格納するための物理ファイルを含むグループです。 これは、データベースと対話する一連のメモリとプロセスとして定義できます。
つまり、データベース クラスタは、実行中のデータベース サーバーの 1つのインスタンスのみによって管理される複数のデータベースのグループとして定義できます。
各データベース クラスタには個別の構成があり、異なるポート番号で動作します。 たとえば、PostgreSQL v9.4
を使用し、3つの関連データベースを持つデータベース クラスターがあるとします。
クラスター内のすべてのデータベースは、クラスターによって提供される同じ構成 (接続プール サイズ、バッファー サイズ、許可される接続数など) を使用します。
同様に、他の多くのクラスターは、異なる PostgreSQL バージョンで動作し、構成も異なります。
データベース クラスタの利点
データベース クラスタリングにはいくつかの利点があります。 主な利点のいくつかを以下に示します。
- 負荷分散またはデータベースのスケーラビリティ
- データベースの可用性の向上
- データのバックアップを可能にするデータの冗長性
- データベースの監視と自動化
データベース クラスタは 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 でデータベース クラスタを作成して実行するために必要なすべてのコマンドは、詳細な説明とともに記事に記載されています。 この記事の説明に従うと、プロセスをより迅速に実行するのに役立ちます。
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