Quando um DBMS faz failover após uma falha, se ele falhar em um servidor em um data center diferente e não relacionado, o endereço IP do nome do subdomínio desse banco de dados precisará ser alterado no servidor DNS desse nome e devido ao DNS atrasos de propagação, pode levar dias até que todos os servidores DNS do mundo tenham o endereço IP para o novo mestre, durante o qual alguns clientes ainda estariam tentando acessar o antigo mestre. O que pode ser feito para lidar com isso, além de alterar o software cliente para buscar o endereço IP do mestre de algum lugar, ou essa é a única opção? Obrigado.
relate perguntas
-
Como você pode impedir que o escravo MySQL replique as alterações no banco de dados 'mysql'?
-
É imprudente executar a replicação no mesmo servidor físico?
-
Existe uma maneira de medir o atraso de replicação no MySQL com uma resolução inferior a 1 segundo?
-
Práticas recomendadas para executar a replicação atrasada do deslocamento de tempo
-
Qual é a diferença entre a replicação do PostgreSQL 9.0 e o Slony-I?
No SQL Server, o comportamento padrão com um ouvinte do Grupo de Disponibilidade é registrar TODOS os IPs em todas as sub-redes com DNS. Embora o DNS tenha todos os IPs anexados ao A Record do ouvinte , apenas o IP na sub-rede correta para o primário atual estará online. Outros IPs estarão no DNS para o nome da rede, mas não estarão online/resolvíveis para nenhum host real.
Com uma configuração padrão, os AGs de várias sub-redes exigem que os clientes que se conectam a eles incluam
MultiSubnetFailover=true
como um atributo de cadeia de conexão. Esse atributo informa ao driver para esperar que o DNS forneça vários endereços IP para o nome do Ouvinte e tente todos eles para encontrar o IP correto ao qual se conectar para esse nome de rede. Clientes que não especificam este atributo obterão vários IPs e não saberão como lidar com eles corretamente – a maioria dos drivers pegará um dos IPs retornados aleatoriamente (ou talvez apenas aparentemente aleatório) e tentará se conectar a ele. Isso pode resultar em falhas de conexão aleatórias (ou aparentemente aleatórias) quando ele escolhe o IP errado.Quando ocorre o failover, os registros DNS não são alterados. Em vez disso, o IP que está online e respondendo às solicitações será alterado. O antigo IP primário ficará offline e parará de responder, e um IP diferente ficará online em uma nova sub-rede e começará a lidar com o tráfego. É por isso que o
MultiSubnetFailover=true
atributo de cadeia de conexão do lado do cliente é necessário. O driver do cliente precisa saber como lidar com isso.Você pode desativar esse comportamento , para que o DNS registre apenas um único endereço IP por vez, ou até mesmo criar dois listeners para que um use o comportamento padrão e o outro registre um único IP por vez. Ao usar o ouvinte de IP único, você precisa esperar que o TTL expire e que as atualizações de DNS sejam propagadas antes que os clientes percebam o failover e possam se reconectar. Nessa situação, você deseja definir o TTL suficientemente baixo para que o tempo de inatividade seja aceitável. Ajustar o TTL é, em última análise, a alavanca que você pode puxar para evitar que a propagação do DNS demore dias.