wake-up-neo.com

Was ist ein PostgreSQL "Cluster" und wie erstelle ich einen?

Ich bin sehr neu in Datenbanken, ich habe nicht viel daran gearbeitet. Jetzt möchte ich den Begriff Datenbankcluster verstehen. Ich habe viel gegoogelt und viele nützliche Links gefunden, aber ich kann sie nicht verstehen - vielleicht weil ich sehr wenig Grundwissen über Datenbanken habe und sie auch in einer sehr technischen Sprache waren.

Ich brauche Rat in diesen Punkten:

  1. Was sind Datenbankcluster in PostgreSQL?
  2. Wie erstelle ich Cluster in PostgreSQL?
57
Sunil Kumar

Ein PostgreSQL-Datenbank- "Cluster" ist ein Postmaster und eine Gruppe von Unterprozessen, die alle ein freigegebenes Datenverzeichnis verwalten, das eine oder mehrere Datenbanken enthält.

Der Begriff "Cluster" in PostgreSQL ist eine historische Eigenart*, und unterscheidet sich vollständig von der allgemeinen Bedeutung von "Compute Cluster" , die sich normalerweise auf Gruppen von Computern bezieht, die zusammenarbeiten, um eine höhere Leistung und/oder Verfügbarkeit zu erzielen. Es hat auch nichts mit dem PostgreSQL-Befehl CLUSTER zu tun, bei dem es um das Organisieren von Tabellen geht.


Wenn Sie dies lesen, suchen Sie möglicherweise tatsächlich nach Informationen zu Hochverfügbarkeit, Replikation oder Pooling. In diesem Fall sollten Sie den Wiki-Artikel Replikation, Clustering und Hochverfügbarkeit und Hochverfügbarkeit) lesen Verfügbarkeit Abschnitt des PostgreSQL-Handbuchs, dann schauen Sie in Tools wie repmgr .


Bei der Installation von PostgreSQL wird normalerweise ein Cluster für Sie erstellt. Bei der Installation wird normalerweise initdb ein neuer Cluster für Sie erstellt. Es ist ziemlich ungewöhnlich, dass ein Basis- oder Zwischenbenutzer jemals Cluster erstellen oder mehrere Cluster verwalten muss. Daher ist es hilfreich, wenn Sie erklären, warum Sie dies möchten Tun Sie dies und das zugrunde liegende Problem, das Sie zu lösen versuchen, ist . Das Benutzerhandbuch könnte dies wahrscheinlich besser erklären, da davon ausgegangen wird, dass Sie PostgreSQL aus dem Quellcode installieren und relativ wenige Leute dies tatsächlich tun.

Das Datenverzeichnis jedes Clusters wird mit initdb erstellt und von einem Postmaster verwaltet, der über einen Systemdienst (Windows-Dienst, launchd, init, upstart, systemd usw. je nach Betriebssystem und Version) oder direkt über pg_ctl.

Der Cluster verfügt über integrierte Datenbanken template0, template1 und postgres; Andere Datenbanken werden vom Benutzer erstellt.

Der Postmaster eines Clusters akzeptiert eingehende Verbindungen, indem er einen TCP-Port überwacht, und übergibt diese an Worker-Backends. Auf einem bestimmten Port kann nur ein Postmaster ausgeführt werden, sodass jeder Cluster einen anderen Port haben muss.

Ich schrieb mehr über die Struktur von PostgreSQL in diese vorherige Antwort . Siehe die Untertitel "Relationen? Schema? Huh?".

Wie Cluster in Pg "erstellt" werden, hängt ganz davon ab, wie Sie sie ausführen. Da du fragst, vermute ich, dass du auf einem Ubuntu-System bist, das pg_wrapper , in diesem Fall würden Sie das pg_wrapper Befehle wie pg_createcluster .


* Die Verwechslung zwischen einem "Cluster" in der PostgreSQL-Terminologie und der gebräuchlichen Verwendung des Begriffs "Cluster" ist eine verwirrende und bedauerliche historische Kuriosität, insbesondere wenn es um das Clustering von PostgreSQL-Instanzen geht. Sie können einen Cluster von PostgreSQL-Clustern haben, was nur schmerzhaft ist.

103
Craig Ringer