No meu caso eu tenho dois servidores MySQL. Um é mestre e o segundo é escravo.
Quando o escravo não está disponível, meu aplicativo pode ler e gravar de/para o mestre.
Quando o mestre não estiver disponível, suponha que existe uma ferramenta mysqlfailover
que nomeia com sucesso um novo mestre (do escravo).
Parece bom, mas o aplicativo tem um nome de host mestre dentro da configuração. Portanto, não consegue encontrá-lo.
Quais são as opções disponíveis para resolver este problema? Como o aplicativo pode ser alternado para um novo mestre?
Eu sei que posso mudar o nome do host para apontar para o novo IP, usar Kubernetes (StatefulSet) + DB em um contêiner, mas mais alguma coisa como opção gratuita no bare metal?
Se falando de forma ampla, como esse problema é resolvido usando ferramentas de HA/failover?
obrigada
Tínhamos enfrentado um tipo semelhante de problema. Um MySQL-RDS Multi-AZ fornece um recurso de failover automático. Sempre que ocorreu um failover, embora a URL do novo mestre permanecesse a mesma, o JDBC ainda não conseguiu se conectar ao novo mestre.
Por padrão, uma vez que uma conexão com o banco de dados é feita, algumas configurações nunca atualizarão as entradas DNS até que a JVM seja reiniciada. Isso pode ser resolvido configurando o parâmetro networkaddress.cache.ttl da JVM. Definir esse valor garante que as entradas DNS sejam atualizadas após algum intervalo. Caso você não esteja usando Java, tente encontrar um parâmetro análogo para sua conexão.
Em outras palavras, primeiro certifique-se de que a URL do novo mestre permaneça a mesma (você precisa conversar com sua equipe de operações para entender como isso pode ser feito). Feito isso, a descoberta do novo mestre após o failover se torna responsabilidade do próprio aplicativo, o que pode ser feito atualizando as entradas DNS subjacentes periodicamente.
Você pode ter várias entradas host:port separadas por vírgula na URL.
Para mais detalhes consulte a documentação do conector/J https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-config-failover.html ou se preferir um cliente gratuito https://mariadb .com/kb/en/library/failover-and-high-availability-with-mariadb-connector-j/