Se il database dell'appliance ha un problema e nessuno dei nodi del database è in funzione o tutti i nodi di replica sono fuori sincronizzazione nel momento in cui si verifica l'errore del master, utilizzare la seguente procedura per tentare di ripristinare il database.

Questa procedura si applica nelle situazioni in cui nessuno dei nodi del database è operativo in un cluster che è in esecuzione in modalità asincrona. In una situazione di questo tipo, in genere vengono mostrati errori simili al seguente nella pagina dell'interfaccia di gestione dell'appliance virtuale quando si tenta di caricare o aggiornare la pagina:

Error initializing the database service: Could not open JDBC Connection for transaction; nested exception is org.postgresql.util.PSQLException: The connection attempt failed.

Procedura

  1. Provare a ripristinare il database utilizzando l'interfaccia di gestione dell'appliance virtuale da uno dei nodi del database.
    1. Se possibile, aprire la pagina Cluster dell'interfaccia VAMI del nodo con lo stato più recente. In genere, questo nodo è quello che era il nodo master prima dell'errore del database.
    2. Se l'apertura dell'interfaccia di gestione dell'appliance virtuale per il nodo master non riesce, provare ad aprire l'interfaccia per altri nodi di replica.
    3. Se è possibile trovare un nodo di database con un'interfaccia di gestione dell'appliance virtuale funzionante, provare a ripristinarlo eseguendo un failover manuale.
  2. Se la procedura al passaggio 1 non riesce, avviare una sessione della shell e provare a stabilire il nodo con lo stato più recente. Avviare una sessione della shell per tutti i nodi del cluster disponibili e provare ad avviare i relativi database eseguendo il seguente comando della shell: service vpostgres start
  3. Attenersi alla seguente procedura per ogni nodo che dispone di un database locale in esecuzione per determinare il nodo con lo stato più recente.
    1. Eseguire il comando seguente per determinare il nodo con lo stato più recente. Se il comando restituisce f, è quello il nodo con lo stato più recente ed è possibile continuare dal passaggio 4.
      su - postgres
      psql vcac
      vcac=# select pg_is_in_recovery();
       pg_is_in_recovery
      • Se questo comando restituisce f, questo nodo presenta lo stato più recente.
      • Se il nodo restituisce t, eseguire il comando seguente nel nodo:
      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;
      Questo comando dovrebbe restituire un risultato simile al seguente.
      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. Confrontare i risultati per ciascun nodo per determinare quale dispone dello stato più recente.
    Selezionare il nodo con il valore più grande nella colonna receive_loc. Se i valori sono uguali, selezionare il nodo con il valore più grande nella colonna replay_loc e, se i valori sono ancora uguali, selezionare il nodo con il valore più grande in replay_timestamp.
  5. Eseguire il comando seguente nel nodo con lo stato più recente: vcac-vami psql-promote-master -force
  6. Aprire il file /etc/haproxy/conf.d/10-psql.cfg in un editor di testo e aggiornare la riga seguente.
    server masterserver sc-rdops-vm06-dhcp-170-156.eng.vmware.com:5432 check on-marked-up shutdown-backup-sessions
    
    Il nome di dominio completo del nodo corrente dev'essere simile al seguente:
    server masterserver current-node-fqdn:5432 check on-marked-up shutdown-backup-sessions
  7. Salvare il file.
  8. Eseguire il comando service haproxy restart.
  9. Aprire la pagina Cluster dell’interfaccia VAMI per il nodo più recente.
    Questo nodo dovrebbe risultare il nodo master e gli altri nodi repliche non valide. Inoltre viene abilitato il pulsante Reimposta per le repliche.
  10. Fare clic su Reimposta per ciascuna replica in successione fino al ripristino dello stato del cluster.