Quando o dispositivo primário falha, você pode executar um failover de banco de dados. Este tópico descreve o procedimento para os dispositivos que executam versões anteriores à 9.0.0.

Observação: Esse tópico se aplica somente a dispositivos que executam versões anteriores à 9.0.0. Para obter informações pertinentes aos dispositivos mais recentes, consulte Failover de banco de dados - Dispositivos mais recentes.

Quando o dispositivo primário falha, o banco de dados secundário é somente leitura. Quando ocorrer um failover, realize as seguintes tarefas:

  • Ativar as operações de gravação no banco de dados secundário
  • Promover permanentemente o dispositivo secundário do provedor de serviços para se tornar o primário
  • Promover permanentemente o dispositivo de tenant secundário para que ele se torne o primário
  • Reiniciar o dispositivo primário

Ativar as operações de gravação no banco de dados secundário

A meta desse procedimento será alternar o banco de dados mestre com o dispositivo secundário (tenant ou provedor de serviços) se o dispositivo primário não estiver disponível. O objetivo é ativar as operações de gravação para que o banco de dados do dispositivo secundário seja a fonte de dados mestre.

  1. Pare o dtService, o av-manager e o serviço de diagnóstico no dispositivo primário (se acessível) e no dispositivo secundário:
    sudo service dtService stop
    sudo service av-manager stop
    sudo service diagnose stop
  2. Pare todos os daemons do slony nos dispositivos primários (se acessíveis) e secundários:
    sudo killall slon
  3. No dispositivo secundário, conecte-se ao banco de dados fdb e execute o seguinte comando SQL:
     drop schema _slony cascade;
  4. Repita a etapa 3 para o EDB e AVDB se o dispositivo pertencer a uma organização de tenant.
  5. Se o banco de dados no dispositivo primário ainda estiver acessível, faça backup do banco de dados, copie os arquivos do banco de dados e restaure o banco de dados no dispositivo secundário (consulte Fazendo Backup e Restaurando Bancos de Dados).
  6. Abra o arquivo /usr/local/desktone/release/active/conf/fdb.properties para editar e remover o endereço IP do dispositivo primário.
  7. Repita a etapa 6 para /usr/local/desktone/release/active/edb.properties se o dispositivo pertencer a uma organização de tenant.
  8. Repita a etapa 6 para /usr/local/desktone/release/active/avdb.properties se o dispositivo pertencer a uma organização de tenant.
  9. Defina as variáveis de ambiente DB_HOST e DB_PASSWORD:
    export DB_HOST=IP_of_TA2_appliance
    export DB_PASSWORD=database_password
    
  10. Execute o script av-setup como sudo:
    sudo /usr/local/desktone/scripts/av-setup
  11. Abra o arquivo applications.properties para edição:
    vi /usr/local/xmpms/diagnose/config/application.properties
  12. No arquivo applications.properties, edite as linhas da seguinte maneira:
    db.jdbc.url=jdbc:postgresql://<ip address>:5432/avdb?ssl=true
    db.fdb.jdbc.url=jdbc:postgresql://<ip address>:5432/fdb?ssl=true
    
  13. Inicie o dtService, o av-manager e o serviço de diagnóstico no dispositivo secundário:
    service dtService start
    service av-manager start
    service diagnose start

Promover o dispositivo secundário do provedor de serviços para primário

Para promover permanentemente o dispositivo secundário do provedor de serviços para ser o dispositivo primário do provedor de serviços, execute as seguintes etapas.

Neste exemplo, o dispositivo primário é “A” e o dispositivo secundário é “B”, e o dispositivo A está acessível (o banco de dados neste dispositivo está acessível).

  1. Pare o dtService em todos os dispositivos do provedor de serviços:
    service dtService stop
  2. Faça login em todos os dispositivos do provedor de serviços.
  3. Abra o arquivo /usr/local/desktone/release/active/conf/fdb.properties para editar e remover o endereço IP do dispositivo primário que está com status de falha.
  4. Pare todos os daemons do slony em todos os dispositivos do provedor de serviços:
    killall slon
  5. Nos dispositivos primário e secundário, conecte-se ao banco de dados FDB e execute o seguinte comando SQL:
    drop schema _slony cascade;
  6. Execute os seguintes comandos SQL no dispositivo secundário do centro de dados (substitua “A” e “B” pelos nomes de seus dispositivos):
    fdb=# update appliance set capabilities = (capabilities & 65343) where name='A'; 
    fdb=# update appliance set capabilities = (capabilities | 192) where name='B';
  7. Inicie o dtService nos dispositivos do provedor de serviços diferentes do dispositivo que falhou:
    service dtService start

    Confirme se o dispositivo está em execução antes de prosseguir com a próxima etapa.

  8. Pare o dtService em todos os dispositivos do provedor de serviços, exceto para o dispositivo do provedor de serviços mestre (o dispositivo do provedor de serviços secundário é o mestre):
    service dtService stop
  9. Inicie os daemons do slon em todos os dispositivos do provedor de serviços:
    /usr/local/desktone/scripts/start_slon_fdb.sh
  10. Faça login no Centro de Serviço do dispositivo do provedor de serviços mestre (o dispositivo do provedor de serviços secundário é o mestre) com seu navegador e realize a operação de reinicialização do slony:
    1. Navegue até dispositivos > manutenção > Operações do Slony.
    2. Na lista suspensa ID da Organização, selecione 1000.
    3. Clique no botão Inicializar Slony para reinicializar o Slony.
  11. Quando a reinicialização do Slony estiver concluída, execute o seguinte comando no FDB do dispositivo secundário no centro de dados:
    SELECT a.set_id, a.set_comment, (SELECT last_value FROM _slony.sl_local_node_id) AS local_id, CASE WHEN a.set_origin = (SELECT  last_value FROM _slony.sl_local_node_id)THEN TRUE ELSE FALSE END AS master_node from _slony.sl_set a;

    A saída deve ser exibida da seguinte maneira:

    set_id | set_comment | local_id | master_node
    --------+--------------------------+----------+-------------   
    1 | All tables and Sequences | 1 | t  
    (1 row)
  12. Inicie o dtService em todos os dispositivos, exceto o dispositivo do provedor de serviços com falha.
    service dtService start

Promover o Dispositivo do Tenant Secundário para Primário

Para promover permanentemente o dispositivo secundário do tenant para ser o dispositivo primário do tenant, execute as seguintes etapas.

Neste exemplo, o dispositivo primário é “A” e o dispositivo secundário é “B”, e o dispositivo A está acessível (o banco de dados neste dispositivo está acessível).

  1. Pare o dtService em todos os dispositivos do tenant na organização:
    service dtService stop
  2. Faça login em todos os dispositivos do tenant na organização.
  3. Abra o arquivo /usr/local/desktone/release/active/conf/fdb.properties para editar e remover o endereço IP do dispositivo primário que está com status de falha.
  4. Pare todos os daemons do slony em todos os dispositivos do tenant na organização:
    killall slon
  5. Se necessário, faça backup do banco de dados no dispositivo mestre e restaure-o nos dispositivos subordinados.
  6. Nos dispositivos mestre e subordinado, conecte-se ao banco de dados FDB e execute o seguinte comando SQL:
    drop schema _slony cascade;
  7. Execute os seguintes comandos SQL no dispositivo do provedor de serviços mestre (substitua 'A' e 'B' pelos nomes de seus dispositivos):
    fdb=# update appliance set capabilities = (capabilities & 65343) where name='A';  
    fdb=# update appliance set capabilities = (capabilities | 192) where name='B';
  8. Inicie os daemons do slon em todos os dispositivos do tenant na organização:
    /usr/local/desktone/scripts/start_slon_fdb.sh  
    /usr/local/desktone/scripts/start_slon_edb.sh  
    /usr/local/desktone/scripts/start_slon_avdb.sh
  9. Faça login no Centro de Serviço do dispositivo do provedor de serviços mestre com seu navegador e realize a operação de reinicialização do slony:
    1. Navegue até dispositivos > manutenção > Operações do Slony.
    2. Selecione ID da organização para o tenant na lista suspensa ID da Organização.
    3. Selecione Malha para o rótulo de nome da instância do DB.
    4. Clique no botão Inicializar Slony para reinicializar o Slony.
  10. Quando a reinicialização do Slony estiver concluída, execute o seguinte comando no FDB do dispositivo do tenant secundário no centro de dados:
    SELECT a.set_id, a.set_comment, (SELECT last_value FROM _slony.sl_local_node_id) AS local_id, CASE WHEN a.set_origin = (SELECT  last_value FROM _slony.sl_local_node_id) THEN TRUE ELSE FALSE END AS master_node from _slony.sl_set a;

    A saída deve aparecer da seguinte maneira (se o dispositivo primário tiver falhado no centro de dados inicial):

    set_id | set_comment | local_id | master_node  
    --------+--------------------------+----------+-------------   
    1 | All tables and Sequences | 1 | t
    (1 row)
  11. Inicie o dtService em todos os dispositivos do tenant, exceto no dispositivo do tenant que está com o status de falha.
     service dtService start

Reiniciar o Dispositivo Primário

Ao reiniciar o dispositivo primário após o failover, execute uma reinicialização do slony no EDB e no AVDB.