MySQL에서 연결 시간 제한 변경

Mehvish Ashiq 2023년6월20일
  1. MySQL에서 연결 시간 제한 변경
  2. Windows OS를 사용하여 MySQL connect_timeout 변경
  3. Linux(Ubuntu 20.04) OS를 사용하여 MySQL connect_timeout 변경
MySQL에서 연결 시간 제한 변경

오늘은 Linux(Ubuntu 20.04) 및 Windows 운영 체제를 사용하는 MySQL에서 연결 시간 초과를 변경하는 방법을 알아보고 있습니다.

MySQL에서 연결 시간 제한 변경

때때로 connect_timeout 속성이 기본적으로 몇 초로 설정되어 있기 때문에 MySQL 서버에 대한 연결이 계속 끊어지는 경우가 있습니다.

여기에서는 Linux(Ubuntu 20.04) 및 Windows 운영 체제를 사용하여 MySQL에서 connect_timeout의 기본값을 변경하는 방법을 살펴봅니다.

구성 파일을 업데이트하거나 SQL 쿼리를 사용하여 두 운영 체제를 모두 변경할 수 있습니다. 그들 각각을 보자.

Windows OS를 사용하여 MySQL connect_timeout 변경

먼저 Windows 명령줄을 열고 MySQL 서버 설치 경로를 탐색해야 합니다. 기본적으로 MySQL 서버는 C:\Program Files\MySQL\MySQL Server 8.0에 설치됩니다.

명령줄에서 cd bin을 사용하여 bin 폴더로 이동합니다. 또한 mysql -u root -p password를 입력하여 root 사용자로 로그인합니다.

이제 필요한 업데이트를 수행하기 전에 다음 쿼리를 사용하여 connect_timeout 속성의 기본값을 확인할 수 있습니다.

mysql> SHOW VARIABLES LIKE 'connect_timeout';

출력:

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

보시다시피 MySQL 서버에 대한 연결이 10초 후에 끊어집니다. 따라서 Windows 명령줄에서 다음 명령을 사용하여 28800초(8시간)로 변경할 수 있습니다.

interactive_timeoutwait_timeout을 업데이트하는 것은 전체 실행에서 많은 시간을 소비하는 애플리케이션을 실행하는 동안 유용하기 때문에 좋습니다.

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

다음 명령을 사용하여 모든 업데이트를 확인하십시오.

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

출력:

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

여기서 connect_timeoutmysqld 서버가 Bad Handshake를 반환하기 전에 연결 패킷을 기다리는 시간(초)을 나타냅니다. interactive_timeout은 또한 MySQL 서버가 닫히기 전에 대화형 연결에서 활동을 기다리는 시간(초)을 보여줍니다.

connect_timeoutinteractive_timeout과 마찬가지로 wait_timeout도 MySQL 서버가 연결을 닫기 전에 연결에서 활동을 기다리는 시간(초)을 표시합니다.

일부 응용 프로그램을 작성하는 경우 다음과 같은 방식으로 Java 또는 Python과 같은 프로그래밍 언어를 통해 변경할 수 있습니다.

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

또 다른 방법은 C:\ProgramData\MySQL\MySQL Server 8.0\my.ini 경로에서 my.ini 파일을 열어 구성 파일을 업데이트하는 것입니다(MySQL 서버를 기본 위치에 설치한 경우). 그런 다음 [mysqld] 섹션을 찾아 작성합니다.

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

MySQL 서버를 다시 시작하고 업데이트를 즐기십시오.

Linux(Ubuntu 20.04) OS를 사용하여 MySQL connect_timeout 변경

Ubuntu 셸을 열고 sudo su를 사용하여 수퍼유저로 로그인합니다. 그런 다음 다음 쿼리를 사용하여 MySQL 서버에 로그인합니다.

$ mysql -u root -p password

일단 들어가면 아래에서 볼 수 있듯이 connect_timeout의 기본값인 10초를 확인하십시오.

mysql> SHOW VARIABLES LIKE 'connect_timeout';

출력:

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

이제 다음 쿼리를 실행하여 connect_timeout, interactive_timoutwait_timeout의 값을 업데이트합니다. 앞서 언급했듯이 전체 실행에 많은 시간이 걸리는 응용 프로그램을 실행하기 위해 이 세 가지를 업데이트합니다.

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

출력:

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

다른 방법은 구성 파일을 업데이트하는 것입니다. connect_timeout, interactive_timeoutwait_timeout의 값으로 28800초를 예상한다고 가정합니다.

이를 위해서는 /etc/mysql/mysql.conf.d/mysqld.cnf 경로에 있는 구성 파일 편집이 필요합니다. 우리는 vim 편집기를 사용합니다. 모든 편집기를 사용하여 이 파일을 편집할 수 있습니다.

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

[mysqld] 섹션을 검색하고 아래와 같이 connect_timeout, interactive_timeoutwait_timeout을 추가합니다.

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

파일을 저장하고 종료합니다. systemctl restart mysql을 사용하여 MySQL 서버를 다시 시작합니다.

다음 쿼리를 사용하여 모든 것이 예상대로 변경되었는지 확인하십시오.

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

출력:

+---------------------+-------+
| 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

관련 문장 - MySQL Connection