¿Qué debo hacer si no puedo conectarme a mi instancia de base de datos de RDS?
Causas posibles
Pruebe lo siguiente:
- Compruebe si la instancia de base de datos está disponible.
Por ejemplo, el sistema está defectuoso, la instancia de base de datos es anormal o la instancia de base de datos o una tabla está bloqueada.
- (Common) Compruebe si la conexión del cliente es correcta.
- Si se conecta a una instancia de base de datos a través de una red privada, asegúrese de que la instancia de base de datos y ECS están en la misma región y VPC.
- Si se conecta a una instancia de base de datos a través de una red pública, enlaza un EIP a la instancia de base de datos y, a continuación, conéctese a la instancia de base de datos a través de la EIP.
- Compruebe el método de conexión.
Ejecute cualquiera de los siguientes comandos de ejemplo para habilitar o deshabilitar SSL:
- SSL habilitado: mysql -h 172.16.0.31 -P 3306 -u root -p --ssl-ca=/tmp/ca.pem
- SSL deshabilitado: mysql -h 172.16.0.31 -P 3306 -u root -p
- Compruebe si los parámetros del comando de conexión son correctos.
Por ejemplo, compruebe si los siguientes parámetros están configurados correctamente: dirección de conexión, número de puerto, nombre de usuario, contraseña y método de conexión.
- (Common) Compruebe si la conectividad de red es normal.
Para una conexión de red privada:
- Compruebe si el ECS y la instancia de base de datos están en la misma región y VPC.
- Compruebe las reglas del grupo de seguridad.
Para acceder a instancias de base de datos en un grupo de seguridad diferente del ECS, agregue una regla entrante para el grupo de seguridad.
- En el ECS, compruebe si se puede conectar el puerto de instancia de base de datos.
Para una conexión de red pública:
- Compruebe las reglas del grupo de seguridad.
Para acceder a instancias de base de datos en un grupo de seguridad desde una red pública, agregue una regla entrante para el grupo de seguridad.
- Compruebe las reglas de ACL (lista de control de acceso) de la red.
- Haga ping a los ECS de la misma región a la instancia de base de datos.
- (Common) Compruebe si el número de conexiones a la instancia de base de datos alcanza el límite superior.
Si hay un número excesivo de conexiones de base de datos, es posible que las aplicaciones no puedan conectarse.
- (Common) Compruebe si la instancia de base de datos está en el estado Storage full.
Si la instancia de base de datos está en el estado Storage full, el rendimiento de lectura y escritura de datos se ve afectado.
- Vea los mensajes de error de conexión comunes.
Encuentre las soluciones correspondientes basadas en mensajes de error de conexión.
Localización de fallas
- Compruebe si la instancia de base de datos está disponible.
Compruebe si la instancia de base de datos está en el estado Available.
Causa posible: El sistema de RDS está defectuoso, la instancia de base de datos es anormal o la instancia de base de datos o una tabla está bloqueada.
Solución: Si la instancia de base de datos es anormal, reinicie la misma.
Figura 2 Comprobación del estado de la instancia de base de datos
- Compruebe si la conexión del cliente es correcta.
Instale un cliente de motor cuya versión sea al menos tan nueva como la versión de instancia de base de datos.
Para obtener más información sobre cómo conectarse a una instancia de base de datos a través de una red privada o pública, consulte ¿Puede un servidor externo tener acceso a la base de datos RDS?
Tabla 1 Modelo de conexión Método de conexión
Escenario
Ejemplo
Red privada
De forma predeterminada, se proporciona una dirección IP privada.
Si las aplicaciones se implementan en un ECS que se encuentra en la misma región y VPC que la instancia de base de datos, conéctese a la instancia de ECS y de base de datos a través de una dirección IP privada.
RDS for MySQL:
mysql -h <private IP address> -P 3306 -u root -p --ssl-ca=/tmp/ca.pem
Red pública
Si no puede acceder a la instancia de base de datos utilizando una dirección IP privada, enlaza un EIP a la instancia de base de datos y, a continuación, conéctese a la instancia de base de datos a través de la EIP.
Para obtener información sobre los precios de EIP, consulte Detalles de facturación de EIP.
RDS for MySQL:
mysql -h <EIP> -P 3306 -u root -p --ssl-ca=/tmp/ca.pem
- Compruebe el método de conexión.
- Se recomienda la conexión SSL. Habilite SSL en la página Connectivity & Security y cargue el certificado al ECS.
mysql -h 172.16.0.31 -P 3306 -u root -p --ssl-ca=/tmp/ca.pem
Figura 3 Habilitación de SSL
- Conexión común: Deshabilite SSL en la página Basic Information.
mysql -h 172.16.0.31 -P 3306 -u root -p
- Se recomienda la conexión SSL. Habilite SSL en la página Connectivity & Security y cargue el certificado al ECS.
- Verifique los parámetros en el comando utilizado para conectarse.
Asegúrese de que la dirección de conexión, el puerto, el nombre de usuario y la contraseña y el método de conexión SSL sean correctos e intente conectarse de nuevo a la instancia de base de datos.
Si utiliza una conexión privada con SSL habilitado, ejecute mysql -h 172.16.0.31 -P 3306 -u root -p --ssl-ca=/tmp/ca.pem.
- Dirección IP
En la pestaña Private Connection de la página Connectivity & Security, obtenga la dirección IP flotante en el área Connection Information.
Figura 4 Dirección IP flotante
- Puerto de base de datos
En la pestaña Private Connection de la página Connectivity & Security, obtenga el puerto de la base de datos en el área Connection Information.
- Credenciales de inicio de sesión raíz
Asegúrese de haber introducido correctamente la contraseña de root.
- Certificado
Obtenga el nombre del certificado SSL del directorio donde se ejecuta el comando.
Si utiliza una conexión pública con SSL habilitado, ejecute el siguiente comando de ejemplo: mysql -h EIP -P 3306 -u root -p --ssl-ca=/tmp/ca.pem
- Dirección IP
En la pestaña Public Connection de la página Connectivity & Security, obtenga el EIP en el área Connection Information.
Figura 5 EIP
- Puerto de base de datos
En la pestaña Public Connection de la página Connectivity & Security, obtenga el puerto de la base de datos en el área Connection Information.
- Credenciales de inicio de sesión raíz
Asegúrese de haber introducido correctamente la contraseña de root.
- Certificado
Obtenga el nombre del certificado SSL del directorio donde se ejecuta el comando.
- Dirección IP
- Compruebe la conexión de red.
Conexión de red privada
- Compruebe si el ECS y la instancia de base de datos están en la misma región y VPC.
- Si la instancia ECS y DB están en diferentes regiones, no pueden comunicarse entre sí. Seleccione una región cercana a su área de servicio para reducir la latencia de la red y disfrutar de un acceso más rápido.
- Si la instancia de base de datos de ECS y RDS se encuentra en VPCs diferentes, consulte ¿Qué debo hacer si ECS y RDS se implementan en diferentes VPC y no pueden comunicarse entre sí?
Figura 6 Comprobación de la VPC de un ECS
Figura 7 Comprobación de la VPC de una instancia de RDS
- Compruebe las reglas del grupo de seguridad.
- Si Destination no es 0.0.0.0/0 y Protocol & Port no es All en la página Outbound Rules del ECS, agregue la dirección IP flotante y el puerto de la instancia de RDS a las reglas de salida.
Figura 8 Grupo de seguridad de ECS
- Si Source no es 0.0.0.0/0 y Protocol & Port no es All en la página Inbound Rules de la instancia de RDS, agregue la dirección IP y el puerto del ECS a las reglas entrantes.
Figura 9 Grupo de seguridad de instancia de RDS
- Si Destination no es 0.0.0.0/0 y Protocol & Port no es All en la página Outbound Rules del ECS, agregue la dirección IP flotante y el puerto de la instancia de RDS a las reglas de salida.
- En el ECS, compruebe si se puede conectar el puerto de instancia de base de datos.
telnet <IP address> <port number>
- Si la conexión es normal, la red es normal.
- Si la conexión falla, cree un ticket de servicio para ponerse en contacto con el servicio de atención al cliente para obtener ayuda.
Conexión de red pública
- Compruebe las reglas del grupo de seguridad.
- Si Destination no es 0.0.0.0/0 y Protocol & Port no es All en la página Outbound Rules del ECS, agregue el EIP y el puerto de la instancia de RDS a las reglas de salida.
Figura 10 Grupo de seguridad de ECS
- Si Source no es 0.0.0.0/0 y Protocol & Port no es All en la página Inbound Rules de la instancia de RDS, agregue la dirección IP y el puerto del ECS a las reglas entrantes.
Figura 11 Grupo de seguridad de instancia de RDS
- Si Destination no es 0.0.0.0/0 y Protocol & Port no es All en la página Outbound Rules del ECS, agregue el EIP y el puerto de la instancia de RDS a las reglas de salida.
- Compruebe las reglas de ACL (lista de control de acceso) de la red.
- Vaya a la ACL de red.
- Compruebe si la NIC vinculada al EIP está en la subred asociada con ACL de la red.
- Compruebe si la ACL de red está habilitada.
En caso afirmativo, agregue una regla ICMP para permitir el tráfico.
La regla ACL de red predeterminada deniega todos los paquetes entrantes y salientes. Esta regla predeterminada se sigue aplicando incluso si la ACL de red está deshabilitada.
- Hacer ping a la instancia de base de datos en un ECS en la misma región.
Si no puede hacer ping al EIP de la instancia de RDS desde un ECS, intente hacer ping desde otro ECS en la misma región. Si la EIP se puede hacer ping, la red es normal. En este caso, cree un ticket de servicio para ponerse en contacto con el servicio de atención al cliente.
- Compruebe si el ECS y la instancia de base de datos están en la misma región y VPC.
- Compruebe si hay demasiadas conexiones a la instancia de base de datos.
Método de comprobación:
- Ejecute show variables like '%max%connections%'; para ver el número de conexiones de instancia.
- max_connections: el número máximo de clientes que se pueden conectar al mismo tiempo. Si este parámetro se establece en default, el número máximo de clientes depende de la cantidad de memoria configurada. Para obtener más información, consulte ¿Cuál es el número máximo de conexiones a una instancia de base de datos de RDS?.
- max_user_connections: el número máximo de conexiones simultáneas permitidas para una cuenta específica de RDS for MySQL.
- Compruebe si el total de las conexiones y las conexiones activas actuales han alcanzado los límites superiores consultando Consulta de métricas de monitoreo. Determine si desea liberar las conexiones.
Causa posible: Si hay demasiadas conexiones de base de datos, es posible que las aplicaciones no puedan conectarse y que las copias de respaldo completas e incrementales fallen, lo que afecta a los servicios.
Solución:- Compruebe si las aplicaciones están conectadas, optimice las conexiones y libere conexiones innecesarias.
- Si este parámetro se establece como default, puede ampliar la instancia de base de datos para establecer max_connections a un valor mayor. Para obtener más información, consulte Cambio de especificaciones de instancia de base de datos.
- Compruebe si las métricas son anormales y si se generan alarmas en la consola de Cloud Eye. Cloud Eye supervisa las métricas de la base de datos, como el uso de la CPU, el uso de la memoria, el uso del espacio de almacenamiento y las conexiones a la base de datos, y le permite establecer políticas de alarmas para identificar los riesgos por adelantado si se generan alarmas. Para obtener más información sobre las métricas de monitoreo compatibles, consulte Configuración de métricas mostradas.
- Ejecute show variables like '%max%connections%'; para ver el número de conexiones de instancia.
- Compruebe si la instancia de base de datos está en el estado Storage full.
Método de comprobación: Vea el uso del espacio de almacenamiento en la consola RDS o Cloud Eye.
- En la consola de RDS
Busque una instancia de base de datos y haga clic en su nombre para ir a la página Basic Information. En el área Storage Space, vea el uso del espacio de almacenamiento.
Figura 12 Uso del espacio de almacenamiento
- En Cloud Eye
Busque una instancia de base de datos y haga clic en View Metric en la columna Operation. En la página mostrada, vea el uso del espacio de almacenamiento.
Posible causa y solución: Consulte ¿Qué debo hacer si una instancia de base de datos de RDS es anormal debido al espacio de almacenamiento completo?
- En la consola de RDS
- Ver mensajes de error de conexión comunes.
Cuando ejecuta comandos para conectarse a una instancia de base de datos, comprender los mensajes de error puede ayudar:
- ERROR 2013: Lost connection to MySQL server during query
Si los valores de wait_timeout y interactive_timeout son demasiado pequeños, el cliente de RDS for MySQL desconectará automáticamente la conexión vacía de tiempo de espera. Para obtener más información, consulte Cliente de MySQL desconectado automáticamente de una instancia de base de datos.
- ERROR 1045 (28000): Access denied for user 'root'@'192.168.0.30' (using password: YES)
Compruebe si la contraseña es correcta, si el ECS tiene el permiso para conectarse a la instancia de base de datos y si el cliente de RDS for MySQL puede hacer ping a la dirección IP flotante de la instancia de base de datos. Para obtener más información, consulte Instancia de base de datos inaccesible de RDS for MySQL.
- ERROR 1226 (42000): User 'test' has exceeded the 'max_user_connections' resource (current value:10)
Compruebe si el número de conexiones a la instancia de base de datos es limitado. Para obtener más información, consulte Instancia de base de datos de MySQL inaccesible.
- ERROR 1129 (HY000): Host '192.168.0.111' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
Compruebe si el número de intentos fallidos de conexión de cliente de RDS for MySQL (que no son causados por contraseñas incorrectas) excede el valor de max_connection_errors. Para obtener más información, consulte Instancia de base de datos inaccesible de RDS for MySQL.
- [Warning] Access denied for user 'username'@'yourIp' (using password: NO)
Si se muestra este mensaje de error cuando intenta conectarse a una instancia de base de datos de RDS for MySQL o RDS for PostgreSQL, compruebe si el nombre de usuario o la contraseña son correctos.
- [Warning] Access denied for user 'username'@'yourIp' (using password: YES)
Si se muestra este mensaje de error cuando intenta conectarse a una instancia de base de datos de RDS for MySQL o RDS for PostgreSQL, compruebe si el nombre de usuario o la contraseña son correctos.
- Login failed for user 'username'
Si se muestra este mensaje de error cuando intenta conectarse a una instancia de base de datos de RDS for SQL Server, compruebe si el nombre de usuario o la contraseña son correctos.
- ERROR 2013: Lost connection to MySQL server during query
- Si el problema persiste, cree un ticket de servicio.