Wenn die Appliance-Datenbank ausfällt und keine Datenbankknoten ausgeführt werden oder bei Ausfall des Masters alle Replikatknoten nicht synchronisiert sind, gehen Sie wie folgt vor, um die Wiederherstellung der Datenbank zu versuchen.

Warum und wann dieser Vorgang ausgeführt wird

Dieses Verfahren gilt für Situationen, in denen in einem Cluster im asynchronen Modus keine Datenbankknoten betriebsbereit sind. In diesem Szenario werden normalerweise auf der Seite der Virtual Appliance Management Interface (VAMI) Fehler ähnlich der folgenden angezeigt, wenn Sie versuchen, die Seite zu laden oder zu aktualisieren:

Fehler beim Initialisieren des Datenbankdiensts: JDBC-Verbindung für Transaktion konnte nicht geöffnet werden; verschachtelte Ausnahme ist org.postgresql.util.PSQLException: Der Verbindungsversuch ist fehlgeschlagen.

Prozedur

  1. Versuchen Sie, die Datenbank mithilfe der Virtual Appliance Management Interface (VAMI) über einen der Datenbankknoten wiederherzustellen.
    1. Öffnen Sie, falls möglich, die VAMI-Datenbankseite des Knotens mit dem aktuellsten Stand. Im Normalfall war dieser Knoten der Masterknoten, bevor die Datenbank ausgefallen ist.
    2. Wenn die VAMI für den Masterknoten nicht geöffnet werden kann, versuchen Sie, sie für andere Replikatknoten zu öffnen.
    3. Wenn Sie einen Datenbankknoten mit einer funktionierenden Virtual Appliance Management Interface (VAMI) finden, versuchen Sie, ihn mithilfe eines manuellen Failovers wiederherzustellen.
  2. Wenn das Verfahren bei Schritt 1 fehlschlägt, starten Sie eine Shell-Sitzung und versuchen Sie, den Knoten mit dem neuesten Stand zu ermitteln. Starten Sie eine Shell-Sitzung mit Verbindung zu allen verfügbaren Clusterknoten und versuchen Sie, deren Datenbanken zu starten, indem Sie den folgenden Shell-Befehl ausführen: service vpostgres start
  3. Gehen Sie für jeden Knoten, auf dem eine lokale Datenbank ausgeführt wird, wie folgt vor, um den Knoten mit dem neuesten Stand zu ermitteln.
    1. Führen Sie den folgenden Befehl aus, um den Knoten mit dem neuesten Stand zu ermitteln. Wenn der Befehl f zurückgibt, handelt es sich um den Knoten mit dem neuesten Stand und Sie können mit Schritt 4 fortfahren.
      su - postgres
      psql vcac
      vcac=# select pg_is_in_recovery();
       pg_is_in_recovery
      • Wenn dieser Befehl ein f zurückgibt, weist dieser Knoten den neuesten Stand auf.

      • Wenn der Knoten ein t zurückgibt, führen Sie den folgenden Befehl auf dem Knoten aus:

      SELECT pg_last_xlog_receive_location() as receive_loc, pg_last_xlog_replay_location() as replay_loc, extract(epoch from pg_last_xact_replay_timestamp()) as replay_timestamp;

      Dieser Befehl sollte ein Ergebnis ähnlich dem nachfolgend dargestellten zurückgeben.

      vcac=# SELECT pg_last_xlog_receive_location() as receive_loc, pg_last_xlog_replay_location() as replay_loc, extract(epoch from pg_last_xact_replay_timestamp()) as replay_timestamp;
       receive_loc | replay_loc | replay_timestamp
      -------------+------------+------------------
       0/20000000 | 0/203228A0 | 1491577215.68858
      (1 row)
      
  4. Vergleichen Sie die Ergebnisse aller Knoten, um zu ermitteln, welcher von ihnen den neusten Stand aufweist.

    Wählen Sie den Knoten mit dem größten Wert in der Spalte receive_loc aus. Bei gleichen Werten wählen Sie den Knoten mit dem größten Wert in der Spalte replay_loc aus, und wenn auch hier sich mehrere Knoten denselben größten Wert teilen, wählen Sie unter diesen den Knoten mit dem größten Wert in der Spalte replay_timestamp aus.

  5. Führen Sie den folgenden Befehl auf dem Knoten mit dem neusten Stand aus: vcac-vami psql-promote-master -force
  6. Öffnen Sie die Datei /etc/haproxy/conf.d/10-psql.cfg in einem Texteditor und aktualisieren Sie die folgende Zeile
    server masterserver sc-rdops-vm06-dhcp-170-156.eng.vmware.com:5432 check on-marked-up shutdown-backup-sessions
    

    Unter Verwendung des FQDN des aktuellen Knotens wie folgt:

    server masterserver fqdn-des-aktuellen-Knoten:5432 check on-marked-up shutdown-backup-sessions
  7. Speichern Sie die Datei.
  8. Führen Sie den Befehl service haproxy restart aus.
  9. Öffnen Sie die VAMI-Datenbankseite für den Knoten mit dem neusten Stand.

    Dieser Knoten sollte als Masterknoten und die anderen Knoten als ungültige Replikate angezeigt werden. Darüber hinaus ist die Schaltfläche Zurücksetzen für die Replikate aktiviert.

  10. Klicken Sie der Reihe nach für jedes Replikat auf Zurücksetzen und Aktualisieren, bis der Cluster-Zustand wiederhergestellt ist.