Alta disponibilidade e recuperação de desastre no Linux e no macOS

Baixar driver ODBC

Os drivers ODBC para Linux e macOS são grupos de disponibilidade Always On. Para obter mais informações sobre os grupos de disponibilidade Always On, confira:

Você pode especificar o ouvinte de um determinado grupo de disponibilidade na cadeia de conexão. Se um aplicativo ODBC no Linux ou macOS estiver conectado a um banco de dados em um grupo de disponibilidade que faz failover, a conexão original será interrompida. O aplicativo deverá abrir uma nova conexão para continuar o trabalho após o failover.

Os drivers ODBC no Linux e no macOS iteram sequencialmente em todos os endereços IP associados com um nome de host DNS se você não está se conectando a um ouvinte de grupo de disponibilidade. Se o primeiro endereço IP retornado do servidor DNS não for conectável, essas iterações poderão ser demoradas.

Ao se conectar a um ouvinte do grupo de disponibilidade, o driver tenta estabelecer conexões com todos os endereços IP em paralelo. Se uma tentativa de conexão obtiver êxito, o driver descartará as tentativas de conexão pendentes.

Observação

Como uma conexão pode falhar devido a um failover de grupo de disponibilidade, você deve implementar a lógica de repetição de conexão. Repetir uma conexão com falha até que ela se reconecte. Aumentar o tempo limite de conexão e implementar a lógica de repetição de conexão aumentará a probabilidade de se conectar a um grupo de disponibilidade.

Conectar-se com o MultiSubnetFailover

Especifique sempre MultiSubnetFailover=Yes ao se conectar a um ouvinte do grupo de disponibilidade SQL Server 2012 (11.x) ou à instância de cluster de failover SQL Server 2012 (11.x). O MultiSubnetFailover permite failover mais rápido para todos os grupos de disponibilidade e a instância de cluster de failover no SQL Server 2012 (11.x).

Essa propriedade de conexão também reduz significativamente o tempo de failover para topologias AlwaysOn únicas e com várias sub-redes. Durante um failover de várias sub-redes, o cliente tentará conexões em paralelo. Durante um failover de sub-rede, o driver repete agressivamente a conexão TCP.

A propriedade de conexão MultiSubnetFailover indica que o aplicativo está sendo implantado em um grupo de disponibilidade ou instância de cluster de failover. O driver tenta se conectar ao banco de dados na instância primária do SQL Server experimentando todos os endereços IP.

Quando você se conecta ao MultiSubnetFailover=Yes, o cliente tenta a conexão TCP mais rapidamente do que os intervalos de retransmissão TCP padrão do sistema operacional. MultiSubnetFailover=Yes permite uma reconexão mais rápida após o failover de um grupo de disponibilidade AlwaysOn ou uma instância de cluster de failover AlwaysOn. MultiSubnetFailover=Yes se aplica tanto a grupos de disponibilidade e instâncias de cluster de failover únicos quanto de várias sub-redes.

Use MultiSubnetFailover=Yes ao se conectar a um ouvinte do grupo de disponibilidade ou à instância de cluster de failover. Caso contrário, o desempenho de seu aplicativo pode ser afetado negativamente.

Recomendações

Quando você estiver se conectando a um servidor em um grupo de disponibilidade ou instância de cluster de failover:

  • Especifique MultiSubnetFailover=Yes para melhorar o desempenho ao se conectar a uma sub-rede única ou a um grupo de disponibilidade de várias sub-redes.

  • Especifique o ouvinte do grupo de disponibilidade como o servidor em sua cadeia de conexão.

  • Não é permitido se conectar a uma instância do SQL Server configurada com mais de 64 endereços IP.

  • A autenticação SQL Server ou a autenticação Kerberos podem ser usadas com MultiSubnetFailover=Yes, sem afetar o comportamento do aplicativo.

  • Você pode aumentar o valor de loginTimeout para acomodar o tempo de failover e reduzir as tentativas de repetição de conexão do aplicativo.

  • Não há suporte para transações distribuídas.

Se o roteamento somente leitura não estiver em ação, conectar-se a um local de réplica secundário em um grupo de disponibilidade apresentará falha nas seguintes situações:

  • Se o local de réplica secundário não for configurado para aceitar conexões.

  • Se um aplicativo usar ApplicationIntent=ReadWrite e o local de réplica secundária estiver configurado para acesso somente leitura.

Uma conexão falha se uma réplica primária estiver configurada para rejeitar cargas de trabalho somente leitura e a cadeia de conexão contiver ApplicationIntent=ReadOnly.

Especificar a intenção do aplicativo

Você pode especificar a palavra-chave ApplicationIntent na sua cadeia de conexão. Os valores atribuíveis são ReadWrite (o padrão) ou ReadOnly.

Quando você define ApplicationIntent=ReadOnly, o cliente solicita uma carga de trabalho de leitura ao se conectar. O servidor impõe a intenção no momento da conexão e durante uma instrução do banco de dados USE.

A palavra-chave ApplicationIntent não funciona com bancos de dados herdados somente leitura.

Destinos de ReadOnly

Quando uma conexão escolhe ReadOnly, ela é atribuída a qualquer uma das configurações especiais que podem existir para o banco de dados:

  • Always On. Um banco de dados pode permitir ou não cargas de trabalho de leitura no banco de dados do grupo de disponibilidade de destino. Essa opção é controlada usando a cláusula ALLOW_CONNECTIONS das instruções do Transact-SQL PRIMARY_ROLE e SECONDARY_ROLE.

  • Replicação geográfica

  • Escala de leitura

Se nenhum desses destinos especiais estiver disponível, o banco de dados regular será lido.

A palavra-chave ApplicationIntent permite o roteamento somente leitura.

Roteamento somente leitura

O roteamento somente leitura é um recurso que pode garantir a disponibilidade de uma réplica somente leitura de um banco de dados. Para habilitar o roteamento somente leitura, todos os itens a seguir se aplicam:

  • Você deve se conectar a um ouvinte do grupo de disponibilidade Always On.

  • A palavra-chave de cadeia de conexão ApplicationIntent deve ser definida como ReadOnly.

  • O grupo de disponibilidade deve ser configurado pelo administrador de banco de dados para permitir o roteamento somente leitura.

Várias conexões que usam roteamento somente leitura podem se conectar à mesma réplica somente leitura. Alterações na sincronização de banco de dados ou alterações na configuração de roteamento de servidor podem resultar em conexões de cliente com réplicas somente leitura diferentes.

Você pode garantir que todas as solicitações somente leitura conectem-se à mesma réplica somente leitura, não transmitindo um ouvinte de grupo de disponibilidade à palavra-chave de cadeia de conexão Server. Em vez disso, especifique o nome da instância somente leitura.

O roteamento somente leitura pode levar mais tempo do que se conectar ao principal. Isso é porque o roteamento somente leitura se conecta primeiro à instância primária e, em seguida, procura a melhor instância secundária legível disponível. Devido a essas várias etapas, você deve aumentar seu tempo limite do login para no mínimo 30 segundos.

Sintaxe do ODBC

Duas palavras-chave de cadeia de conexão ODBC são grupos de disponibilidade Always On:

  • ApplicationIntent

  • MultiSubnetFailover

Para saber mais sobre essas palavras-chave de cadeia de conexão do ODBC, confira Usando palavras-chave da cadeia de conexão com o SQL Server Native Client.

Os atributos de conexão equivalentes são:

  • SQL_COPT_SS_APPLICATION_INTENT

  • SQL_COPT_SS_MULTISUBNET_FAILOVER

Para saber mais sobre as propriedades de conexão do ODBC, consulte SQLSetConnectAttr.

Um aplicativo ODBC que use os grupos de disponibilidade Always On pode usar uma dessas duas funções para fazer a conexão:

Função Descrição
Função SQLConnect SQLConnect dá suporte a ApplicationIntent e MultiSubnetFailover por meio de um DSN (nome de fonte de dados) ou de atributo de conexão.
Função SQLDriverConnect SQLDriverConnect dá suporte aApplicationIntent e MultiSubnetFailover por meio de DSN, palavra-chave de cadeia de conexão ou atributo de conexão.

Consulte também

Palavras-chave de cadeia de conexão e DSNs (nomes de fontes de dados)

Diretrizes de programação

Notas de versão