Replicação AWS EC2 MySQL: configuração para consultar o escravo do mestre

Replicação AWS EC2 MySQL: configuração para consultar o escravo do mestre

Configurei com sucesso uma situação mestre-escravo do MySQL em instâncias separadas do AWS EC2. O escravo está em execução e replicando o mestre com sucesso.

Até agora tudo bem.

Agora quero poder consultar o escravo (para análises, etc.), mas não consigo encontrar a configuração correta para poder enviar uma consulta do mestre para o escravo.

Os erros que recebo (dependendo das configurações do meu perfil de segurança da AWS) são "Conexão recusada" ou "Tempo limite de conexão esgotado"

No escravo, eu tinha uma permissão do Grupo de segurança EC2 para o bloco IP mestre usar para conectar-se à porta 3306 e usei o endereço IP do escravo na configuração de conexão do mestre.

Isso resultou no erro "Conexão recusada" quando tentei consultar o escravo do mestre.

No mestre, executei 'show full processlist' e vi que o host escravo era o nome do host AWS EC2, não o IP, e a porta 44508 estava fixada no final, então mudei as informações de conexão no mestre para usar o host escravo nome em vez do endereço IP e a configuração do Grupo de Segurança no escravo para permitir o tráfego do mestre na porta 44508 em vez de 3306.

Isso resultou no erro "Tempo limite de conexão esgotado".

Eu tentei combinações de IP/hostname/porta no Grupo de Segurança do escravo, mas apenas obtive um desses 2 erros, com qualquer combinação.

Alguém pode oferecer dicas sobre como configurar coisas para que eu possa executar consultas (somente leitura) no escravo daquela máquina mestre e retornar os resultados ao mestre? TIA.

Ambos os sistemas são configurados da mesma forma, exceto que o mestre também está executando o Codeigniter4, que é onde estou definindo a configuração da conexão:

Ubuntu 20.04.3 LTS e MySQL 8.0.26-0

Responder1

Nessa configuração, seus clientes (aplicativos, software) devem se conectar ao escravo e executar apenas consultas SELECT (se você precisar executar consultas de gravação - elas devem ser feitas apenas no mestre).

Você deve verificar:

  1. Se o servidor MySQL escutar na rede no servidor escravo.
  2. Se os grupos de segurança permitirem a conexão ao servidor escravo por seus aplicativos.
  3. O escravo deve ser configurado como somente leitura para evitar problemas.

Responder2

RESOLVIDO: No /etc/mysql/mysql.conf.d/mysqld.cnf do escravo eu precisava comentar as linhas 'bind-address' e 'mysqlx-bind-address', parar o escravo, reiniciar o mysqld e iniciar o escravo .

Ter 'bind-address = 127.0.0.1' impediu conexões de qualquer outro lugar. Comentar permite acesso de todas as fontes, não apenas do localhost. O EC2 Security Group restringe o acesso à porta 3306 apenas ao servidor mestre.

Funcionando muito bem agora. Obrigado, mais uma vez, pela sua atenção.

informação relacionada