Solución de problemas de conexión para bases de datos Aurora MySQL
Garantizar una conectividad fiable entre sus aplicaciones y su instancia de base de datos de RDS es fundamental para el buen funcionamiento de sus cargas de trabajo. Sin embargo, los problemas de conectividad pueden surgir como consecuencia de varios factores, como las configuraciones de la red, los problemas de autenticación o las limitaciones de recursos. El objetivo de esta guía es proporcionar un enfoque integral para solucionar problemas de conectividad con Aurora MySQL.
Contenido
Identificación de problemas de conectividad de bases de datos para Aurora MySQL
Identificar la categoría específica del problema de conectividad puede ayudar a reducir las posibles causas y guiar el proceso de solución de problemas. Cada categoría puede requerir enfoques y técnicas diferentes para el diagnóstico y la resolución. Los problemas de conectividad de las bases de datos se pueden clasificar, en términos generales, en las siguientes categorías.
- Excepciones y errores de conexión
-
Los errores de conexión y las excepciones se pueden producir por varios motivos, como cadenas de conexión incorrectas, errores de autenticación, interrupciones de la red o problemas con el servidor de la base de datos. Algunas de las causas son parámetros de conexión mal configurados, credenciales no válidas, interrupciones de la red o bloqueos o reinicios del servidor de base de datos. Los grupos de seguridad mal configurados, la configuración de la nube privada virtual (VPC), las listas de control de acceso (ACL) a la red y las tablas de enrutamiento asociadas a las subredes también pueden provocar problemas de conexión.
- Límites de conexión alcanzado
-
Este problema se produce cuando el número de conexiones simultáneas al servidor de base de datos supera el límite máximo permitido. Los servidores de bases de datos suelen tener un límite de conexión máximo configurable definido por el parámetro max_connections en los clústeres y los grupos de parámetros de instancia. Al imponer un límite de conexión, el servidor de base de datos se asegura de que dispone de recursos suficientes (por ejemplo, memoria, CPU y controladores de archivos) para gestionar las conexiones existentes de forma eficaz y ofrecer un rendimiento aceptable. Las causas pueden incluir pérdidas de conexión en la aplicación, una agrupación de conexiones ineficiente o un aumento inesperado de las solicitudes de conexión.
- Tiempos de espera de conexión
-
Los tiempos de espera de conexión se producen cuando la aplicación cliente no puede establecer una conexión con el servidor de base de datos dentro de un periodo de tiempo de espera especificado. Algunas de las causas más comunes son problemas de red, sobrecarga del servidor, reglas de firewall y ajustes de conexión mal configurados.
- Tiempos de espera de inactividad de conexión
-
El servidor de la base de datos puede cerrar automáticamente las conexiones inactivas que permanecen inactivas durante un periodo prolongado para conservar los recursos. Este tiempo de espera suele configurarse mediante la tecla
wait_timeout
yinteractive_timeout parameters
, y debe ajustarse en función de los patrones de uso de la conexión de la aplicación. Algunas causas son que la lógica de la aplicación deje las conexiones inactivas durante periodos prolongados o una gestión inadecuada de las conexiones. - Desconexión intermitente de las conexiones existentes
-
Esta clase de errores se refiere a un escenario en el que las conexiones establecidas entre una aplicación cliente y la base de datos se interrumpen inesperadamente o se desconectan a intervalos irregulares, a pesar de estar activas y en uso. Estas desconexiones se producen de forma intermitente, lo que significa que se producen a intervalos irregulares y de forma no consistente. Estas pueden ser algunas de las causas:
-
Problemas con el servidor de bases de datos, como reinicios o conmutaciones por error
-
Gestión inadecuada de la conexión de la aplicación
-
Problemas de equilibrio de carga y proxy
-
Inestabilidad de la red
-
Problemas con componentes o middleware de terceros involucrados en la ruta de conexión
-
Tiempos de espera de ejecución de la consulta
-
Restricciones de recursos en el servidor o el cliente
Es fundamental identificar la causa raíz mediante una supervisión, un registro y un análisis exhaustivos, mientras que implementar mecanismos adecuados de gestión de errores, agrupación de conexiones y reintentos puede ayudar a mitigar el impacto de estas desconexiones intermitentes en la funcionalidad de la aplicación y la experiencia del usuario.
-
Recopilación de datos sobre problemas de conectividad para Aurora MySQL
La recopilación de datos completos relacionados con los componentes de la aplicación, la base de datos, la red y la infraestructura es crucial para solucionar eficazmente los problemas de conectividad entre una aplicación y una base de datos de Aurora MySQL. Al recopilar los registros, las configuraciones y la información de diagnóstico pertinentes, obtendrá información valiosa que puede ayudar a identificar la causa raíz de los problemas de conectividad y guiarlo hacia una solución adecuada.
Los registros y las configuraciones de la red, como las reglas de los grupos de seguridad, la configuración de la VPC y las tablas de enrutamiento, son esenciales para identificar posibles cuellos de botella o errores de configuración relacionados con la red que podrían impedir que la aplicación establezca una conexión correcta con la base de datos. Al analizar estos componentes de la red, puede asegurarse de que los puertos necesarios estén abiertos, que se permitan las direcciones IP y que las configuraciones de enrutamiento estén configuradas correctamente.
- Marcas de tiempo
-
Registre las marcas horarias exactas en las que se producen los problemas de conectividad. Esto puede ayudar a identificar patrones o correlacionar los problemas con otros eventos o actividades.
- Registro del motor de base de datos
-
Además de los registros generales de la base de datos, revise los registros del motor de base de datos (por ejemplo, el registro de errores de MySQL y el registro de consultas lentas) para ver si hay información relevante o errores que puedan estar relacionados con los problemas de conectividad intermitente. Para obtener más información, consulte Registro de bases de datos Aurora MySQL.
- Registros de aplicaciones cliente
-
Recopile registros detallados de las aplicaciones cliente que se conectan a la base de datos. Los registros de las aplicaciones permiten ver los intentos de conexión, los errores y cualquier información pertinente desde la perspectiva de la aplicación, lo que puede revelar problemas relacionados con las cadenas de conexión, las credenciales de autenticación o la gestión de las conexiones a nivel de la aplicación.
Los registros de las bases de datos, por otro lado, ofrecen información sobre los errores de la base de datos, las consultas lentas o los eventos que podrían estar contribuyendo a los problemas de conectividad. Para obtener más información, consulte Registro de bases de datos Aurora MySQL.
- Variables de entorno del cliente
-
Compruebe si alguna variable de entorno o configuración del cliente podría estar afectando a la conexión de la base de datos, como la configuración del proxy, la configuración de SSL/TLS o cualquier otra variable pertinente.
- Versiones de la biblioteca del cliente
-
Asegúrese de que el cliente utilice las versiones más recientes de los controladores, bibliotecas o marcos de bases de datos utilizados para la conectividad de las bases de datos. Las versiones desactualizadas pueden tener problemas conocidos o de compatibilidad.
- Captura de la red de clientes
-
Realice una captura de red en el cliente mediante una herramienta como Wireshark o
tcpdump
en los momentos en que se produzcan problemas de conectividad. Esto puede ayudar a identificar cualquier problema o anomalía relacionados con la red del cliente. - Topología de la red del cliente
-
Comprenda la topología de la red del cliente, incluidos los firewalls, los equilibradores de carga u otros componentes, como el proxy RDS o el proxy SQL, que se conectan a la base de datos en lugar de que el cliente realice las conexiones directamente.
- Configuración del sistema operativo del cliente
-
Compruebe la configuración del sistema operativo del cliente que pueda afectar a la conectividad de la red, como las reglas del firewall, la configuración del adaptador de red y cualquier otra configuración pertinente.
- Configuración de grupo de conexiones
-
Si utiliza un mecanismo de agrupación de conexiones en su aplicación, revise los ajustes de configuración y supervise las métricas del grupo (por ejemplo, las conexiones activas, las conexiones inactivas y los tiempos de espera de conexión) para asegurarse de que el grupo funcione correctamente. Revise también la configuración del grupo, como el tamaño máximo, el tamaño mínimo y la configuración de validación de la conexión, para asegurarse de que están configurados correctamente.
- Cadena de conexión
-
La cadena de conexión suele incluir parámetros como el nombre de host o punto de conexión, el número de puerto, el nombre de la base de datos y las credenciales de autenticación. El análisis de la cadena de conexión puede ayudar a identificar posibles errores de configuración o ajustes incorrectos que puedan estar causando problemas de conectividad. Por ejemplo, un nombre de host o un número de puerto incorrectos pueden impedir que el cliente acceda a la instancia de la base de datos, mientras que las credenciales de autenticación no válidas pueden provocar errores de autenticación y el rechazo de la conexión. Además, la cadena de conexión puede revelar problemas relacionados con la agrupación de conexiones, los tiempos de espera u otros ajustes específicos de la conexión que podrían contribuir a los problemas de conectividad. Proporcionar la cadena de conexión completa utilizada por la aplicación cliente puede ayudar a identificar cualquier error de configuración en el cliente.
- Métricas de bases de datos
-
Supervise las métricas de bases de datos, como el uso de la CPU, el uso de la memoria y de la E/S del disco, durante los momentos en que se producen problemas de conectividad. Estas pueden ayudar a identificar si la instancia de base de datos tiene problemas de rendimiento o de contención de recursos.
- Versión del motor de base de datos
-
Tenga en cuenta la versión del motor de base de datos de Aurora MySQL. AWS publica periódicamente actualizaciones que abordan los problemas conocidos y las vulnerabilidades de seguridad e introducen mejoras de rendimiento. Por lo tanto, le recomendamos encarecidamente que actualice a las últimas versiones disponibles, ya que estas actualizaciones suelen incluir correcciones de errores y mejoras relacionadas específicamente con la conectividad, el rendimiento y la estabilidad. Proporcionar la información sobre la versión de la base de datos, junto con el resto de los detalles recopilados, puede ayudar a Soporte diagnosticar y resolver los problemas de conectividad de forma eficaz.
- Métricas de red
-
Recopile métricas de la red, como la latencia, la pérdida de paquetes y el rendimiento, durante los momentos en que se producen problemas de conectividad. Herramientas como
ping
,traceroute
y las herramientas de monitoreo de red pueden ayudar a recopilar estos datos. - Datos de origen y cliente
-
Determine las direcciones IP de los servidores de aplicaciones, los equilibradores de carga o cualquier otro componente que inicie las conexiones de la base de datos. Puede ser una única dirección IP o un intervalo de direcciones IP (notación de CIDR). Si la fuente es una instancia Amazon EC2, también es útil revisar el tipo de instancia, la zona de disponibilidad, el ID de subred y los grupos de seguridad asociados a la instancia, así como los detalles de la interfaz de red, como la dirección IP privada y la dirección IP pública.
Al analizar minuciosamente los datos recopilados, puede identificar los errores de configuración, las limitaciones de recursos, las interrupciones de la red u otros problemas subyacentes que están causando los problemas de conectividad intermitentes o persistentes. Esta información le permite tomar medidas específicas, como ajustar las configuraciones, resolver problemas de red o abordar la gestión de la conexión a nivel de aplicación.
Supervisión de las conexiones de bases de datos para Aurora MySQL
Para supervisar y solucionar problemas de conectividad, puede utilizar las siguientes métricas y características.
- Métricas de CloudWatch
-
-
CPUUtilization
: un uso elevado de la CPU en la instancia de base de datos puede provocar una ejecución lenta de las consultas, lo que puede provocar tiempos de espera o rechazos de la conexión. -
DatabaseConnections
: supervise el número de conexiones activas a la instancia de base de datos. Un número elevado de conexiones cercano al máximo configurado puede indicar posibles problemas de conectividad o el agotamiento del grupo de conexiones. -
FreeableMemory
: tener poca memoria disponible puede provocar problemas de rendimiento y conectividad como consecuencia de la escasez de recursos. -
NetworkReceiveThroughput
yNetworkTransmitThroughput
: los picos o caídas inusuales en el rendimiento de la red pueden indicar problemas de conectividad o cuellos de botella en la red.
-
- Métricas de Información de rendimiento
-
Para solucionar problemas de conectividad en Aurora MySQL mediante Información de rendimiento, analice las métricas de la base de datos como las siguientes:
-
Aborted_clients
-
Aborted_connects
-
Connections
-
max_connections
-
Threads_connected
-
Threads_created
-
Threads_running
Estas métricas pueden ayudarle a identificar los cuellos de botella en la conexión, detectar problemas de red o de autenticación, optimizar la agrupación de conexiones y garantizar una gestión eficiente de los subprocesos. Para obtener más información, consulte Contadores de Información de rendimiento para Aurora MySQL.
-
- Características de Performance Insights
-
-
Carga de la base de datos: visualice la carga de la base de datos a lo largo del tiempo y correlaciónela con los problemas de conectividad o la degradación del rendimiento.
-
Estadísticas de SQL: analice las estadísticas de SQL para identificar consultas u operaciones de base de datos ineficientes que puedan contribuir a los problemas de conectividad.
-
Consultas principales: identifique y analice las consultas que consumen más recursos, lo que puede ayudar a identificar posibles cuellos de botella en el rendimiento o consultas de larga duración que pueden estar causando problemas de conectividad.
-
Al supervisar estas métricas y aprovechar Performance Insights, puede obtener visibilidad del rendimiento de la instancia de base de datos, el uso de recursos y los posibles cuellos de botella que podrían estar causando problemas de conectividad. Por ejemplo:
-
Si
DatabaseConnections
se acerca mucho al límite máximo, puede indicar que se ha agotado el conjunto de conexiones o se ha gestionado la conexión de forma inadecuada, lo que puede provocar problemas de conectividad. -
Un nivel alto de
CPUUtilization
o bajo deFreeableMemory
puede indicar limitaciones de recursos, lo que puede provocar una ejecución lenta de las consultas y tiempos de espera o rechazos de la conexión. -
El análisis de las consultas principales y estadísticas de SQL puede ayudar a identificar las consultas ineficientes o que consumen muchos recursos y que pueden estar contribuyendo a los problemas de conectividad.
Además, la supervisión de registros de CloudWatch y la configuración de alarmas pueden ayudarle a identificar y responder de forma proactiva a los problemas de conectividad antes de que se agraven.
Es importante tener en cuenta que, si bien estas métricas y herramientas pueden proporcionar información valiosa, deben utilizarse junto con otros pasos de solución de problemas. Al revisar también las configuraciones de red, las reglas de los grupos de seguridad y el manejo de la conexión a nivel de aplicación, puede diagnosticar y resolver exhaustivamente los problemas de conectividad con las instancias de base de datos de Aurora MySQL.
Supervisión adicional para Aurora MySQL
- Métricas de CloudWatch
-
-
AbortedClients
: realiza un seguimiento el número de conexiones de cliente que no se han cerrado correctamente. -
AuroraSlowConnectionHandleCount
: realiza un seguimiento del número de operaciones de gestión de conexiones lentas, lo que indica posibles problemas de conectividad o cuellos de botella en el rendimiento. -
AuroraSlowHandshakeCount
: mide el número de operaciones de protocolos de enlace lentos, lo que también puede ser un indicador de problemas de conectividad. -
ConnectionAttempts
: mide el número de intentos de conexión realizados a la instancia de base de datos de Aurora MySQL.
-
- Variables de estado globales
-
Aurora_external_connection_count
: muestra el número de conexiones de base de datos a la instancia de base de datos, excluidas las conexiones al servicio RDS utilizadas para las comprobaciones de estado de la base de datos.
Al supervisar estas métricas y variables de estado global, puede obtener visibilidad de los patrones de conexión, los errores y los posibles cuellos de botella que pueden estar causando problemas de conectividad con su instancia de Amazon Aurora MySQL.
Por ejemplo, un número elevado de problemas de AbortedClients
o AuroraSlowConnectionHandleCount
puede indicar problemas de conectividad.
Además, configurar las alarmas y notificaciones de CloudWatch puede ayudarle a identificar y responder de forma proactiva a los problemas de conectividad antes de que se agraven y afecten al rendimiento de la aplicación.
Códigos de error de conectividad para Aurora MySQL
A continuación, se muestran algunos errores de conectividad comunes de las bases de datos Aurora MySQL, junto con sus códigos de error y sus explicaciones.
- Código de error 1040: Demasiadas conexiones
-
Este error se produce cuando el cliente intenta establecer más conexiones que el máximo permitido por el servidor de la base de datos. Entre las causas posibles, se incluyen:
-
Configuración incorrecta de la agrupación de conexiones: si utiliza un mecanismo de agrupación de conexiones, asegúrese de que el tamaño máximo de la agrupación no sea demasiado alto y de que las conexiones se devuelvan correctamente a la agrupación.
-
Configuración de la instancia de base de datos: compruebe la configuración máxima de conexiones permitidas para la instancia de base de datos y ajústela si es necesario configurando el parámetro
max_connections
. -
Alta concurrencia: si varios clientes o aplicaciones se conectan a la base de datos simultáneamente, es posible que se alcance el límite máximo de conexiones permitido.
-
- Código de error 1045: Acceso denegado al usuario '...'@'...' (usa contraseña: SÍ/NO)
-
Este error indica un error de autenticación al intentar conectarse a la base de datos. Entre las causas posibles, se incluyen:
-
Compatibilidad con el complemento de autenticación: compruebe si el complemento de autenticación utilizado por el cliente es compatible con el mecanismo de autenticación del servidor de la base de datos.
-
Nombre de usuario o contraseña incorrectos: compruebe que se estén utilizando el nombre de usuario y la contraseña correctos en la cadena de conexión o en el mecanismo de autenticación.
-
Permisos de usuario: asegúrese de que el usuario tenga los permisos necesarios para conectarse a la instancia de base de datos desde el host o la red especificados.
-
- Código de error 1049: Base de datos desconocida '...'
-
Este error indica que el cliente está intentando conectarse a una base de datos que no existe en el servidor. Entre las causas posibles, se incluyen:
-
Base de datos no creada: asegúrese de que la base de datos especificada se haya creado en el servidor de bases de datos.
-
Nombre de base de datos incorrecto: compruebe si el nombre de la base de datos utilizado en la cadena de conexión o consulta es correcto.
-
Permisos de usuario: compruebe que el usuario tenga los permisos necesarios para acceder a la base de datos especificada.
-
- Código de error 1153: Se ha recibido un paquete mayor de 'max_allowed_packet' bytes
-
Este error se produce cuando el cliente intenta enviar o recibir datos que superan el tamaño máximo de paquete permitido por el servidor de bases de datos. Entre las causas posibles, se incluyen:
-
Consultas o conjuntos de resultados de gran tamaño: si se ejecutan consultas que implican grandes cantidades de datos, es posible que se exceda el límite de tamaño del paquete.
-
Configuración de tamaño de paquete mal configurada: compruebe la configuración de
max_allowed_packet
en el servidor de la base de datos y ajústela si es necesario. -
Problemas de configuración de la red: asegúrese de que la configuración de la red (por ejemplo, el tamaño de la MTU) permita los tamaños de paquete requeridos.
-
- Código de error 1226: El usuario '...' ha superado el recurso 'max_user_connections' (valor actual: ...)
-
Este error indica que el usuario ha superado el número máximo de conexiones simultáneas permitido por el servidor de base de datos. Entre las causas posibles, se incluyen:
-
Configuración incorrecta de la agrupación de conexiones: si utiliza un mecanismo de agrupación de conexiones, asegúrese de que el tamaño máximo de la agrupación no sea demasiado alto para el límite de conexiones del usuario.
-
Configuración de la instancia de base de datos: compruebe la configuración de
max_user_connections
para la instancia de base de datos y ajústela si es necesario. -
Alta concurrencia: si varios clientes o aplicaciones se conectan a la base de datos simultáneamente con el mismo usuario, es posible que se alcance el límite máximo de conexiones específicas del usuario.
-
- Código de error 2003: No se puede establecer conexión con el servidor MySQL en '...' (10061)
-
Este error suele producirse cuando el cliente no puede establecer una conexión TCP/IP con el servidor de la base de datos. Puede deberse a varios problemas, como los siguientes:
-
Estado de la instancia de base de datos: asegúrese de que la instancia de base de datos esté en el estado
available
y no esté siendo sometida a ninguna operación de mantenimiento ni copia de seguridad. -
Reglas de firewall: compruebe si algún firewall (sistema operativo, red o grupo de seguridad) está bloqueando la conexión en el puerto especificado (normalmente el 3306 para MySQL).
-
Nombre de host o punto de conexión incorrectos: asegúrese de que el nombre de host o punto de conexión utilizado en la cadena de conexión sea correcto y coincida con la instancia de base de datos.
-
Problemas de conectividad de red: compruebe que el equipo cliente pueda acceder a la instancia de base de datos a través de la red. Compruebe si hay interrupciones en la red, problemas de enrutamiento o errores de configuración de la VPC o de la subred.
-
- Código de error 2005: Host de servidor MySQL desconocido '...' (11001)
-
Este error se produce cuando el cliente no puede resolver el nombre de host o el punto de conexión del servidor de la base de datos en una dirección IP. Entre las causas posibles, se incluyen:
-
Problemas de resolución de DNS: compruebe que el equipo cliente pueda resolver el nombre de host correctamente mediante DNS. Compruebe la configuración de DNS y la caché de DNS e intente utilizar la dirección IP en lugar del nombre de host.
-
Nombre de host o punto de conexión incorrectos: compruebe si el nombre de host o el punto de conexión utilizados en la cadena de conexión son correctos.
-
Problemas de configuración de red: asegúrese de que la configuración de red del cliente (por ejemplo, VPC, subred y tablas de enrutamiento) permita la resolución de DNS y la conectividad a la instancia de la base de datos.
-
- Código de error 2026: Error de conexión SSL
-
Este error se produce cuando hay un problema con la configuración de SSL/TLS o la validación del certificado durante el intento de conexión. Entre las causas posibles, se incluyen:
-
Caducidad del certificado: compruebe si el certificado SSL/TLS utilizado por el servidor ha caducado y debe renovarse.
-
Problemas con la validación del certificado: compruebe que el cliente puede validar correctamente el certificado SSL/TLS del servidor y que el certificado es de confianza.
-
Problemas de configuración de red: asegúrese de que la configuración de red permita las conexiones SSL/TLS y no bloquee ni interfiera con el proceso de protocolo de enlace SSL/TLS.
-
La configuración de SSL/TLS no coincide: asegúrese de que la configuración de SSL/TLS (por ejemplo, los conjuntos de cifrado y las versiones de los protocolos) del cliente y el servidor sea compatible.
-
Si comprende las explicaciones detalladas y las posibles causas de cada código de error, podrá solucionar mejor los problemas de conectividad al trabajar con bases de datos Aurora MySQL.
Recomendaciones de ajuste de parámetros para Aurora MySQL
- Número máximo de conexiones
-
El ajuste de estos parámetros puede ayudar a evitar problemas de conexión causados por alcanzar el límite máximo de conexiones permitido. Asegúrese de que estos valores estén configurados adecuadamente en función de los requisitos de concurrencia y las limitaciones de recursos de la aplicación.
-
max_connections
: este parámetro especifica el número máximo de conexiones simultáneas que se permite a la instancia de base de datos. -
max_user_connections
: este parámetro se puede especificar durante la creación y modificación del usuario, y establece el número máximo de conexiones simultáneas permitidas para una cuenta de usuario específica.
-
- Tamaño del búfer de red
-
El aumento de estos valores puede mejorar el rendimiento de la red, especialmente en el caso de cargas de trabajo que implican grandes transferencias de datos o conjuntos de resultados. Sin embargo, tenga cuidado, ya que los tamaños de búfer más grandes pueden consumir más memoria.
-
net_buffer_length
: este parámetro establece el tamaño inicial de los búferes de conexión al cliente y de resultados, equilibrando el uso de memoria con el rendimiento de las consultas. -
max_allowed_packet
: este parámetro especifica el tamaño máximo de un único paquete de red que la instancia de base de datos puede enviar o recibir.
-
- Compresión de red (en el cliente)
-
Habilitar la compresión de la red puede reducir el uso del ancho de banda de la red, pero puede aumentar la sobrecarga de la CPU tanto en el cliente como en el servidor.
-
compress
: este parámetro habilita o deshabilita la compresión de red para la comunicación entre el cliente y el servidor. -
compress_protocol
: este parámetro especifica el protocolo de compresión que se utilizará para la comunicación de red.
-
- Ajuste del rendimiento de la red
-
Ajustar estos tiempos de espera puede ayudar a administrar las conexiones inactivas y evitar el agotamiento de los recursos, pero tenga cuidado, ya que los valores bajos pueden provocar la finalización prematura de las conexiones.
-
interactive_timeout
: este parámetro especifica el número de segundos que el servidor espera a que se produzca actividad en una conexión interactiva antes de cerrarla. -
wait_timeout
: este parámetro determina el número de segundos que el servidor espera a que se produzca actividad en una conexión no interactiva antes de cerrarla.
-
- Configuración de tiempo de espera de la red
-
Ajustar estos tiempos de espera puede ayudar a solucionar los problemas relacionados con las conexiones lentas o que no responden. Sin embargo, tenga cuidado de no usar valores demasiado bajos, ya que puede provocar fallos de conexión prematuros.
-
net_read_timeout
: este parámetro especifica el número de segundos que se deben esperar para recibir más datos de una conexión antes de finalizar la operación de lectura. -
net_write_timeout
: este parámetro determina el número de segundos que se debe esperar a que se escriba un bloque en una conexión antes de finalizar la operación de escritura.
-
Ejemplos de solución de problemas de conexión de bases de datos para Aurora MySQL
Los siguientes ejemplos muestran cómo identificar y solucionar los problemas de conexión a bases de datos de Aurora MySQL.
Ejemplo 1: Solución de problemas de intentos de conexión fallidos
Los intentos de conexión pueden fallar por varios motivos, incluidos los errores de autenticación, los errores del protocolo de enlace SSL/TLS, el límite max_connections
alcanzado y las restricciones de recursos de la instancia de base de datos.
Puede realizar un seguimiento del número de conexiones fallidas desde Performance Insights o mediante el siguiente comando.
mysql> show global status like 'aborted_connects'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | Aborted_connects | 7 | +------------------+-------+ 1 row in set (0.00 sec)
Si el número de Aborted_connects
aumenta con el tiempo, es posible que la aplicación tenga problemas de conectividad intermitentes.
Puede usar Aurora Advanced Auditing para registrar las conexiones y desconexiones de las conexiones del cliente. Para ello, defina los siguientes parámetros en el grupo de parámetros de clúster de base de datos:
-
server_audit_logging
=1
-
server_audit_events
=CONNECT
El siguiente es un extracto de los registros de auditoría de un inicio de sesión fallido.
1728498527380921,auora-mysql-node1,user_1,172.31.49.222,147189,0,FAILED_CONNECT,,,1045 1728498527380940,auora-mysql-node1,user_1,172.31.49.222,147189,0,DISCONNECT,,,0
Donde:
-
1728498527380921
: la marca temporal de la época en la que se produjo el error de inicio de sesión -
aurora-mysql-node1
: el identificador de instancia del nodo del clúster de Aurora MySQL en el que se produjo un error de conexión -
user_1
: el nombre del usuario de base de datos para el que no se pudo iniciar sesión -
172.31.49.222
: la dirección IP privada del cliente desde el que se estableció la conexión -
147189
: el ID de conexión del inicio de sesión fallido -
FAILED_CONNECT
: indica que la conexión ha fallado -
1045
: el código de devolución Un valor distinto de cero indica un error. En este caso,1045
corresponde al acceso denegado.
Para obtener más información, consulte Server error codes
También puede examinar los registros de errores de Aurora MySQL para ver si hay algún mensaje de error relacionado, por ejemplo:
2024-10-09T19:26:59.310443Z 220 [Note] [MY-010926] [Server] Access denied for user 'user_1'@'172.31.49.222' (using password: YES) (sql_authentication.cc:1502)
Ejemplo 2: Solución de problemas de desconexiones anómalas de un cliente
Puede realizar un seguimiento del número de desconexiones anómalas de un cliente desde Performance Insights o mediante el siguiente comando.
mysql> show global status like 'aborted_clients'; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | Aborted_clients | 9 | +-----------------+-------+ 1 row in set (0.01 sec)
Si el número de Aborted_clients
aumenta con el tiempo, significa que la aplicación no cierra correctamente las conexiones a la base de datos. Si las conexiones no se cierran correctamente, se pueden producir pérdidas de recursos y posibles problemas de rendimiento. Dejar las conexiones abiertas innecesariamente puede consumir recursos del sistema, como la memoria y los descriptores de archivos, lo que puede provocar que la aplicación o el servidor dejen de responder o se reinicien.
Puede utilizar la siguiente consulta para identificar las cuentas que no cierran conexiones correctamente. Recupera el nombre de la cuenta de usuario, el host desde el que se conecta el usuario, el número de conexiones no cerradas y el porcentaje de conexiones no cerradas.
SELECT ess.user, ess.host, (a.total_connections - a.current_connections) - ess.count_star AS not_closed, (((a.total_connections - a.current_connections) - ess.count_star) * 100) / (a.total_connections - a.current_connections) AS pct_not_closed FROM performance_schema.events_statements_summary_by_account_by_event_name AS ess JOIN performance_schema.accounts AS a ON (ess.user = a.user AND ess.host = a.host) WHERE ess.event_name = 'statement/com/quit' AND (a.total_connections - a.current_connections) > ess.count_star; +----------+---------------+------------+----------------+ | user | host | not_closed | pct_not_closed | +----------+---------------+------------+----------------+ | user1 | 172.31.49.222 | 1 | 33.3333 | | user1 | 172.31.93.250 | 1024 | 12.1021 | | user2 | 172.31.93.250 | 10 | 12.8551 | +----------+---------------+------------+----------------+ 3 rows in set (0.00 sec)
Tras identificar las cuentas de usuario y los hosts desde los que no se cierran las conexiones, puede comprobar el código que no cierra correctamente las conexiones.
Por ejemplo, con el conector MySQL en Python, utilice el método close()
del objeto de conexión para cerrar las conexiones. A continuación, se muestra un ejemplo de función que establece una conexión a una base de datos, realiza una consulta y cierra la conexión:
import mysql.connector def execute_query(query): # Establish a connection to the database connection = mysql.connector.connect( host="your_host", user="your_username", password="your_password", database="your_database" ) try: # Create a cursor object cursor = connection.cursor() # Execute the query cursor.execute(query) # Fetch and process the results results = cursor.fetchall() for row in results: print(row) finally: # Close the cursor and connection cursor.close() connection.close()
En este ejemplo, se llama al método connection.close()
en el bloque finally
para asegurarse de que la conexión está cerrada, se produzca o no una excepción.