커넥션 관련 문제가 발생하는 경우가 종종있다.
그 경우 데이터베이스 타임아웃이 많아서 변경해보도록하자
pi@raspberrypi :~ $ sudo mysql -uroot
MariaDB [(none)]> show variables like '%timeout';
+----------------------------------------+----------+
| Variable_name | Value |
+----------------------------------------+----------+
| connect_timeout | 10 |
| delayed_insert_timeout | 300 |
| innodb_flush_log_at_timeout | 1 |
| innodb_lock_wait_timeout | 50 |
| innodb_rollback_on_timeout | OFF |
| interactive_timeout | 28800 |
| lock_wait_timeout | 31536000 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| slave_net_timeout | 3600 |
| thread_pool_idle_timeout | 60 |
| wait_timeout | 28800 |
+---------------------------------------+-----------+
1. sudo mysql -uroot (DB 접속)
2. show variables like '%timeout'; (설정 변수들을 나타낸다)
각각 의미를 살펴보도록하자.
connect_timeout : 서버 접속시에 접속실패 메세지를 보내기까지 대기하는 시간.
delayed_insert_timeout : insert시 delay될 경우 대기하는 시간.
innodb_lock_wait_timeout : innodb에 transaction 처리중 lock이 걸렸을 시 롤백 될때까지 대기하는 시간. innodb는 자동으로 데드락을 검색해서 롤백시킨다.
innodb_rollback_on_timeout : innodb의 마지막 구문을 롤백시킬지 결정하는 파라미터. timeout은 진행중인 transaction을 중단하고 전체 transaction을 롤백하는 과정에서 발생한다.
interactive_timeout : 활동중인 커넥션이 닫히기 전까지 서버가 대기하는 시간.
net_read_timeout : 서버가 클라이언트로부터 데이터를 읽어들이는 것을 중단하기까지 대기하는 시간.
net_write_timeout : 서버가 클라이언트에 데이터를 쓰는 것을 중단하기까지 대기하는 시간.
slave_net_timeout : 마스터/슬레이브로 서버가 클라이언트로부터 데이터를 읽어들이는 것을 중단하기까지 대기하는 시간.
table_lock_wait_timeout : 테이블 락을 중단하기까지 대기하는 시간.
wait_timeout : 활동하지 않는 커넥션을 끊을때까지 서버가 대기하는 시간 파라미터를 설정할 수 있는 방법은 두가지가 있다.
첫번째, 커맨드라인 명령어를 통해 해당 파라미터 설정하기
MariaDB [(none)]> set globnractive_timeout = [설정값]
MariaDB [(none)]> set global wait_timeout = [설정값]
MariaDB [(none)]> set session interactive_timeout = [설정값]
MariaDB [(none)]> set session wait_timeout = [설정값]
단, 첫번째 방법은 서버를 중지 후 재시작시에는 다시 원래대로 돌아간다.
두번째, my.cnf에서 설정하기
MariaDB에서는 my.cnf가 아닌 50-server.cnf에서 설정을 해줘야한다.
pi@raspberrypi :~ $ sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
[mysqld]
interactive_timeout = [설정값]
wait_timeout = [설정값]
pi@raspberrypi :~ $ sudo service mysql restart
[mysqld] 안에다가
interactive_timeout = [설정값] //31536000 으로 설정하였습니다.
wait_timeout = [설정값] //31536000 으로 설정하였습니다.
저장을하고 서버를 재시작하면 변경되어있습니다.
'⭐ AWS > RDS' 카테고리의 다른 글
Postgre RDS 생성하기 (0) | 2022.09.13 |
---|---|
AWS RDS를 DBMS로 연동하여 활용하기 (0) | 2021.04.11 |
AWS RDS 타입 및 용량변경 (0) | 2021.03.22 |
AWS 콘솔에서 AWS MySQL RDS 인스턴스의 기본 MySQL 파라미터 값을 확인하는 방법 (0) | 2021.01.13 |
AWS - Ubuntu 서버에 MySQL 연동하기 (0) | 2020.11.01 |