web-dev-qa-db-ja.com

PostgreSQLの「クラスター」とは何ですか。どのように作成しますか?

私はデータベースに非常に新しいです、私はそれで多くをしませんでした。ここで、データベースクラスタという用語を理解したいと思います。私は多くのグーグルを検索し、多くの有用なリンクを見つけましたが、それらを理解することはできません-データベースに関する基本的な知識がほとんどなく、また非常に巧妙な言語であったためかもしれません。

これらの点に関するアドバイスが必要です。

  1. PostgreSQLのデータベースクラスターとは何ですか?
  2. PostgreSQLでクラスターを作成する方法は?
57
Sunil Kumar

PostgreSQLデータベースの「クラスター」は、1つ以上のデータベースを含む共有データディレクトリを管理するすべてのポストマスターおよび補助プロセスのグループです。

PostgreSQLの "cluster" という用語は歴史的な癖です*"compute cluster" の一般的な意味とは完全に異なります。これは通常、より高いパフォーマンスや可用性を実現するために連携するコンピューターのグループを指します。また、テーブルの整理に関するPostgreSQLコマンドCLUSTERとは無関係です。


これを読んでいる場合は、実際に高可用性、レプリケーション、またはプーリングに関する情報を探しているかもしれません。その場合、 レプリケーション、クラスタリング、高可用性 wiki記事と 高可用性 PostgreSQLマニュアルのセクション、そして repmgr のようなツールを調べてください。


通常、PostgreSQLをインストールすると、クラスターが作成されます。通常、インストールによりinitdb新しいクラスターが作成されます。基本ユーザーまたは中間ユーザーがクラスターを作成したり、複数のクラスターを管理したりする必要があることは非常に珍しいため、whyを説明すると役立ちますこれを行い、解決しようとしている根本的な問題は何ですかユーザーマニュアル は、PostgreSQLをソースからインストールすることを想定しており、実際にそれを行う人は比較的少ないため、おそらくこれをより適切に説明できます。

各クラスターのデータディレクトリは、initdbで作成され、システムサービス(Windowsサービス、launchdinitupstartsystemdを介して開始されるポストマスターで管理されます。など、オペレーティングシステムとバージョンに応じて)、またはpg_ctlを介して直接。

クラスターには、組み込みデータベースtemplate0template1およびpostgresがあります。他のデータベースはユーザーが作成します。

クラスターのポストマスターは、TCPポートでリッスンすることで着信接続を受け入れ、それらをワーカーバックエンドに渡します。特定のポートで実行できるポストマスターは1つだけなので、各クラスターには異なるポートが必要です。

PostgreSQLの構造について詳しくは この前の回答 で書きました。小見出し「関係?スキーマ?え?」を参照してください。

Pgでクラスターを「作成」する方法は、クラスターの実行方法に完全に依存します。あなたが尋ねているので、 pg_wrapper を使用するUbuntuシステムを使用していると思われます。この場合、 pg_wrapper のようなpg_createclusterコマンドを使用します。


* PostgreSQLの用語での「クラスター」と「クラスター」という用語の一般的な使用法との混乱は、特にPostgreSQLインスタンスのクラスタリングについて議論する場合、混乱を招き、残念な歴史上の奇妙さです。 PostgreSQLクラスタのクラスタを作成することもできますが、これは非常に苦痛です。

103
Craig Ringer