Qu'est-ce Qu'un "Cluster" PostgreSQL et comment en créer un?

Je suis très nouveau dans les bases de données, je n'ai pas beaucoup travaillé dessus. Maintenant, je veux comprendre le terme clusters de base de données. J'ai beaucoup googlé et trouvé de nombreux liens utiles, mais je ne suis pas capable de les comprendre - peut-être parce que j'ai très peu de connaissances de base sur les bases de données et aussi ils étaient dans un langage très technique.

J'ai besoin de conseils sur ces points:

  1. Que sont les clusters de base de données dans PostgreSQL?
  2. Comment créer des clusters dans PostgreSQL?
46
demandé sur a_horse_with_no_name 2012-10-16 09:38:45

1 réponses

Un "cluster" de base de données PostgreSQL est un postmaster et un groupe de processus subsidiaires, tous gérant un répertoire de données partagé contenant une ou plusieurs bases de données.

Le terme "cluster" dans PostgreSQL est une bizarrerie historique*, et est complètement différent de la signification générale de "cluster de calcul" , qui se réfère normalement à des groupes d'ordinateurs qui travaillent ensemble pour atteindre des performances et/ou une disponibilité plus élevées. Il est également non lié à la Commande PostgreSQL CLUSTER, qui concerne l'organisation des tables.


Si vous lisez ceci, vous cherchez peut-être des informations sur la haute disponibilité, la réplication ou la mise en commun, auquel cas vous devriez lire l'article du wiki réplication, Clustering et haute disponibilité et la section haute disponibilité du manuel PostgreSQL, puis regarder dans des outils comme repmgr.


Un cluster est normalement créé pour vous lorsque vous installez PostgreSQL; l'installation sera généralement initdb un nouveau cluster pour vous. Il est assez inhabituel pour un utilisateur de base ou intermédiaire d'avoir besoin de créer des clusters ou de gérer plusieurs clusters, donc cela vous aiderait si vous expliquiez pourquoi vous voulez faire cela, et Quel est le problème sous-jacent que vous essayez de résoudre est. Le manuel d'utilisation {[18] } pourrait probablement mieux expliquer cela, car il suppose que vous installez PostgreSQL à partir de la source et que relativement peu de gens le font réellement que.

Le répertoire de données de chaque cluster est créé avec initdb et géré avec un postmaster démarré via un service système (service Windows, launchd, init, upstart, systemd, etc selon le système d'exploitation et la version) ou directement via pg_ctl.

, Le groupe a intégré dans les bases de données template0, template1 et postgres; d'autres bases de données sont créées par l'utilisateur.

Le maître de poste d'un cluster accepte les connexions entrantes en écoutant sur un port tcp et les transmet à worker backends. Seul un administrateur peut exécuter sur un port donné, de sorte que chaque cluster doit avoir un port différent.

J'ai écrit plus sur la structure de PostgreSQL dans cette réponse précédente . Voir la sous-rubrique "Relations? Schéma? Hein?".

Comment "créer" des clusters dans Pg dépend entièrement de la façon dont vous l'exécutez. Puisque vous demandez, je soupçonne que vous êtes sur un système Ubuntu qui utilise pg_wrapper, dans ce cas, vous utiliseriez les commandes pg_wrapper comme pg_createcluster.


* la confusion entre un "cluster" dans la terminologie PostgreSQL et l'usage courant du terme "cluster" est une bizarrerie historique confuse et regrettable, en particulier lors de la discussion du clustering des instances PostgreSQL. Vous pouvez avoir un cluster de clusters PostgreSQL, ce qui est juste douloureux.

87
répondu Craig Ringer 2017-05-23 11:55:07