web-dev-qa-db-fra.com

Création de cluster de haute disponibilité avec PostgreSQL

Je suis nouveau à la conception de la base de données. J'ai une tâche pour créer un cluster à haute disponibilité. J'ai beaucoup googlé, mais je n'ai trouvé aucun bon moyen de le faire sur PostgreSQL.

Où devrais-je commencer et quelles sont les étapes impliquées dans la création d'un cluster à haute disponibilité?

3
Sunil Kumar

Il existe de nombreuses façons de mettre en place un cluster HA pour PostgreSQL. Certaines façons sont grandes et difficiles.

La méthode la plus facile est la suivante:

  1. synchronisez votre dB sur un serveur de secours
  2. Installez le battement de coeur et faites un cluster asymétrique

Cette méthode est la méthode la plus simple pour construire un cluster HA avec une dégradation gracieuse.

2
cc4re

La plupart des méthodes de réplication sont généralement asynchrones. Je recommande ce qui suit:

  • Installez PostgreSQL sur deux serveurs DB.
  • Installez DRBD sur deux serveurs DB
  • installez soit UCARP ou Linux Heartbeat Pour créer [.____]
    • DB VIP
    • Basculement automatique
  • Mount DRBD Primaire sur les données PostgreSQL par défaut
  • Copier les données postgresql dans elle
  • Démarrage PostgreSQL sur DRBD primaire

N'oubliez pas que DRBD est une réplication synchrone du niveau de disque .

Mise à jour 2012-10-18 12:01 EDT

Puisque DRBD est un réseau actif/passif RAID-1, faisant la stonith (tirant l'autre Node dans la tête) doit être logé par un basculement automatique correctement scripté. De plus, la taille passive (AKA DRBD Secondaire ) n'a pas d'exécution PostgreSQL. DRBD sera simple que la configuration du réseau RAID-1 Effectuer une réplication de disque. L'UPScript que vous avez configuré pour UCARP ou votre battement de cœur devrait être responsable de la pessimisme en procédant comme suit:

  1. en supposant que dbvip
    • une. Si DBVIP est toujours utilisé sur DRBD primaire, le secondaire DRBD ne peut pas assumer DBVIP
    • b. Si DBVIP n'est pas utilisé sur le primaire DRBD, DRBD Secondary peut assumer DBVIP
  2. split le cerveau de la DRBD (c'est-à-dire, faisant monter le côté passive en tant que primaire DRBD)
  3. montage /dev/drbd0 sur /var/lib/pgsql
  4. démarrer PostgreSQL

Si vous utilisez un DBVIP uniquement sur un serveur uniquement, ne vous inquiétez pas du scénario cérébral scindé. Celui qui a le DBVIP déterminera où les données sont écrites. Si la DRBD secondaire (AKA Taille passive) exécute les quatre étapes susmentionnées, vous devez vous assurer que le sprunt pour UCARP ou HeartBeat détecte que le DBVIP (c'est-à-dire ping -c sur DBVIP et revient avec NOTHIN) est disponible pour vous avant de vous Run ip addr add DBVIP/32 dev (interface).

Une fois qu'un basculement automatique s'est produit, votre métaphorise gère la stonith en exécutant la baisse de l'UCARP ou du battement de cœur à

  • Arrêt PostgreSQL
  • Démonter /var/lib/pgsql À partir de /dev/drbd0
  • drbdadm disconnect drbd0
  • drbdadm secondary drbd0

Ensuite, lorsque vous savez que DBVIP est sur le nouveau primaire, goto le nouveau DRBD primaire et exécuté drbdadm connect drbd0 Et moniteur cat /proc/drbd Pour vous assurer que le nouveau DRBD PRIMAR synchronise le nouveau DRBD Secondaire

2
RolandoMySQLDBA