본문 바로가기
다른 DBMS/MySQL&MariaDB

변수를 적용하는 새로운 방법 - SET PERSIST

by 취미툰 2023. 10. 18.
반응형

*해당 테스트는 Windows의 Mysql 8.0.34로 수행하였습니다.*

 

변수를 적용할때 CMD창에서 명령어로만 적용을하면 my.cnf 파일에 적용되지 않았습니다. 그래서 재기동시 my.cnf의 변수들이 적용되어 적용한 변수들이 reset 되었었습니다. 이걸 해결하기 위해서 mysql 8.0버전부터 set persist기능이 추가되었습니다.

해당 명령어를 사용해서 CMD에서 변수 적용시 자동으로 파일에 적용까지 시켜주는 명령어입니다.

persist_only는 현재 기동중인 시스템에서는 적용하지 않고, 파일에만 적용시켜 재기동 후에 적용되게 할때 쓰는 명령어입니다.

show global variables like '%max_connections%';
#max_connections	151

set persist max_connections=1000;

show global variables like '%max_connections%';
#max_connections	1000

set persist_only max_connections=2000;

show global variables like '%max_connections%';
#max_connections	1000


##재기동 후 
show global variables like '%max_connections%';

#max_connections	2000

보면 재기동하고나서는 원래의 개수인 151개로 돌아와야 하지만 persist only로 2000을 설정하였고, 재기동 후에 2000으로 설정된 것을 확인할 수 있습니다.

 

실제로 파일에 쓰여졌는지 확인해보겠습니다.

윈도우의 경우에는 my.ini 파일을 찾는게 다른 곳에 저장이 되어있네요.

저의 경우에는 경로가 다음과 같습니다. 

C:\ProgramData\MySQL\MySQL Server 8.0

 

출처 :

https://velog.io/@jskim/MySQL-%EC%84%A4%EC%A0%95-%ED%8C%8C%EC%9D%BC-my.ini-%EB%98%90%EB%8A%94-my.cnf-%EC%B0%BE%EA%B8%B0

 

MySQL 설정 파일 my.ini 또는 my.cnf 찾기

MySQL 설정 파일은 OS마다 이름이 다르다.Mac 또는 Linux의 경우 my.cnfWindows의 경우 my.ini.cnf 파일은 아래 경로 중에 보일 것이다. /etc/my.cnf/etc/mysql/my.cnf/usr/local/mysql/etc/my.cnf~/

velog.io

 

파일 확인결과, 151로 변경전으로 되어있습니다. 어떻게 된것일까요.

파일도 오늘날짜가 아니라 9월26일이 마지막수정시간으로 되어 있습니다.

 

답은,

set persist로 수정된 변수들은 새로운 파일들로 관리된다는 것입니다. mysqld-auto.cnf 의 이름으로 생성되어 관리됩니다.

json형식이고 열어보면 아래와같은 내용이 있습니다.

{"Version": 2, "mysql_dynamic_parse_early_variables": 
{"max_connections": 
	{"Value": "2000", "Metadata": 
    	{"Host": "localhost", "User": "root", "Timestamp": 1697616729206655}}}}

mysql 서버가 다시 시작될 때 기본설정파일(my.ini)뿐 아니라 myslqd-auto.cnf파일을 같이 참조합니다.

 

Windows의 파일 위치에 대해서 나와있는 표. 마지막에 보면 mysqld-auto.cnf의 위치가 나와있습니다.

출처 : https://dev.mysql.com/doc/refman/8.0/en/option-files.html

 

MySQL :: MySQL 8.0 Reference Manual :: 4.2.2.2 Using Option Files

4.2.2.2 Using Option Files Most MySQL programs can read startup options from option files (sometimes called configuration files). Option files provide a convenient way to specify commonly used options so that they need not be entered on the command line e

dev.mysql.com

 

해당 설정을 돌려놓는 명령어는 reset persist입니다.

특정 변수만 넣어서 특정변수만 reset할수도 있고, persist 된 모든 변수를 reset 할수도 있습니다.

reset 했지만 여전히 2000입니다. 재기동을 해서 확인해보겠습니다. 재기동하면 my.ini에 설정된 151로 원복되었습니다.

reset persist max_connections;
show global variables like '%max_connections%';

#max_connections	2000

##재기동 후 
show global variables like '%max_connections%';

#max_connections	151

mysqld-auto.cnf내용입니다. 내용이 사라졌습니다.

{"Version": 2}

 

출처 : real Mysql 8.0

반응형

댓글