Se o banco de dados do appliance falhar e nenhum dos nós de banco de dados estiver funcionando e em execução ou se todos os nós de réplica estiverem fora de sincronia quando o mestre falhar, utilize o procedimento a seguir para tentar recuperar o banco de dados.

Por Que e Quando Desempenhar Esta Tarefa

Esse procedimento se aplica a situações em que nenhum nó de banco de dados está operacional em um cluster que está sendo executado no modo assíncrono. Neste cenário, você normalmente verá erros semelhantes aos seguintes na página da Interface de Gerenciamento do Appliance Virtual durante a tentativa de carregar ou atualizar a página:

Erro ao inicializar o serviço do banco de dados: não foi possível abrir a Conexão JDBC para a transação; a exceção aninhada é org.postgresql.util.PSQLException: Falha na tentativa de conexão.

Procedimento

  1. Tente recuperar o banco de dados usando a Interface de Gerenciamento do Appliance Virtual de um de nós do banco de dados.
    1. Se possível, abra a página do banco de dados da interface de gerenciamento do appliance virtual do nó com o estado mais atual. Normalmente, esse nó é aquele que era o nó mestre antes do banco de dados falhar.
    2. Se a Interface de Gerenciamento do Appliance Virtual para o nó mestre falhar ao abrir, tente abrir a Interface para outros nós de réplica.
    3. Se você puder encontrar um nó de banco de dados com uma Interface de Gerenciamento do Appliance Virtual em funcionamento, tente recuperá-la realizando um failover manual.
  2. Se o procedimento na etapa 1 falhar, inicie uma sessão shell e tente determinar o nó com o estado mais recente. Inicie uma sessão shell para todos os nós disponíveis do cluster e tente iniciar seus bancos de dados executando o seguinte comando shell: service vpostgres start
  3. Use o procedimento a seguir para cada nó que tenha um banco de dados local em execução para determinar o nó com o estado mais recente.
    1. Execute o seguinte comando para determinar o nó com o estado mais recente. Se o comando retornar como f, ele será o nó com o estado mais recente e você poderá prosseguir para a etapa 4.
      su - postgres
      psql vcac
      vcac=# select pg_is_in_recovery();
       pg_is_in_recovery
      • Se esse comando retornar como f, esse nó terá o estado mais recente.

      • Caso o nó retorne um t, execute o seguinte comando no nó:

      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;

      Esse comando deve retornar um resultado semelhante ao seguinte.

      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. Compare os resultados para cada nó para determinar qual deles tem o estado mais recente.

    Selecione o nó com o maior valor na coluna receive_loc. Se for igual, selecione o maior da coluna replay_loc e, em seguida, se for igual novamente, selecione o nó com o maior valor da coluna replay_timestamp.

  5. Execute o seguinte comando no nó com o estado mais recente: vcac-vami psql-promote-master -force
  6. Abra o arquivo /etc/haproxy/conf.d/10-psql.cfg em um editor de texto e atualize a seguinte linha.
    server masterserver sc-rdops-vm06-dhcp-170-156.eng.vmware.com:5432 check on-marked-up shutdown-backup-sessions
    

    Para ficar da seguinte maneira com o nó FQDN atual:

    server masterserver current-node-fqdn:5432 check on-marked-up shutdown-backup-sessions
  7. Salve o arquivo.
  8. Execute o comando service haproxy restart.
  9. Abra a página do banco de dados da Interface de Gerenciamento do Appliance Virtual para o nó mais recente.

    Este nó deve aparecer como o nó mestre e os outros nós devem ser réplicas inválidas. Além disso, o botão Redefinir para as réplicas está habilitado.

  10. Clique em Redefinir e Atualizar para cada réplica sucessivamente até o estado do cluster seja reparado.