Replicación MySQL de AWS EC2: configuración para consultar al esclavo desde el maestro

Replicación MySQL de AWS EC2: configuración para consultar al esclavo desde el maestro

He configurado con éxito una situación maestro-esclavo de MySQL en instancias AWS EC2 separadas. El esclavo se está ejecutando y está replicando exitosamente al maestro.

Hasta ahora, todo bien.

Ahora quiero poder consultar al esclavo (para análisis, etc.) pero no encuentro la configuración correcta para poder enviar una consulta del maestro al esclavo.

Los errores que recibo (dependiendo de la configuración de mi perfil de seguridad de AWS) son "Conexión rechazada" o "Tiempo de espera agotado para la conexión".

En el esclavo tenía una asignación de grupo de seguridad EC2 para que el bloque de IP maestro lo usara para conectarse al puerto 3306, y usé la dirección IP del esclavo en la configuración de conexión del maestro.

Eso resultó en el error "Conexión rechazada" cuando intenté consultar al esclavo desde el maestro.

En el maestro, ejecuté 'mostrar lista de procesos completa' y vi que el host esclavo era el nombre de host AWS EC2, no la IP, y el puerto 44508 estaba agregado al final, así que cambié la información de conexión en el maestro para usar el host esclavo. nombre en lugar de la dirección IP y la configuración del grupo de seguridad en el esclavo para permitir el tráfico desde el maestro en el puerto 44508 en lugar de 3306.

Eso resultó en el error "Tiempo de espera de conexión agotado".

Probé combinaciones de IP/nombre de host/puerto en el grupo de seguridad del esclavo, pero solo obtuve uno de esos 2 errores, con cualquier combinación.

¿Alguien puede ofrecerme consejos sobre cómo configurar cosas para poder ejecutar consultas (de solo lectura) en el esclavo desde esa máquina maestra y devolver los resultados al maestro? TIA.

Ambos sistemas están configurados de la misma manera, excepto que el maestro también ejecuta Codeigniter4, que es donde estoy configurando la conexión:

Ubuntu 20.04.3 LTS y MySQL 8.0.26-0

Respuesta1

En dicha configuración, sus clientes (aplicaciones, software) deben conectarse al esclavo y ejecutar consultas SELECT únicamente (si necesita ejecutar consultas de escritura, deben realizarse únicamente en el maestro).

Deberías comprobar:

  1. Si el servidor MySQL escucha en la red en el servidor esclavo.
  2. Si los grupos de seguridad permiten que sus aplicaciones se conecten al servidor esclavo.
  3. El esclavo debe configurarse como de sólo lectura para evitar problemas.

Respuesta2

RESUELTO: En el /etc/mysql/mysql.conf.d/mysqld.cnf del esclavo necesitaba comentar las líneas 'bind-address' y 'mysqlx-bind-address', detener el esclavo, reiniciar mysqld e iniciar el esclavo. .

Tener 'bind-address = 127.0.0.1' impedía conexiones desde cualquier otro lugar. Comentarlo permite el acceso desde todas las fuentes, no solo desde localhost. EC2 Security Group restringe el acceso al puerto 3306 solo al servidor maestro.

Funciona muy bien en todos lados, ahora. Gracias nuevamente por su atención.

información relacionada