Cambiar el tiempo de espera de conexión en MySQL

Mehvish Ashiq 20 junio 2023
  1. Cambiar el tiempo de espera de conexión en MySQL
  2. Cambie MySQL connect_timeout usando el sistema operativo Windows
  3. Cambie MySQL connect_timeout usando el sistema operativo Linux (Ubuntu 20.04)
Cambiar el tiempo de espera de conexión en MySQL

Hoy estamos aprendiendo cómo cambiar el tiempo de espera de la conexión en MySQL usando los sistemas operativos Linux (Ubuntu 20.04) y Windows.

Cambiar el tiempo de espera de conexión en MySQL

A veces, sigue perdiendo la conexión con el servidor MySQL porque la propiedad connect_timeout está configurada en unos segundos de forma predeterminada.

Aquí, veremos cómo cambiar el valor predeterminado de connect_timeout en MySQL usando los sistemas operativos Linux (Ubuntu 20.04) y Windows.

Podemos actualizar el archivo de configuración o utilizar consultas SQL para realizar cambios en ambos sistemas operativos. Veamos cada uno de ellos.

Cambie MySQL connect_timeout usando el sistema operativo Windows

En primer lugar, debemos abrir la línea de comandos de Windows y navegar por la ruta de instalación del servidor MySQL. De forma predeterminada, MySQL Server está instalado en C:\Program Files\MySQL\MySQL Server 8.0.

Navegue a la carpeta bin usando cd bin en Command-Line. Además, escriba mysql -u root -p contraseña para iniciar sesión como usuario root.

Ahora, podemos ver el valor predeterminado de la propiedad connect_timeout utilizando la siguiente consulta antes de realizar las actualizaciones necesarias.

mysql> SHOW VARIABLES LIKE 'connect_timeout';

Producción :

+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| connect_timeout | 10    |
+-----------------+-------+
1 row in set (0.00 sec)

Como podemos ver, la conexión con MySQL Server se perderá en 10 segundos. Entonces, podemos cambiarlo a 28800 segundos (8 horas) usando los siguientes comandos en la línea de comandos de Windows.

Recuerde, actualizar interactive_timeout y wait_timeout es bueno porque sería útil mientras se ejecutan las aplicaciones que consumen mucho tiempo en plena ejecución.

mysql> SET GLOBAL connect_timeout=28800;
mysql> SET GLOBAL interactive_timeout=28800;
mysql> SET GLOBAL wait_timeout=28800;

Utilice el siguiente comando para confirmar todas las actualizaciones.

mysql> SHOW VARIABLES WHERE Variable_Name
    -> IN ('connect_timeout', 'interactive_timeout', 'wait_timeout');

Producción :

+---------------------+-------+
| Variable_name       | Value |
+---------------------+-------+
| connect_timeout     | 28800 |
| interactive_timeout | 28800 |
| wait_timeout        | 28800 |
+---------------------+-------+
3 rows in set (0.04 sec)

Aquí, connect_timeout representa la cantidad de segundos que el servidor mysqld espera un paquete de conexión antes de devolver Bad Handshake. El interactive_timeout también muestra la cantidad de segundos que el servidor MySQL espera por una actividad en la conexión interactiva antes de cerrarse.

Al igual que connect_timeout e interactive_timeout, wait_timeout también muestra la cantidad de segundos que el servidor MySQL espera por una actividad en la conexión antes de cerrarla.

Si está escribiendo alguna aplicación, puede hacer lo siguiente para cambiarla a través del lenguaje de programación, por ejemplo, Java o Python.

connection.query("SET GLOBAL connect_timeout=28800")
connection.query("SET GLOBAL interactive_timeout=28800")
connection.query("SET GLOBAL wait_timeout=28800")

Otra forma es actualizar el archivo de configuración abriendo el archivo my.ini en la ruta C:\ProgramData\MySQL\MySQL Server 8.0\my.ini (si ha instalado el servidor MySQL en la ubicación predeterminada). Luego, busca la sección [mysqld] y escribe.

[mysqld]
connect_timeout = 28800
interactive_timeout = 28800
wait_timeout = 28800

Reinicie el servidor MySQL y disfrute de las actualizaciones.

Cambie MySQL connect_timeout usando el sistema operativo Linux (Ubuntu 20.04)

Abra el shell de Ubuntu e inicie sesión como superusuario usando sudo su. Luego, inicie sesión en el servidor MySQL usando la siguiente consulta.

$ mysql -u root -p password

Una vez dentro comprobamos el valor por defecto del connect_timeout, que es de 10 segundos, como podemos ver a continuación.

mysql> SHOW VARIABLES LIKE 'connect_timeout';

Producción :

+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| connect_timeout | 10    |
+-----------------+-------+
1 row in set (0.00 sec)

Ahora, ejecute las siguientes consultas para actualizar los valores de connect_timeout, interactive_timout y wait_timeout. Como se mencionó anteriormente, actualizamos estos tres para ejecutar aplicaciones que tardan mucho tiempo en ejecutarse por completo.

mysql> SET GLOBAL connect_timeout=28800;
mysql> SET GLOBAL interactive_timeout=28800;
mysql> SET GLOBAL wait_timeout=28800;

Producción :

+---------------------+-------+
| Variable_name       | Value |
+---------------------+-------+
| connect_timeout     | 28800 |
| interactive_timeout | 28800 |
| wait_timeout        | 28800 |
+---------------------+-------+
3 rows in set (0.13 sec)

La otra forma es actualizar el archivo de configuración. Supongamos que esperamos los 28800 segundos como el valor de connect_timeout, interactive_timeout y wait_timeout.

Para eso, necesitamos editar el archivo de configuración que reside en esta ruta, /etc/mysql/mysql.conf.d/mysqld.cnf. Usamos el editor vim; puede usar cualquier editor para editar este archivo.

$ sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

Busque la sección [mysqld] y agregue connect_timeout, interactive_timeout y wait_timeout como se indica a continuación.

[mysqld]
connect_timeout = 28800
interactive_timeout = 28800
wait_timeout = 28800

Guardar y salir del archivo. Reinicie el servidor MySQL usando systemctl restart mysql.

Use la siguiente consulta para asegurarse de que todo se haya cambiado como se esperaba.

mysql> SHOW VARIABLES WHERE Variable_Name
    -> IN ('connect_timeout', 'interactive_timeout', 'wait_timeout');

Producción :

+---------------------+-------+
| Variable_name       | Value |
+---------------------+-------+
| connect_timeout     | 28800 |
| interactive_timeout | 28800 |
| wait_timeout        | 28800 |
+---------------------+-------+
3 rows in set (0.90 sec)
Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

Artículo relacionado - MySQL Connection